{"openapi":"3.1.0","info":{"title":"BentCrypto Agent API","version":"1.4.0","description":"Pay-per-call Token Risk, Solana Token Security, Token Preflight and Base Exit Simulation using x402 and enabled Base MPP routes. Coverage and prices are product-specific. Exit Simulation adds Base route/liquidity and sellability evidence without executing a trade.","contact":{"name":"BentCrypto","url":"https://bentcrypto.com","email":"bent@bentcrypto.com"},"x-guidance":"BentCrypto is a keyless pay-per-request API. Start with the free Token Risk preflight, then call a paid route without payment credentials to receive the authoritative runtime 402 challenge. Token Risk supports Solana and Base; Token Security supports Solana only. Never transmit wallet private keys or seed phrases."},"servers":[{"url":"https://api.bentcrypto.com"}],"x-discovery":{"x402":"https://api.bentcrypto.com/.well-known/x402","x402Catalog":"https://api.bentcrypto.com/x402.json","mppTokenRiskCanary":"https://api.bentcrypto.com/mpp/v1/token/risk","llms":"https://api.bentcrypto.com/llms.txt","skill":"https://api.bentcrypto.com/skill.md","pricing":"https://api.bentcrypto.com/pricing","tokenRiskPreflight":"https://api.bentcrypto.com/v1/token/risk/preflight","tokenPreflight":"https://api.bentcrypto.com/v1/token/preflight","mppTokenPreflight":"https://api.bentcrypto.com/mpp/v1/token/preflight","baseSettlementCompatibility":"https://api.bentcrypto.com/v1/token/risk/base","xrplSettlementCompatibility":"https://api.bentcrypto.com/v1/token/risk/xrpl","tokenExitSimulation":"https://api.bentcrypto.com/v1/token/exit-simulation","mppTokenExitSimulation":"https://api.bentcrypto.com/mpp/v1/token/exit-simulation","token_riskXrplTestnet":"https://api.bentcrypto.com/v1/token/risk/xrpl","token_securityXrplTestnet":"https://api.bentcrypto.com/v1/token/security/xrpl","token_preflightXrplTestnet":"https://api.bentcrypto.com/v1/token/preflight/xrpl","token_exit_simulationXrplTestnet":"https://api.bentcrypto.com/v1/token/exit-simulation/xrpl"},"paths":{"/v1/token/risk":{"get":{"operationId":"getTokenRisk","summary":"Check token risk before a trade or swap","description":"Pre-trade token risk analysis for AI agents and automated trading systems. Scores Solana and Base tokens using on-chain and market evidence, including holder concentration, liquidity and authority/risk signals. Use before a swap, trade, listing, or portfolio action when an agent needs machine-readable token risk intelligence.","parameters":[{"name":"chain","in":"query","required":false,"schema":{"type":"string","enum":["solana","base"],"default":"solana","example":"base"},"description":"Analysis chain. Defaults to solana when omitted.","example":"base"},{"name":"address","in":"query","required":true,"schema":{"type":"string","example":"0x4200000000000000000000000000000000000006"},"description":"Token mint or contract address for the selected chain.","example":"0x4200000000000000000000000000000000000006"}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","eip155:8453"],"guidance":"Runtime HTTP 402 Payment-Required is authoritative for network, asset, amount, receiver, and timeout.","protocols":[{"x402":{}}]},"x-agent-flow":{"protocol":"x402","steps":["GET the paid endpoint without Payment-Signature.","On HTTP 402, decode Payment-Required and inspect accepts.","Choose a supported scheme/network within the agent spend policy.","Create the payment authorization with local wallet signing material.","Retry the exact same request with Payment-Signature.","On HTTP 200, consume JSON and retain Payment-Response/transaction evidence if needed."],"safety":"Never transmit wallet private keys or seed phrases to BentCrypto. Signing happens in the buyer client."},"responses":{"200":{"description":"Token risk analysis result.","headers":{"Payment-Response":{"description":"x402 settlement response when payment was required and settled.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Paid token-risk analysis result. Exact evidence fields depend on chain and provider coverage.","properties":{"success":{"type":"boolean","description":"Whether the analysis request completed successfully."},"chain":{"type":"string","enum":["solana","base"],"description":"Blockchain analyzed."},"address":{"type":"string","description":"Token mint or contract address analyzed."},"risk":{"type":"object","description":"Risk assessment generated from available evidence.","properties":{"score":{"type":"number","description":"Normalized risk score when available."},"level":{"type":"string","description":"Machine-readable risk level when available."}},"additionalProperties":true},"confidence":{"type":"object","description":"Evidence confidence and coverage information.","properties":{"coverage_percent":{"type":"number","minimum":0,"maximum":100,"description":"Percentage of expected evidence covered when available."}},"additionalProperties":true},"metadata":{"type":"object","description":"Analysis provenance and execution metadata.","additionalProperties":true}},"additionalProperties":true}}}},"400":{"description":"Invalid chain or token address."},"402":{"description":"x402 payment required. Decode the Payment-Required header, choose a supported requirement, sign locally, and retry the same request with Payment-Signature.","headers":{"Payment-Required":{"required":true,"description":"Base64-encoded x402 v2 PaymentRequired challenge. This runtime challenge is authoritative.","schema":{"type":"string"}}}},"502":{"description":"Private analysis engine unavailable."},"504":{"description":"Private analysis engine timed out."}},"x-discovery-example-url":"https://api.bentcrypto.com/v1/token/risk?chain=base&address=0x4200000000000000000000000000000000000006","x-free-preflight":"https://api.bentcrypto.com/v1/token/risk/preflight?chain=base&address=0x4200000000000000000000000000000000000006","tags":["Token Risk","x402","Base","Solana","Pre-trade"]}},"/v1/token/security":{"get":{"operationId":"getTokenSecurity","summary":"Check Solana token security before trading","description":"Solana token security analysis for AI agents. Inspect mint authority, freeze authority, Token-2022 extensions and related control risks before trading or interacting with a token. Use for machine-readable pre-trade security checks; Base is intentionally unsupported.","parameters":[{"name":"chain","in":"query","required":false,"schema":{"type":"string","enum":["solana"],"default":"solana","example":"solana"},"description":"Token Security supports Solana only.","example":"solana"},{"name":"address","in":"query","required":true,"schema":{"type":"string","example":"So11111111111111111111111111111111111111112"},"description":"Solana token mint address.","example":"So11111111111111111111111111111111111111112"}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"guidance":"Runtime HTTP 402 Payment-Required is authoritative for network, asset, amount, receiver, and timeout.","protocols":[{"x402":{}}]},"x-agent-flow":{"protocol":"x402","steps":["GET the paid endpoint without Payment-Signature.","On HTTP 402, decode Payment-Required and inspect accepts.","Choose a supported scheme/network within the agent spend policy.","Create the payment authorization with local wallet signing material.","Retry the exact same request with Payment-Signature.","On HTTP 200, consume JSON and retain Payment-Response/transaction evidence if needed."],"safety":"Never transmit wallet private keys or seed phrases to BentCrypto. Signing happens in the buyer client."},"responses":{"200":{"description":"Solana token security analysis result.","headers":{"Payment-Response":{"description":"x402 settlement response when payment was required and settled.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Paid Solana token-security analysis result. Additional fields may be returned as the security engine evolves.","properties":{"success":{"type":"boolean","description":"Whether the security analysis completed successfully."},"chain":{"type":"string","enum":["solana"],"description":"Token Security currently supports Solana only."},"address":{"type":"string","description":"Solana token mint address analyzed."},"risk":{"type":"object","description":"Security and token-control risk findings.","additionalProperties":true},"mint_authority":{"description":"Mint-authority finding when exposed by the analysis engine."},"freeze_authority":{"description":"Freeze-authority finding when exposed by the analysis engine."},"token_2022":{"type":"object","description":"Token-2022 extension/control findings when applicable.","additionalProperties":true},"confidence":{"type":"object","description":"Evidence confidence and coverage information.","additionalProperties":true},"metadata":{"type":"object","description":"Analysis provenance and execution metadata.","additionalProperties":true}},"additionalProperties":true}}}},"400":{"description":"Invalid chain or token address."},"402":{"description":"x402 payment required. Decode the Payment-Required header, choose a supported requirement, sign locally, and retry the same request with Payment-Signature.","headers":{"Payment-Required":{"required":true,"description":"Base64-encoded x402 v2 PaymentRequired challenge. This runtime challenge is authoritative.","schema":{"type":"string"}}}},"502":{"description":"Private analysis engine unavailable."},"504":{"description":"Private analysis engine timed out."}},"x-discovery-example-url":"https://api.bentcrypto.com/v1/token/security?chain=solana&address=So11111111111111111111111111111111111111112","tags":["Token Security","x402","Solana","Token-2022","Pre-trade"]}},"/health":{"get":{"operationId":"health","summary":"Gateway health","security":[],"responses":{"200":{"description":"Gateway is running."}}}},"/ready":{"get":{"operationId":"ready","summary":"Gateway readiness and public capabilities","security":[],"responses":{"200":{"description":"Gateway dependencies are configured."},"503":{"description":"Gateway is not fully configured."}}}},"/pricing":{"get":{"operationId":"pricing","summary":"Public endpoint pricing and payment networks","security":[],"responses":{"200":{"description":"Configured public pricing hints. Runtime payment challenge remains authoritative."}}}},"/mpp/v1/token/risk":{"get":{"operationId":"getTokenRiskMppBaseCanary","summary":"Check Base token risk using MPP charge","description":"Machine Payments Protocol access to Base Token Risk analysis using EVM charge with USDC. Advertised only when MPP is fully configured.","parameters":[{"name":"chain","in":"query","required":false,"schema":{"type":"string","enum":["base"],"default":"base","example":"base"},"description":"MPP Token Risk supports Base only.","example":"base"},{"name":"address","in":"query","required":true,"schema":{"type":"string","example":"0x4200000000000000000000000000000000000006"},"description":"Base token contract address.","example":"0x4200000000000000000000000000000000000006"}],"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"guidance":"Runtime HTTP 402 WWW-Authenticate: Payment challenge is authoritative. Submit only a locally-created MPP Payment credential; never transmit wallet private material.","protocols":[{"mpp":{"method":"evm","intent":"charge","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}],"method":"evm","intent":"charge","asset":"USDC","chain":"base","network":"eip155:8453","offers":[{"method":"evm","intent":"charge","amount":"10000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}]},"x-agent-flow":{"protocol":"mpp","intent":"charge","steps":["GET the MPP Token Risk endpoint without Authorization.","On HTTP 402, parse WWW-Authenticate: Payment and inspect the challenge.","Verify Base, USDC, amount, recipient, and local spend policy before authorizing.","Create the MPP Payment credential locally without exposing private wallet material.","Retry the exact same request with Authorization: Payment <credential>.","On HTTP 200, consume JSON and retain Payment-Receipt evidence if needed."],"safety":"Never send private keys or seed phrases to BentCrypto. The private risk engine is invoked only after successful MPP payment verification."},"responses":{"200":{"description":"Base token risk analysis result after MPP payment verification.","headers":{"Payment-Receipt":{"description":"MPP payment receipt returned after successful verification/settlement.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Paid token-risk analysis result. Exact evidence fields depend on chain and provider coverage.","properties":{"success":{"type":"boolean","description":"Whether the analysis request completed successfully."},"chain":{"type":"string","enum":["solana","base"],"description":"Blockchain analyzed."},"address":{"type":"string","description":"Token mint or contract address analyzed."},"risk":{"type":"object","description":"Risk assessment generated from available evidence.","properties":{"score":{"type":"number","description":"Normalized risk score when available."},"level":{"type":"string","description":"Machine-readable risk level when available."}},"additionalProperties":true},"confidence":{"type":"object","description":"Evidence confidence and coverage information.","properties":{"coverage_percent":{"type":"number","minimum":0,"maximum":100,"description":"Percentage of expected evidence covered when available."}},"additionalProperties":true},"metadata":{"type":"object","description":"Analysis provenance and execution metadata.","additionalProperties":true}},"additionalProperties":true}}}},"400":{"description":"Invalid Base token contract address or unsupported chain."},"402":{"description":"MPP payment required. Parse WWW-Authenticate: Payment and retry the same request with Authorization: Payment <credential>.","headers":{"WWW-Authenticate":{"required":true,"description":"MPP Payment challenge. The runtime challenge is authoritative for payment requirements.","schema":{"type":"string"}}}},"502":{"description":"MPP verification/settlement or private analysis engine unavailable."},"504":{"description":"Private analysis engine timed out after successful payment verification."}},"x-discovery-example-url":"https://api.bentcrypto.com/mpp/v1/token/risk?chain=base&address=0x4200000000000000000000000000000000000006","x-free-preflight":"https://api.bentcrypto.com/v1/token/risk/preflight?chain=base&address=0x4200000000000000000000000000000000000006","tags":["Token Risk","MPP","Base","USDC","Pre-trade"]}},"/v1/token/risk/preflight":{"get":{"operationId":"preflightTokenRisk","summary":"Validate Token Risk capability before paying","description":"Free, non-analytical capability check. Validates chain/address input and returns current price, payment protocols, payment networks, discovery links, and expected output fields without invoking the private risk engine or creating a payment authorization.","parameters":[{"name":"chain","in":"query","required":false,"description":"Analysis chain. Defaults to solana.","schema":{"type":"string","enum":["solana","base"],"default":"solana","example":"base"},"example":"base"},{"name":"address","in":"query","required":true,"description":"Token mint or contract address for the selected chain.","schema":{"type":"string","example":"0x4200000000000000000000000000000000000006"},"example":"0x4200000000000000000000000000000000000006"}],"security":[],"x-free-preflight":true,"responses":{"200":{"description":"Input is valid and current payment/capability metadata is returned. No analysis is performed and no payment is charged.","content":{"application/json":{"schema":{"type":"object","description":"Free Token Risk compatibility and pricing preflight. It never invokes private analysis or charges a payment.","properties":{"success":{"type":"boolean"},"product":{"type":"string","enum":["token_risk"]},"analysis":{"type":"object","properties":{"chain":{"type":"string","enum":["solana","base"]},"address":{"type":"string"},"supported":{"type":"boolean"},"private_analysis_performed":{"type":"boolean","enum":[false]}},"additionalProperties":true},"payment_required":{"type":"boolean","enum":[false]},"charged":{"type":"boolean","enum":[false]},"price":{"type":"object","properties":{"currency":{"type":"string","enum":["USD"]},"amount":{"type":"string","example":"0.01"}},"additionalProperties":true},"payment_options":{"type":"array","items":{"type":"object","additionalProperties":true}},"expected_output":{"type":"object","additionalProperties":true},"discovery":{"type":"object","additionalProperties":true},"next":{"type":"string"},"safety":{"type":"string"}},"additionalProperties":true}}}},"400":{"description":"Unsupported chain, missing address, or malformed address. No payment is required or charged."}},"tags":["Free Discovery","Token Risk","Preflight"]}},"/v1/token/preflight":{"get":{"operationId":"getTokenPreflight","summary":"Run a composed token preflight before execution","description":"Composes BentCrypto token-risk, token-security, liquidity and holder evidence into one conservative machine-readable technical preflight. Sellability remains NOT_TESTED until the dedicated exit-simulation product performs a real execution-path check.","parameters":[{"name":"chain","in":"query","required":false,"schema":{"type":"string","enum":["solana","base"],"default":"solana"},"description":"Analysis chain. Defaults to solana when omitted."},{"name":"address","in":"query","required":true,"schema":{"type":"string","example":"So11111111111111111111111111111111111111112"},"description":"Token mint or contract address for the selected analysis chain."}],"security":[{"x402":[]}],"x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"pricingMode":"fixed","currency":"USD","amount":"0.05","networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","eip155:8453"],"networkPrices":{"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp":"0.05","eip155:8453":"0.05"},"asset":"USDC","guidance":"Runtime HTTP 402 Payment-Required is authoritative for network, asset, amount, receiver, and timeout."},"responses":{"200":{"description":"Composed Token Preflight result."},"400":{"description":"Invalid chain or token address; invalid input is rejected before payment."},"402":{"description":"x402 payment required."},"502":{"description":"Private preflight engine unavailable."},"504":{"description":"Private preflight engine timed out."}}}},"/mpp/v1/token/preflight":{"get":{"operationId":"getTokenPreflightMppBase","summary":"Run Base Token Preflight using MPP charge","description":"MPP EVM charge route for the same BentCrypto Base Token Preflight intelligence product. Private analysis executes only after successful MPP payment verification.","parameters":[{"name":"chain","in":"query","required":false,"schema":{"type":"string","enum":["base"],"default":"base"},"description":"MPP Token Preflight currently supports Base only."},{"name":"address","in":"query","required":true,"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","example":"0x4200000000000000000000000000000000000006"},"description":"Base token contract address."}],"security":[{"mppPayment":[]}],"x-payment-info":{"protocols":["mpp"],"intent":"charge","method":"evm","asset":"USDC","chain":"base","network":"eip155:8453","price":{"mode":"fixed","currency":"USD","amount":"0.05"},"pricingMode":"fixed","currency":"USD","amount":"0.05","guidance":"Runtime HTTP 402 WWW-Authenticate: Payment challenge is authoritative. Sign locally and never transmit private wallet material."},"responses":{"200":{"description":"Base Token Preflight result after MPP payment verification."},"400":{"description":"Invalid Base token contract address or unsupported chain."},"402":{"description":"MPP payment required."},"502":{"description":"MPP verification/settlement or private preflight engine unavailable."},"504":{"description":"Private preflight engine timed out after successful payment verification."}}}},"/v1/token/risk/base":{"get":{"operationId":"getTokenRiskBaseX402","summary":"Check Base token risk with deterministic Base USDC x402 settlement","description":"Base-only settlement compatibility route for buyers that require a single EVM payment option. Analysis is fixed to Base and the runtime 402 advertises exactly one x402 v2 exact USDC requirement on eip155:8453.","parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","example":"0x4200000000000000000000000000000000000006"},"description":"Base ERC-20 token contract address."}],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"networks":["eip155:8453"],"asset":"USDC","assetAddress":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","selection":"Single-network compatibility route; runtime Payment-Required is authoritative."},"x-agent-flow":{"protocol":"x402","steps":["GET the paid endpoint without Payment-Signature.","On HTTP 402, decode Payment-Required and inspect accepts.","Choose a supported scheme/network within the agent spend policy.","Create the payment authorization with local wallet signing material.","Retry the exact same request with Payment-Signature.","On HTTP 200, consume JSON and retain Payment-Response/transaction evidence if needed."],"safety":"Never transmit wallet private keys or seed phrases to BentCrypto. Signing happens in the buyer client."},"responses":{"200":{"description":"Token risk analysis result.","headers":{"Payment-Response":{"description":"x402 settlement response when payment was required and settled.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"type":"object","description":"Paid token-risk analysis result. Exact evidence fields depend on chain and provider coverage.","properties":{"success":{"type":"boolean","description":"Whether the analysis request completed successfully."},"chain":{"type":"string","enum":["solana","base"],"description":"Blockchain analyzed."},"address":{"type":"string","description":"Token mint or contract address analyzed."},"risk":{"type":"object","description":"Risk assessment generated from available evidence.","properties":{"score":{"type":"number","description":"Normalized risk score when available."},"level":{"type":"string","description":"Machine-readable risk level when available."}},"additionalProperties":true},"confidence":{"type":"object","description":"Evidence confidence and coverage information.","properties":{"coverage_percent":{"type":"number","minimum":0,"maximum":100,"description":"Percentage of expected evidence covered when available."}},"additionalProperties":true},"metadata":{"type":"object","description":"Analysis provenance and execution metadata.","additionalProperties":true}},"additionalProperties":true}}}},"400":{"description":"Invalid chain or token address."},"402":{"description":"x402 payment required. Decode the Payment-Required header, choose a supported requirement, sign locally, and retry the same request with Payment-Signature.","headers":{"Payment-Required":{"required":true,"description":"Base64-encoded x402 v2 PaymentRequired challenge. This runtime challenge is authoritative.","schema":{"type":"string"}}}},"502":{"description":"Private analysis engine unavailable."},"504":{"description":"Private analysis engine timed out."}},"x-discovery-example-url":"https://api.bentcrypto.com/v1/token/risk?chain=base&address=0x4200000000000000000000000000000000000006","x-free-preflight":"https://api.bentcrypto.com/v1/token/risk/preflight?chain=base&address=0x4200000000000000000000000000000000000006","tags":["Token Risk","x402","Base","Solana","Pre-trade"],"x-settlement-compatibility":{"purpose":"avoid mixed-network payment-selector ambiguity","network":"eip155:8453","scheme":"exact","asset":"USDC","assetAddress":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","singlePaymentOption":true}}},"/v1/token/risk/xrpl":{"get":{"operationId":"getTokenRiskXrplX402","summary":"Token Risk with XRPL Testnet XRP/RLUSD x402 settlement","description":"Dedicated XRPL Testnet settlement compatibility route. Product analysis semantics remain unchanged and independent of the selected XRP or RLUSD payment asset.","parameters":[{"name":"chain","in":"query","required":false,"schema":{"type":"string","enum":["solana","base"],"default":"solana"},"description":"Analysis chain. XRPL is the payment rail only."},{"name":"address","in":"query","required":true,"schema":{"type":"string","example":"So11111111111111111111111111111111111111112"},"description":"Token address on the selected analysis chain."}],"security":[{"x402":[]}],"x-payment-info":{"protocols":["x402"],"pricingMode":"multi_asset","asset":"XRP","amountDrops":"1000","assets":["XRP","RLUSD"],"paymentOptions":[{"asset":"XRP","assetCode":"XRP","amount":"1000","amountDrops":"1000"},{"asset":"RLUSD","assetCode":"524C555344000000000000000000000000000000","amount":"0.01","issuer":"rQhWct2fv4Vc4KRjRgMrxa8xPN9Zx9iLKV"}],"networks":["xrpl:1"],"selection":"Runtime Payment-Required is authoritative; XRP remains the first option and RLUSD is offered when enabled."},"responses":{"200":{"description":"Token Risk result after XRPL Testnet settlement."},"400":{"description":"Invalid product input or consumed/unknown XRPL invoice."},"402":{"description":"XRPL Testnet x402 payment required."},"502":{"description":"Settlement facilitator or private analysis engine unavailable."},"504":{"description":"Private analysis engine timed out after successful settlement."}}}},"/v1/token/exit-simulation":{"get":{"operationId":"getTokenExitSimulation","summary":"Simulate a Base token exit before execution","description":"Paid non-custodial exit simulation for Base ERC-20 tokens. Returns observed route availability, expected output, estimated price impact, gas, route sources and sellability status without executing a trade.","parameters":[{"name":"chain","in":"query","required":false,"schema":{"type":"string","enum":["base"],"default":"base"},"description":"Exit Simulation v1 supports Base only."},{"name":"address","in":"query","required":true,"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"description":"Base ERC-20 token contract address."},{"name":"sell_usd","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0,"maximum":100000},"description":"Requested exit size in USD."}],"security":[{"x402":[]}],"x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.03"},"pricingMode":"fixed","currency":"USD","amount":"0.03","networks":["eip155:8453"],"guidance":"Runtime HTTP 402 Payment-Required is authoritative for receiver, asset, amount, network and timeout."},"responses":{"200":{"description":"Exit Simulation result after x402 settlement."},"400":{"description":"Invalid Base address or sell_usd; rejected before payment."},"402":{"description":"x402 payment required."},"502":{"description":"Private Exit Simulation engine unavailable."},"504":{"description":"Private Exit Simulation engine timed out."}}}},"/mpp/v1/token/exit-simulation":{"get":{"operationId":"getTokenExitSimulationMppBase","summary":"Simulate a Base token exit using MPP charge","description":"MPP EVM charge route for BentCrypto Exit Simulation. Private simulation executes only after payment verification authorizes the request.","parameters":[{"name":"chain","in":"query","required":false,"schema":{"type":"string","enum":["base"],"default":"base"},"description":"Exit Simulation v1 supports Base only."},{"name":"address","in":"query","required":true,"schema":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"description":"Base ERC-20 token contract address."},{"name":"sell_usd","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0,"maximum":100000},"description":"Requested exit size in USD."}],"security":[{"mppPayment":[]}],"x-payment-info":{"protocols":["mpp"],"method":"evm","intent":"charge","asset":"USDC","chain":"base","network":"eip155:8453","price":{"mode":"fixed","currency":"USD","amount":"0.03"},"pricingMode":"fixed","currency":"USD","amount":"0.03","offers":[{"method":"evm","intent":"charge","amount":"30000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}]},"responses":{"200":{"description":"Exit Simulation result after MPP payment verification."},"400":{"description":"Invalid Base address or sell_usd; rejected before payment."},"402":{"description":"MPP payment required."},"502":{"description":"MPP verification/settlement or private engine unavailable."},"504":{"description":"Private Exit Simulation engine timed out after payment verification."}}}},"/v1/token/security/xrpl":{"get":{"operationId":"getTokenSecurityXrplX402","summary":"Token Security with XRPL Testnet XRP/RLUSD x402 settlement","description":"Dedicated XRPL Testnet settlement compatibility route. Product analysis semantics remain unchanged and independent of the selected XRP or RLUSD payment asset.","parameters":[{"name":"chain","in":"query","required":false,"schema":{"type":"string","enum":["solana"],"default":"solana"},"description":"Analysis chain. XRPL is the payment rail only."},{"name":"address","in":"query","required":true,"schema":{"type":"string","example":"So11111111111111111111111111111111111111112"},"description":"Token address on the selected analysis chain."}],"security":[{"x402":[]}],"x-payment-info":{"protocols":["x402"],"pricingMode":"multi_asset","asset":"XRP","amountDrops":"1000","assets":["XRP","RLUSD"],"paymentOptions":[{"asset":"XRP","assetCode":"XRP","amount":"1000","amountDrops":"1000"},{"asset":"RLUSD","assetCode":"524C555344000000000000000000000000000000","amount":"0.01","issuer":"rQhWct2fv4Vc4KRjRgMrxa8xPN9Zx9iLKV"}],"networks":["xrpl:1"],"selection":"Runtime Payment-Required is authoritative; XRP remains the first option and RLUSD is offered when enabled."},"responses":{"200":{"description":"Token Security result after XRPL Testnet settlement."},"400":{"description":"Invalid product input or consumed/unknown XRPL invoice."},"402":{"description":"XRPL Testnet x402 payment required."},"502":{"description":"Settlement facilitator or private analysis engine unavailable."},"504":{"description":"Private analysis engine timed out after successful settlement."}}}},"/v1/token/preflight/xrpl":{"get":{"operationId":"getTokenPreflightXrplX402","summary":"Token Preflight with XRPL Testnet XRP/RLUSD x402 settlement","description":"Dedicated XRPL Testnet settlement compatibility route. Product analysis semantics remain unchanged and independent of the selected XRP or RLUSD payment asset.","parameters":[{"name":"chain","in":"query","required":false,"schema":{"type":"string","enum":["solana","base"],"default":"solana"},"description":"Analysis chain. XRPL is the payment rail only."},{"name":"address","in":"query","required":true,"schema":{"type":"string","example":"So11111111111111111111111111111111111111112"},"description":"Token address on the selected analysis chain."}],"security":[{"x402":[]}],"x-payment-info":{"protocols":["x402"],"pricingMode":"multi_asset","asset":"XRP","amountDrops":"1000","assets":["XRP","RLUSD"],"paymentOptions":[{"asset":"XRP","assetCode":"XRP","amount":"1000","amountDrops":"1000"},{"asset":"RLUSD","assetCode":"524C555344000000000000000000000000000000","amount":"0.05","issuer":"rQhWct2fv4Vc4KRjRgMrxa8xPN9Zx9iLKV"}],"networks":["xrpl:1"],"selection":"Runtime Payment-Required is authoritative; XRP remains the first option and RLUSD is offered when enabled."},"responses":{"200":{"description":"Token Preflight result after XRPL Testnet settlement."},"400":{"description":"Invalid product input or consumed/unknown XRPL invoice."},"402":{"description":"XRPL Testnet x402 payment required."},"502":{"description":"Settlement facilitator or private analysis engine unavailable."},"504":{"description":"Private analysis engine timed out after successful settlement."}}}},"/v1/token/exit-simulation/xrpl":{"get":{"operationId":"getExitSimulationXrplX402","summary":"Exit Simulation with XRPL Testnet XRP/RLUSD x402 settlement","description":"Dedicated XRPL Testnet settlement compatibility route. Product analysis semantics remain unchanged and independent of the selected XRP or RLUSD payment asset.","parameters":[{"name":"chain","in":"query","required":false,"schema":{"type":"string","enum":["base"],"default":"base"},"description":"Analysis chain. XRPL is the payment rail only."},{"name":"address","in":"query","required":true,"schema":{"type":"string","example":"0x4200000000000000000000000000000000000006"},"description":"Token address on the selected analysis chain."},{"name":"sell_usd","in":"query","required":true,"schema":{"type":"number","exclusiveMinimum":0,"example":1000},"description":"Requested Base token exit size in USD."}],"security":[{"x402":[]}],"x-payment-info":{"protocols":["x402"],"pricingMode":"multi_asset","asset":"XRP","amountDrops":"1000","assets":["XRP","RLUSD"],"paymentOptions":[{"asset":"XRP","assetCode":"XRP","amount":"1000","amountDrops":"1000"},{"asset":"RLUSD","assetCode":"524C555344000000000000000000000000000000","amount":"0.03","issuer":"rQhWct2fv4Vc4KRjRgMrxa8xPN9Zx9iLKV"}],"networks":["xrpl:1"],"selection":"Runtime Payment-Required is authoritative; XRP remains the first option and RLUSD is offered when enabled."},"responses":{"200":{"description":"Exit Simulation result after XRPL Testnet settlement."},"400":{"description":"Invalid product input or consumed/unknown XRPL invoice."},"402":{"description":"XRPL Testnet x402 payment required."},"502":{"description":"Settlement facilitator or private analysis engine unavailable."},"504":{"description":"Private analysis engine timed out after successful settlement."}}}}},"components":{"securitySchemes":{"x402":{"type":"apiKey","in":"header","name":"Payment-Signature","description":"x402 v2 payment authorization. Omit this header to receive the authoritative 402 challenge."},"mppPayment":{"type":"apiKey","in":"header","name":"Authorization","description":"MPP payment credential using the HTTP Payment authentication scheme. Omit it to receive WWW-Authenticate: Payment."}}},"x-xrpl-testnet":{"environment":"testnet","network":"xrpl:1","assets":[{"asset":"XRP","assetCode":"XRP","amountUnit":"drops"},{"asset":"RLUSD","assetCode":"524C555344000000000000000000000000000000","issuer":"rQhWct2fv4Vc4KRjRgMrxa8xPN9Zx9iLKV"}],"routes":{"token_risk":"https://api.bentcrypto.com/v1/token/risk/xrpl","token_security":"https://api.bentcrypto.com/v1/token/security/xrpl","token_preflight":"https://api.bentcrypto.com/v1/token/preflight/xrpl","token_exit_simulation":"https://api.bentcrypto.com/v1/token/exit-simulation/xrpl"},"runtimeChallengeAuthoritative":true,"mainnetEnabled":false}}