{"openapi":"3.1.0","info":{"title":"BentCrypto Agent API","version":"1.3.0","description":"Pay-per-call token intelligence for autonomous agents using x402 plus a gated Base MPP Token Risk charge canary. Token Risk supports Solana and Base; Token Security supports Solana only.","contact":{"name":"BentCrypto","url":"https://bentcrypto.com"},"x-guidance":"Use the payment flow declared on the selected route. Runtime HTTP 402 challenges are authoritative; never transmit private wallet material."},"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"},"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"}],"security":[{"x402":[]}],"x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"pricingMode":"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."},"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"}}}},"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"}},"/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"}],"security":[{"x402":[]}],"x-payment-info":{"protocols":["x402"],"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"pricingMode":"fixed","currency":"USD","amount":"0.01","networks":["solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp"],"guidance":"Runtime HTTP 402 Payment-Required is authoritative for network, asset, amount, receiver, and timeout."},"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"}}}},"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"}},"/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 canary for the same Base Token Risk analysis. This route uses MPP EVM charge with USDC on Base and is advertised only when the production MPP canary is fully enabled.","parameters":[{"name":"chain","in":"query","required":false,"schema":{"type":"string","enum":["base"],"default":"base","example":"base"},"description":"MPP Token Risk canary supports Base only.","example":"base"},{"name":"address","in":"query","required":true,"schema":{"type":"string","example":"0x4200000000000000000000000000000000000006"},"description":"Base token contract address.","example":"0x4200000000000000000000000000000000000006"}],"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.01"},"pricingMode":"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."},"x-agent-flow":{"protocol":"mpp","intent":"charge","steps":["GET the MPP canary 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"}}}},"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"}},"/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."},"400":{"description":"Unsupported chain, missing address, or malformed address. No payment is required or charged."}}}}},"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."}}}}