{"openapi":"3.1.0","info":{"title":"Kestrel API","version":"1.0.0","description":"Honeypot & rug scanner for Robinhood Chain (chain id 4663). Simulates a real buy/sell, x-rays the token contract (proxy-aware: blacklist / mint / pause / tax), and checks holders, wash-trading, and the project site. Not financial advice."},"servers":[{"url":"https://hoodscope-indol.vercel.app","description":"production"}],"paths":{"/api/analyze":{"post":{"summary":"Scan a token","description":"Accepts a token address, Dexscreener/Uniswap URL, or free text containing an address, resolves it to a Robinhood-chain token, and returns a full risk report. Rate limit: 20 requests/min/IP.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["input"],"properties":{"input":{"type":"string","maxLength":400,"description":"0x address, dexscreener.com/robinhood/… URL, or text with an address.","example":"0x4af4b5794314eee48d5c9a23726593ba3251f174"}}}}}},"responses":{"200":{"description":"Analysis report","content":{"application/json":{"schema":{"type":"object","properties":{"report":{"$ref":"#/components/schemas/AnalysisReport"}}}}}},"400":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"}}}},"/api/chat":{"post":{"summary":"Ask a follow-up question about a scanned token","description":"Server re-loads the token's report itself and answers via Azure OpenAI (GPT) with Claude fallback. Token metadata is treated as untrusted data; the API key never enters the model context. Rate limit: 15 requests/min/IP.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["token","question"],"properties":{"token":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"Token contract address."},"question":{"type":"string","maxLength":500,"example":"Can I sell this token?"},"history":{"type":"array","maxItems":6,"items":{"type":"object","properties":{"role":{"type":"string","enum":["user","assistant"]},"content":{"type":"string"}}}}}}}}},"responses":{"200":{"description":"Answer","content":{"application/json":{"schema":{"type":"object","properties":{"answer":{"type":"string"}}}}}},"400":{"$ref":"#/components/responses/Error"},"404":{"$ref":"#/components/responses/Error"},"429":{"$ref":"#/components/responses/Error"},"502":{"$ref":"#/components/responses/Error"},"503":{"$ref":"#/components/responses/Error"}}}},"/api/openapi":{"get":{"summary":"This OpenAPI document","responses":{"200":{"description":"OpenAPI 3.1 spec"}}}}},"components":{"responses":{"Error":{"description":"Error","content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string"}}}}}}},"schemas":{"Verdict":{"type":"string","enum":["SCAM / HONEYPOT","DO NOT BUY","CAUTION","LOOKS CLEAN"]},"Pool":{"type":"object","properties":{"pair":{"type":"string"},"dex":{"type":"string"},"labels":{"type":"array","items":{"type":"string"},"description":"e.g. [\"v2\"], [\"v3\"], [\"v4\"]"},"liquidityUsd":{"type":"number"},"hook":{"type":"string","nullable":true},"hookVerified":{"type":"boolean","nullable":true},"hookPermissions":{"type":"array","items":{"type":"string"}},"buyOk":{"type":"boolean","nullable":true},"sellOk":{"type":"boolean","nullable":true},"independentSellers":{"type":"integer","nullable":true}}},"AnalysisReport":{"type":"object","properties":{"token":{"type":"string"},"name":{"type":"string","nullable":true},"symbol":{"type":"string","nullable":true},"verdict":{"$ref":"#/components/schemas/Verdict"},"riskScore":{"type":"integer","minimum":0,"maximum":100,"description":"Higher = riskier."},"sellable":{"type":"boolean","nullable":true,"description":"Can the main pool be sold into?"},"contractVerified":{"type":"boolean"},"proxy":{"type":"boolean"},"implementation":{"type":"string","nullable":true,"description":"Impl address if the token is a proxy."},"ownerCapabilities":{"type":"array","items":{"type":"string"},"description":"e.g. blacklist, mint, pause_trading, modify_fees, max_limits."},"onchainTaxes":{"type":"object","nullable":true,"properties":{"buyPct":{"type":"number"},"sellPct":{"type":"number"}}},"holdersCount":{"type":"integer"},"top10WalletPct":{"type":"number","nullable":true},"pools":{"type":"array","items":{"$ref":"#/components/schemas/Pool"}},"wash":{"type":"object","nullable":true,"properties":{"sampled":{"type":"integer"},"clustered":{"type":"integer"},"washSuspect":{"type":"boolean"},"funder":{"type":"string","nullable":true}}},"website":{"type":"object","nullable":true,"properties":{"url":{"type":"string"},"reachable":{"type":"boolean"},"title":{"type":"string","nullable":true},"domainAgeDays":{"type":"integer","nullable":true},"drainerKeywords":{"type":"array","items":{"type":"string"}}}},"redFlags":{"type":"array","items":{"type":"string"}},"yellowFlags":{"type":"array","items":{"type":"string"}},"positives":{"type":"array","items":{"type":"string"}},"sentiment":{"type":"object","properties":{"score":{"type":"integer"},"label":{"type":"string"},"reasons":{"type":"array","items":{"type":"string"}},"stale":{"type":"boolean","description":"True if older than the 15-min freshness window."},"computedAt":{"type":"integer","description":"epoch ms"}}},"fromCache":{"type":"boolean"}}}}}}