{"openapi":"3.1.0","info":{"title":"Canisell","version":"0.1.0","description":"Pre-trade risk verdict for a Base ERC-20 (built for brand-new Clanker/Zora/Uniswap v4 launches): simulated buy+sell (honeypot, taxes, round-trip loss), owner powers (mint/blacklist/pause/fee setters, upgradeable proxy), exit liquidity and LP lock, token age and creator history. Returns SAFE/CAUTION/DANGER, a 0-100 score and reasons.\n\nAutomated on-chain risk signals for Base, not financial advice. A SAFE verdict means no mechanical trap was detected, not that the price will hold."},"servers":[{"url":"https://api.canisell.xyz"}],"paths":{"/v1/verdict/{address}":{"get":{"operationId":"getVerdict","summary":"Risk verdict for one Base ERC-20 token","description":"Pre-trade risk verdict for a Base ERC-20 (built for brand-new Clanker/Zora/Uniswap v4 launches): simulated buy+sell (honeypot, taxes, round-trip loss), owner powers (mint/blacklist/pause/fee setters, upgradeable proxy), exit liquidity and LP lock, token age and creator history. Returns SAFE/CAUTION/DANGER, a 0-100 score and reasons.","parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"ERC-20 token contract address on Base mainnet (chain id 8453)","example":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"}}],"responses":{"200":{"description":"Verdict","content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"ERC-20 token contract address on Base mainnet (chain id 8453)","example":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"chain":{"type":"string","const":"base"},"verdict":{"type":"string","enum":["SAFE","CAUTION","DANGER"]},"score":{"type":"integer","minimum":0,"maximum":100,"description":"100 = no risk signals"},"summary":{"type":"string","description":"One-line plain-English verdict"},"reasons":{"type":"array","items":{"type":"string"},"description":"Most severe first"},"findings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"severity":{"type":"string","enum":["critical","high","medium","low","info"]},"penalty":{"type":"number"},"message":{"type":"string"}}}},"token":{"type":"object","properties":{"name":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"integer"},"totalSupply":{"type":"string"}}},"launchpad":{"type":["string","null"],"description":"clanker | zora | null"},"flags":{"type":"object","properties":{"trading":{"type":"object","description":"Simulated buy then sell via eth_call with state overrides","properties":{"canBuy":{"type":"boolean"},"canSell":{"type":"boolean"},"buyTaxPct":{"type":"number"},"sellTaxPct":{"type":"number"},"roundTripLossPct":{"type":"number"},"poolKind":{"type":"string"}}},"ownership":{"type":"object","properties":{"owner":{"type":["string","null"]},"renounced":{"type":"boolean"},"capabilities":{"type":"object","description":"mint/blacklist/pause/feeSetter/tradingToggle/limitSetter -> matched signatures"},"proxy":{"type":"object","properties":{"kind":{"type":"string"},"implementation":{"type":"string"}}}}},"liquidity":{"type":"object","properties":{"totalDepthUsd":{"type":["number","null"]},"pools":{"type":"array","items":{"type":"object"}}}},"creator":{"type":"object"},"age":{"type":"object","properties":{"ageSeconds":{"type":"number"},"createdBlock":{"type":"number"}}}}},"meta":{"type":"object"}},"required":["address","verdict","score","summary","reasons","flags"]}}}},"400":{"description":"Malformed request; payment is not settled"},"402":{"description":"Payment required (x402). Requirements are in the PAYMENT-REQUIRED header and body."},"422":{"description":"Address is not a token contract; payment is not settled"},"502":{"description":"Upstream RPC failure; payment is not settled"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"scheme":"exact","network":"eip155:8453","asset":"USDC","payTo":"0x741f78ED943C671e25405dAAaAB7b6886C7e8feb"},"security":[{"x402":[]}]}},"/v1/verdict/batch":{"post":{"operationId":"postVerdictBatch","summary":"Risk verdicts for up to 10 Base ERC-20 tokens","description":"Same verdict for up to 10 Base ERC-20 tokens in one paid call.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"addresses":{"type":"array","items":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"ERC-20 token contract address on Base mainnet (chain id 8453)","example":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"minItems":1,"maxItems":10}},"required":["addresses"]}}}},"responses":{"200":{"description":"Verdicts","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array","items":{"anyOf":[{"type":"object","properties":{"address":{"type":"string","pattern":"^0x[0-9a-fA-F]{40}$","description":"ERC-20 token contract address on Base mainnet (chain id 8453)","example":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"},"chain":{"type":"string","const":"base"},"verdict":{"type":"string","enum":["SAFE","CAUTION","DANGER"]},"score":{"type":"integer","minimum":0,"maximum":100,"description":"100 = no risk signals"},"summary":{"type":"string","description":"One-line plain-English verdict"},"reasons":{"type":"array","items":{"type":"string"},"description":"Most severe first"},"findings":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string"},"severity":{"type":"string","enum":["critical","high","medium","low","info"]},"penalty":{"type":"number"},"message":{"type":"string"}}}},"token":{"type":"object","properties":{"name":{"type":"string"},"symbol":{"type":"string"},"decimals":{"type":"integer"},"totalSupply":{"type":"string"}}},"launchpad":{"type":["string","null"],"description":"clanker | zora | null"},"flags":{"type":"object","properties":{"trading":{"type":"object","description":"Simulated buy then sell via eth_call with state overrides","properties":{"canBuy":{"type":"boolean"},"canSell":{"type":"boolean"},"buyTaxPct":{"type":"number"},"sellTaxPct":{"type":"number"},"roundTripLossPct":{"type":"number"},"poolKind":{"type":"string"}}},"ownership":{"type":"object","properties":{"owner":{"type":["string","null"]},"renounced":{"type":"boolean"},"capabilities":{"type":"object","description":"mint/blacklist/pause/feeSetter/tradingToggle/limitSetter -> matched signatures"},"proxy":{"type":"object","properties":{"kind":{"type":"string"},"implementation":{"type":"string"}}}}},"liquidity":{"type":"object","properties":{"totalDepthUsd":{"type":["number","null"]},"pools":{"type":"array","items":{"type":"object"}}}},"creator":{"type":"object"},"age":{"type":"object","properties":{"ageSeconds":{"type":"number"},"createdBlock":{"type":"number"}}}}},"meta":{"type":"object"}},"required":["address","verdict","score","summary","reasons","flags"]},{"type":"object","properties":{"address":{"type":"string"},"error":{"type":"string"}},"required":["address","error"]}]}}},"required":["results"]}}}},"400":{"description":"Malformed request; payment is not settled"},"402":{"description":"Payment required (x402). Requirements are in the PAYMENT-REQUIRED header and body."},"422":{"description":"Address is not a token contract; payment is not settled"},"502":{"description":"Upstream RPC failure; payment is not settled"}},"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"scheme":"exact","network":"eip155:8453","asset":"USDC","payTo":"0x741f78ED943C671e25405dAAaAB7b6886C7e8feb"},"security":[{"x402":[]}]}},"/v1/sample":{"get":{"operationId":"getSample","summary":"Example verdict response","description":"Cached example response in the same shape as the paid endpoint. Free.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}},"security":[]}},"/v1/health":{"get":{"operationId":"getHealth","summary":"RPC reachability","description":"Liveness and RPC reachability. Free.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}},"security":[]}},"/":{"get":{"operationId":"getRoot","summary":"Service description","description":"Service description and endpoint list. Free.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}},"security":[]}},"/openapi.json":{"get":{"operationId":"getOpenApi","summary":"OpenAPI 3.1 description","description":"This document. Free.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}},"security":[]}},"/.well-known/x402":{"get":{"operationId":"getWellKnownX402","summary":"x402 resource list","description":"x402scan discovery fan-out. Free.","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object"}}}}},"security":[]}},"/llms.txt":{"get":{"operationId":"getLlmsTxt","summary":"Plain-text description for LLMs","description":"Short plain-text description and usage. Free.","responses":{"200":{"description":"OK","content":{"text/plain":{"schema":{"type":"string"}}}}},"security":[]}},"/mcp":{"post":{"operationId":"postMcp","summary":"Remote MCP server (Streamable HTTP)","description":"Model Context Protocol endpoint, Streamable HTTP, stateless, JSON-RPC 2.0 over POST. Free tools: get_token_info, get_sample_verdict, explain_verdict_fields. check_base_token costs $0.01 USDC via the x402 MCP transport (_meta[\"x402/payment\"]); without a payment it returns the payment terms and the paid HTTP URL.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","description":"MCP JSON-RPC 2.0 request (initialize, tools/list, tools/call)"}}}},"responses":{"200":{"description":"JSON-RPC response","content":{"application/json":{"schema":{"type":"object"}}}}},"security":[]}}},"components":{"securitySchemes":{"x402":{"type":"apiKey","in":"header","name":"PAYMENT-SIGNATURE","description":"x402 payment payload (base64). Request without it to get a 402 with the payment requirements."}}}}