{"openapi":"3.1.0","info":{"title":"svm402-service","description":"Deterministic Solana token analysis API with x402 USDC payments","contact":{"name":"svm402","email":"admin@svm402.com"},"license":{"name":"MIT"},"version":"1.0.0","x-guidance":"Deterministic Solana token analysis with x402 USDC payments — no API keys, no signup, no vendor-specific install. Works with any generic x402 client (e.g. AgentCash): point it at this URL and it discovers every endpoint and price automatically. Simplest calls: GET /safety/{mint} ($0.01, is it a honeypot?), GET /organic/{mint} ($0.01, is the volume real?), POST /holdcheck ($0.01, is a token I hold still clean?), POST /analyze ($0.03, the full picture — cheaper than the parts). Payment: the 402 challenge carries the price, seller wallet, and network — the client pays USDC on Solana and retries; no manual steps. This API does NOT predict price direction and does NOT recommend tokens — it filters cheats and measures authenticity."},"paths":{"/favicon.ico":{"get":{"summary":"Favicon","description":"Serve favicon.","operationId":"favicon_favicon_ico_get","responses":{"200":{"description":"Successful Response"}},"security":[]}},"/":{"get":{"summary":"Landing Page","description":"Serve the SVM402 landing page.","operationId":"landing_page__get","responses":{"200":{"description":"Successful Response"}},"security":[]}},"/.well-known/ai-catalog.json":{"get":{"summary":"Ai Catalog","description":"Agentic Resource Discovery (ARD) catalog for agent discoverability.","operationId":"ai_catalog__well_known_ai_catalog_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/.well-known/x402":{"get":{"summary":"X402 Discovery","description":"x402 payment discovery metadata for agentic.market / x402scan.com.","operationId":"x402_discovery__well_known_x402_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/llms.txt":{"get":{"summary":"Llms Txt","description":"Serve llms.txt for agent discoverability.","operationId":"llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}},"security":[]}},"/robots.txt":{"get":{"summary":"Robots Txt","description":"Serve robots.txt for crawler guidance.","operationId":"robots_txt_robots_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}},"security":[]}},"/.well-known/endpoints.json":{"get":{"summary":"Endpoints Json","description":"Machine-readable endpoint list with prices for agent discovery.","operationId":"endpoints_json__well_known_endpoints_json_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}},"security":[]}},"/health":{"get":{"summary":"Health","description":"Free health check endpoint.","operationId":"health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}},"security":[]}},"/discover":{"post":{"summary":"Discover Tokens","description":"Discover organic Solana tokens — filtered to exclude wash trading. ($0.01 USDC)\n\nReturns tokens ranked by genuine organic activity, not manipulated volume.\nData is pre-computed hourly from Jupiter v2 API and cached.\n\nNOT endorsements: results are not recommendations to buy — they surface\ndemand authenticity only. Every discovered token still requires\nindependent analysis (/safety, /analyze) before any decision.","operationId":"discover_tokens_discover_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/DiscoverRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"402":{"description":"Payment Required — send the specified USDC amount via x402 to the seller wallet on Solana, include the transaction signature in the X-Payment header, and retry the request.","headers":{"WWW-Authenticate":{"description":"x402 payment scheme identifier","schema":{"type":"string","example":"X402"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"payment_required"},"accepts":{"type":"array","items":{"type":"object"},"description":"Accepted payment requirements"},"payment_request_url":{"type":"string"},"instructions":{"type":"string"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"x-extensions":{"bazaar":{"info":{"input":{"type":"http","method":"POST","bodyType":"json","body":{"limit":10}},"output":{"type":"json","example":{"tokens":[{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","name":"Bonk","organic_score":86.7}],"cache_built_at":"2026-08-05T08:00:00Z"}}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["POST"]},"bodyType":{"type":"string","enum":["json"]},"body":{"type":"object","properties":{"limit":{"type":"integer"},"min_organic_score":{"type":"number"},"min_holders":{"type":"integer"}}}},"required":["type","method","bodyType","body"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object"}},"required":["type"]}},"required":["input"]}}}}},"/analyze":{"post":{"summary":"Analyze Token","description":"Full token analysis — price, liquidity, safety, holders. ($0.03 USDC)","operationId":"analyze_token_analyze_post","requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"Solana token mint address","minLength":32}},"required":["address"]}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyzeResponse"}}}},"402":{"description":"Payment Required — send the specified USDC amount via x402 to the seller wallet on Solana, include the transaction signature in the X-Payment header, and retry the request.","headers":{"WWW-Authenticate":{"description":"x402 payment scheme identifier","schema":{"type":"string","example":"X402"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"payment_required"},"accepts":{"type":"array","items":{"type":"object"},"description":"Accepted payment requirements"},"payment_request_url":{"type":"string"},"instructions":{"type":"string"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.03"},"protocols":[{"x402":{}}]},"x-extensions":{"bazaar":{"info":{"input":{"type":"http","method":"POST","bodyType":"json","body":{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"}},"output":{"type":"json","example":{"token":{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","name":"Bonk","symbol":"BONK"},"price":{"price_usd":0.000012},"safety":{"risk_score":3.5,"risk_label":"moderate"},"holders":{"total_holders":100000}}}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["POST"]},"bodyType":{"type":"string","enum":["json"]},"body":{"type":"object","properties":{"address":{"type":"string","description":"Solana token mint address (base58, 32-44 chars)","minLength":32,"maxLength":44}},"required":["address"]}},"required":["type","method","bodyType","body"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object"}},"required":["type"]}},"required":["input"]}}}}},"/analyze/{address}":{"get":{"summary":"Analyze Token Get","description":"Full token analysis — price, liquidity, safety, holders. ($0.03 USDC)\nGET variant for agents that don't support JSON body POST.","operationId":"analyze_token_get_analyze__address__get","parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalyzeResponse"}}}},"402":{"description":"Payment Required — send the specified USDC amount via x402 to the seller wallet on Solana, include the transaction signature in the X-Payment header, and retry the request.","headers":{"WWW-Authenticate":{"description":"x402 payment scheme identifier","schema":{"type":"string","example":"X402"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"payment_required"},"accepts":{"type":"array","items":{"type":"object"},"description":"Accepted payment requirements"},"payment_request_url":{"type":"string"},"instructions":{"type":"string"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.03"},"protocols":[{"x402":{}}]},"x-extensions":{"bazaar":{"info":{"input":{"type":"http","method":"GET","pathParams":{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"}},"output":{"type":"json","example":{"token":{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"},"price":{"price_usd":0.000012},"safety":{"risk_score":3.5,"risk_label":"moderate"}}}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["GET"]},"pathParams":{"type":"object","properties":{"address":{"type":"string","description":"Solana token mint address (base58, 32-44 chars)","minLength":32,"maxLength":44}},"required":["address"]}},"required":["type","method"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object"}},"required":["type"]}},"required":["input"]},"routeTemplate":"/analyze/:address"}}}},"/safety/{address}":{"get":{"summary":"Get Safety","description":"Safety/honeypot check only. ($0.01 USDC)","operationId":"get_safety_safety__address__get","parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","description":"Solana token mint address","minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$"},"description":"Solana token mint address","example":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SafetyResponse"}}}},"402":{"description":"Payment Required — send the specified USDC amount via x402 to the seller wallet on Solana, include the transaction signature in the X-Payment header, and retry the request.","headers":{"WWW-Authenticate":{"description":"x402 payment scheme identifier","schema":{"type":"string","example":"X402"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"payment_required"},"accepts":{"type":"array","items":{"type":"object"},"description":"Accepted payment requirements"},"payment_request_url":{"type":"string"},"instructions":{"type":"string"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"x-extensions":{"bazaar":{"info":{"input":{"type":"http","method":"GET","pathParams":{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"}},"output":{"type":"json","example":{"safety":{"risk_score":5.5,"risk_label":"high","is_honeypot":false}}}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["GET"]},"pathParams":{"type":"object","properties":{"address":{"type":"string","description":"Solana token mint address (base58, 32-44 chars)","minLength":32,"maxLength":44}},"required":["address"]}},"required":["type","method"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object"}},"required":["type"]}},"required":["input"]},"routeTemplate":"/safety/:address"}}}},"/wash-trading/{address}":{"get":{"summary":"Wash Trading Endpoint","description":"Check for wash trading indicators. ($0.01 USDC)\n\nDetects bot-driven volume manipulation using Jupiter v2 24h stats:\ntrades per trader, organic volume percentage, organic buyer percentage,\nand volume-to-liquidity ratio. Returns detected flag, confidence level,\nindividual indicators, and raw metrics.","operationId":"wash_trading_endpoint_wash_trading__address__get","parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","description":"Solana token mint address","minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$"},"description":"Solana token mint address","example":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WashTradingResponse"}}}},"402":{"description":"Payment Required — send the specified USDC amount via x402 to the seller wallet on Solana, include the transaction signature in the X-Payment header, and retry the request.","headers":{"WWW-Authenticate":{"description":"x402 payment scheme identifier","schema":{"type":"string","example":"X402"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"payment_required"},"accepts":{"type":"array","items":{"type":"object"},"description":"Accepted payment requirements"},"payment_request_url":{"type":"string"},"instructions":{"type":"string"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"x-extensions":{"bazaar":{"info":{"input":{"type":"http","method":"GET","pathParams":{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"}},"output":{"type":"json","example":{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","detected":false,"confidence":"low","indicators":[],"metrics":{"trades_per_trader":12.3,"organic_volume_pct":45.2},"summary":"No wash trading detected.","recommendation":"Volume metrics look organic."}}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["GET"]},"pathParams":{"type":"object","properties":{"address":{"type":"string","description":"Solana token mint address (base58, 32-44 chars)","minLength":32,"maxLength":44}},"required":["address"]}},"required":["type","method"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object"}},"required":["type"]}},"required":["input"]},"routeTemplate":"/wash-trading/:address"}}}},"/holdcheck":{"post":{"summary":"Holdcheck Post","description":"Held-position integrity check — is a token you hold STILL clean? ($0.01 USDC)\n\nYou bought it clean; this checks whether it still is. Re-runs safety\non the mint and evaluates five tripwires against your entry baseline:\nmint authority reactivated, freeze authority reactivated, honeypot\nsell-block, liquidity collapsed (< 25% of your entry-time liquidity),\nand risk transformation (>= 8/10). Verdict: CLEAN / CHEAT_RISK /\nDEGRADED. Unknown data never trips — only positively-observed cheat\nmechanics fire. Integrity finding, not a sell recommendation.\nPass ?format=llm for a deterministic one-paragraph briefing.","operationId":"holdcheck_post_holdcheck_post","parameters":[{"name":"format","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Format"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/HoldCheckRequest"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HoldCheckResponse"}}}},"402":{"description":"Payment Required — send the specified USDC amount via x402 to the seller wallet on Solana, include the transaction signature in the X-Payment header, and retry the request.","headers":{"WWW-Authenticate":{"description":"x402 payment scheme identifier","schema":{"type":"string","example":"X402"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"payment_required"},"accepts":{"type":"array","items":{"type":"object"},"description":"Accepted payment requirements"},"payment_request_url":{"type":"string"},"instructions":{"type":"string"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"x-extensions":{"bazaar":{"info":{"input":{"type":"http","method":"POST","bodyType":"json","body":{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","baseline":{"liquidity_usd":611119}}},"output":{"type":"json","example":{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","verdict":"CLEAN","tripwires":[{"name":"mint_reactivated","tripped":false,"detail":"mint authority revoked"}],"checked_at":"2026-09-07T12:00:00+00:00","disclaimer":"Integrity finding only — not a sell recommendation."}}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["POST"]},"bodyType":{"type":"string","enum":["json"]},"body":{"type":"object","properties":{"address":{"type":"string","description":"Solana token mint address (base58, 32-44 chars)","minLength":32,"maxLength":44},"baseline":{"type":"object","description":"Optional entry-time snapshot. Only liquidity_usd is consumed (the LP-collapse baseline).","properties":{"liquidity_usd":{"type":"number","description":"Liquidity (USD) when you entered the position — enables the LP-collapse tripwire."}}}},"required":["address"]}},"required":["type","method","bodyType","body"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object"}},"required":["type"]}},"required":["input"]},"routeTemplate":"/holdcheck"}}}},"/holdcheck/{address}":{"get":{"summary":"Holdcheck Get","description":"Held-position integrity check (GET variant, baseline via query param). ($0.01 USDC)\n\nSame check as POST /holdcheck for clients that prefer GET: pass your\nentry-time liquidity as ?liquidity_usd=... to enable the LP-collapse\ntripwire. Without it, that tripwire is not evaluated.\nPass ?format=llm for a deterministic one-paragraph briefing.","operationId":"holdcheck_get_holdcheck__address__get","parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","description":"Solana token mint address","minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$"},"description":"Solana token mint address","example":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"},{"name":"liquidity_usd","in":"query","required":false,"schema":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Liquidity Usd"}},{"name":"format","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HoldCheckResponse"}}}},"402":{"description":"Payment Required — send the specified USDC amount via x402 to the seller wallet on Solana, include the transaction signature in the X-Payment header, and retry the request.","headers":{"WWW-Authenticate":{"description":"x402 payment scheme identifier","schema":{"type":"string","example":"X402"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"payment_required"},"accepts":{"type":"array","items":{"type":"object"},"description":"Accepted payment requirements"},"payment_request_url":{"type":"string"},"instructions":{"type":"string"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"x-extensions":{"bazaar":{"info":{"input":{"type":"http","method":"GET","pathParams":{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"},"queryParams":{"liquidity_usd":611119}},"output":{"type":"json","example":{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","verdict":"CLEAN","tripwires":[{"name":"lp_collapsed","tripped":false,"detail":"liquidity $500,000 vs baseline $611,119"}],"checked_at":"2026-09-07T12:00:00+00:00"}}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["GET"]},"pathParams":{"type":"object","properties":{"address":{"type":"string","description":"Solana token mint address (base58, 32-44 chars)","minLength":32,"maxLength":44}},"required":["address"]},"queryParams":{"type":"object","description":"Optional: pass ?liquidity_usd=<your entry liquidity> to enable the LP-collapse tripwire.","properties":{"liquidity_usd":{"type":"number","description":"Entry-time liquidity baseline (USD)"}}}},"required":["type","method"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object"}},"required":["type"]}},"required":["input"]},"routeTemplate":"/holdcheck/:address"}}}},"/organic/{address}":{"get":{"summary":"Organic Endpoint","description":"Demand authenticity — is this token's trading real? ($0.01 USDC)\n\nThe organic score, standalone: what percentage of volume is organic\n(real buyers/sellers) vs manufactured, plus the supporting metrics\n(organic buyers, traders, trades-per-trader, volume/liquidity ratio)\nand the wash-trading verdict. Not a buy recommendation — an\nauthenticity measurement.","operationId":"organic_endpoint_organic__address__get","parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","description":"Solana token mint address","minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$"},"description":"Solana token mint address","example":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"},{"name":"format","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OrganicResponse"}}}},"402":{"description":"Payment Required — send the specified USDC amount via x402 to the seller wallet on Solana, include the transaction signature in the X-Payment header, and retry the request.","headers":{"WWW-Authenticate":{"description":"x402 payment scheme identifier","schema":{"type":"string","example":"X402"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"payment_required"},"accepts":{"type":"array","items":{"type":"object"},"description":"Accepted payment requirements"},"payment_request_url":{"type":"string"},"instructions":{"type":"string"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"x-extensions":{"bazaar":{"info":{"input":{"type":"http","method":"GET","pathParams":{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"}},"output":{"type":"json","example":{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","organic_score":94.2,"organic_volume_pct":64.1,"num_traders_24h":14064,"wash_suspected":false,"disclaimer":"Measures demand authenticity — not a buy recommendation, not price prediction."}}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["GET"]},"pathParams":{"type":"object","properties":{"address":{"type":"string","description":"Solana token mint address (base58, 32-44 chars)","minLength":32,"maxLength":44}},"required":["address"]}},"required":["type","method"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object"}},"required":["type"]}},"required":["input"]},"routeTemplate":"/organic/:address"}}}},"/wash-delta/{address}":{"get":{"summary":"Wash Delta Endpoint","description":"Wash-trend delta — has this token's authenticity changed? ($0.01 USDC)\n\nCurrent wash metrics vs the server's own hourly snapshot history\n(tamper-proof baselines — not client-supplied). Trend: STABLE /\nDEGRADING (organic share down hard or vol/liq churn exploding —\nthe bought-at-1.8x, flagged-at-402x story) / IMPROVING /\nNO_BASELINE (first observation; this call starts the history).\nPass ?since=ISO8601 to compare against the latest snapshot before\nthat time instead of the most recent one.","operationId":"wash_delta_endpoint_wash_delta__address__get","parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","description":"Solana token mint address","minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$"},"description":"Solana token mint address","example":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"},{"name":"since","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Since"}},{"name":"format","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Format"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WashDeltaResponse"}}}},"402":{"description":"Payment Required — send the specified USDC amount via x402 to the seller wallet on Solana, include the transaction signature in the X-Payment header, and retry the request.","headers":{"WWW-Authenticate":{"description":"x402 payment scheme identifier","schema":{"type":"string","example":"X402"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"payment_required"},"accepts":{"type":"array","items":{"type":"object"},"description":"Accepted payment requirements"},"payment_request_url":{"type":"string"},"instructions":{"type":"string"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"x-extensions":{"bazaar":{"info":{"input":{"type":"http","method":"GET","pathParams":{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"}},"output":{"type":"json","example":{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","trend":"DEGRADING","organic_pct":20,"vol_liq_ratio":402,"delta":{"organic_pct_change":-45},"disclaimer":"Authenticity trend vs the server's own snapshots — not a recommendation."}}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["GET"]},"pathParams":{"type":"object","properties":{"address":{"type":"string","description":"Solana token mint address (base58, 32-44 chars)","minLength":32,"maxLength":44}},"required":["address"]}},"required":["type","method"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object"}},"required":["type"]}},"required":["input"]},"routeTemplate":"/wash-delta/:address"}}}},"/price/{address}":{"get":{"summary":"Get Price","description":"Price + liquidity only. ($0.01 USDC)","operationId":"get_price_price__address__get","parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","description":"Solana token mint address","minLength":32,"maxLength":44,"pattern":"^[1-9A-HJ-NP-Za-km-z]{32,44}$"},"description":"Solana token mint address","example":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PriceResponse"}}}},"402":{"description":"Payment Required — send the specified USDC amount via x402 to the seller wallet on Solana, include the transaction signature in the X-Payment header, and retry the request.","headers":{"WWW-Authenticate":{"description":"x402 payment scheme identifier","schema":{"type":"string","example":"X402"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"payment_required"},"accepts":{"type":"array","items":{"type":"object"},"description":"Accepted payment requirements"},"payment_request_url":{"type":"string"},"instructions":{"type":"string"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"x-extensions":{"bazaar":{"info":{"input":{"type":"http","method":"GET","pathParams":{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"}},"output":{"type":"json","example":{"price":{"price_usd":0.000012},"metadata":{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"}}}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["GET"]},"pathParams":{"type":"object","properties":{"address":{"type":"string","description":"Solana token mint address (base58, 32-44 chars)","minLength":32,"maxLength":44}},"required":["address"]}},"required":["type","method"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object"}},"required":["type"]}},"required":["input"]},"routeTemplate":"/price/:address"}}}},"/wallet/analyze/{address}":{"get":{"summary":"Analyze Wallet Endpoint","description":"Analyze a Solana wallet's SPL token holdings. ($0.01 USDC)\n\nReturns SOL balance + value, priced token holdings (top 20 by value),\na portfolio risk summary, and the top-3 holding mints.","operationId":"analyze_wallet_endpoint_wallet_analyze__address__get","parameters":[{"name":"address","in":"path","required":true,"schema":{"type":"string","title":"Address"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WalletAnalysisResponse"}}}},"402":{"description":"Payment Required — send the specified USDC amount via x402 to the seller wallet on Solana, include the transaction signature in the X-Payment header, and retry the request.","headers":{"WWW-Authenticate":{"description":"x402 payment scheme identifier","schema":{"type":"string","example":"X402"}}},"content":{"application/json":{"schema":{"type":"object","properties":{"error":{"type":"string","example":"payment_required"},"accepts":{"type":"array","items":{"type":"object"},"description":"Accepted payment requirements"},"payment_request_url":{"type":"string"},"instructions":{"type":"string"}}}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"x-extensions":{"bazaar":{"info":{"input":{"type":"http","method":"GET","pathParams":{"address":"DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263"}},"output":{"type":"json","example":{"wallet":"37fMqbe7vNoDuE15B1qas8TZyhqvYwgLVSViRa4DEmwa","total_value_usd":12345.67,"sol_balance":12.34,"risk_summary":{"level":"low","factors":[]}}}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"input":{"type":"object","properties":{"type":{"type":"string","const":"http"},"method":{"type":"string","enum":["GET"]},"pathParams":{"type":"object","properties":{"address":{"type":"string","description":"Solana token mint address (base58, 32-44 chars)","minLength":32,"maxLength":44}},"required":["address"]}},"required":["type","method"],"additionalProperties":false},"output":{"type":"object","properties":{"type":{"type":"string"},"example":{"type":"object"}},"required":["type"]}},"required":["input"]},"routeTemplate":"/wallet/analyze/:address"}}}},"/docs":{"get":{"summary":"Swagger UI docs","description":"Interactive API documentation (Swagger UI).","security":[],"responses":{"200":{"description":"HTML documentation page"}}}},"/redoc":{"get":{"summary":"ReDoc docs","description":"Interactive API documentation (ReDoc).","security":[],"responses":{"200":{"description":"HTML documentation page"}}}},"/openapi.json":{"get":{"summary":"OpenAPI schema","description":"This OpenAPI specification document (x402-enriched).","security":[],"responses":{"200":{"description":"OpenAPI JSON document"}}}}},"components":{"schemas":{"AnalyzeRequest":{"properties":{"address":{"type":"string","title":"Address","description":"Solana token mint address"}},"type":"object","required":["address"],"title":"AnalyzeRequest","description":"Request body for POST /analyze."},"AnalyzeResponse":{"properties":{"token":{"$ref":"#/components/schemas/TokenMetadata"},"price":{"$ref":"#/components/schemas/PriceInfo"},"safety":{"$ref":"#/components/schemas/SafetyReport"},"holders":{"$ref":"#/components/schemas/HolderSummary"},"degraded":{"type":"boolean","title":"Degraded","default":false},"degraded_reason":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Degraded Reason"},"data_quality":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Data Quality"},"fetched_at":{"type":"string","title":"Fetched At","description":"ISO-8601 timestamp when data was fetched"},"data_sources":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Data Sources"},"pools":{"anyOf":[{"items":{"type":"object"},"type":"array"},{"type":"null"}],"title":"Pools"},"wash_trading":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Wash Trading"},"wash_trading_detail":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Wash Trading Detail"}},"type":"object","required":["token","price","safety","holders","fetched_at"],"title":"AnalyzeResponse","description":"Response for POST /analyze — full token analysis."},"DiscoverRequest":{"properties":{"limit":{"type":"integer","maximum":50,"minimum":1,"title":"Limit","description":"Maximum tokens to return (1-50)","default":50},"min_organic_score":{"type":"number","maximum":100,"minimum":0,"title":"Min Organic Score","description":"Filter by minimum organic score (0-100)","default":0},"min_holders":{"type":"integer","minimum":0,"title":"Min Holders","description":"Filter by minimum holder count","default":0}},"type":"object","title":"DiscoverRequest","description":"Request body for /discover endpoint."},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"status":{"type":"string","title":"Status","default":"ok"},"service":{"type":"string","title":"Service","default":"svm402-service"},"version":{"type":"string","title":"Version","default":"1.0.0"},"x402_enabled":{"type":"boolean","title":"X402 Enabled","default":true}},"type":"object","title":"HealthResponse","description":"Response for GET /health."},"HoldCheckRequest":{"properties":{"address":{"type":"string","title":"Address","description":"Solana token mint to check"},"baseline":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Baseline","description":"Entry-time snapshot from when you entered the position. Only liquidity_usd is consumed (the LP-collapse baseline). Optional — without it the LP tripwire is not evaluated (never guesses)."}},"type":"object","required":["address"],"title":"HoldCheckRequest","description":"Request body for POST /holdcheck (GET variant takes no body)."},"HoldCheckResponse":{"properties":{"address":{"type":"string","title":"Address"},"verdict":{"type":"string","title":"Verdict"},"tripwires":{"items":{"$ref":"#/components/schemas/HoldCheckTripwire"},"type":"array","title":"Tripwires"},"checked_at":{"type":"string","title":"Checked At"},"baseline_required":{"type":"boolean","title":"Baseline Required","default":false},"briefing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Briefing"},"disclaimer":{"type":"string","title":"Disclaimer","default":"Integrity finding only — not a sell recommendation, not price prediction. CHEAT_RISK means a structural cheat mechanic is positively observed right now."}},"type":"object","required":["address","verdict","tripwires","checked_at"],"title":"HoldCheckResponse"},"HoldCheckTripwire":{"properties":{"name":{"type":"string","title":"Name"},"tripped":{"type":"boolean","title":"Tripped"},"detail":{"type":"string","title":"Detail"},"current":{"anyOf":[{},{"type":"null"}],"title":"Current"},"baseline":{"anyOf":[{},{"type":"null"}],"title":"Baseline"},"baseline_required":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Baseline Required"}},"type":"object","required":["name","tripped","detail"],"title":"HoldCheckTripwire"},"HolderInfo":{"properties":{"address":{"type":"string","title":"Address"},"amount":{"type":"number","title":"Amount"},"percentage":{"type":"number","title":"Percentage"},"is_lp":{"type":"boolean","title":"Is Lp","default":false}},"type":"object","required":["address","amount","percentage"],"title":"HolderInfo"},"HolderSummary":{"properties":{"total_holders":{"type":"integer","title":"Total Holders"},"top_10_pct":{"type":"number","title":"Top 10 Pct","description":"Percentage held by top 10 holders"},"retail_top_10_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Retail Top 10 Pct","description":"Percentage held by top 10 non-LP holders"},"holders":{"items":{"$ref":"#/components/schemas/HolderInfo"},"type":"array","title":"Holders"}},"type":"object","required":["total_holders","top_10_pct"],"title":"HolderSummary"},"OrganicResponse":{"properties":{"address":{"type":"string","title":"Address"},"organic_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Organic Score"},"organic_volume_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Organic Volume Pct"},"organic_volume_24h_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Organic Volume 24H Usd"},"total_volume_24h_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Volume 24H Usd"},"num_organic_buyers_24h":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Organic Buyers 24H"},"num_traders_24h":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Traders 24H"},"trades_per_trader":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Trades Per Trader"},"volume_liquidity_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Volume Liquidity Ratio"},"wash_suspected":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Wash Suspected"},"wash_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wash Level"},"wash_indicators":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Wash Indicators"},"data_available":{"type":"boolean","title":"Data Available","default":true},"assessed_at":{"type":"string","title":"Assessed At"},"briefing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Briefing"},"disclaimer":{"type":"string","title":"Disclaimer","default":"Measures demand authenticity — organic vs manipulated volume. Not a buy recommendation, not price prediction."}},"type":"object","required":["address","assessed_at"],"title":"OrganicResponse"},"PriceInfo":{"properties":{"token_address":{"type":"string","title":"Token Address"},"price_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Usd"},"price_source":{"type":"string","title":"Price Source","default":"jupiter"},"liquidity_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Liquidity Usd"},"volume_24h_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Volume 24H Usd"},"volume_24h_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Volume 24H Note"},"volume_to_liquidity_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Volume To Liquidity Ratio"},"buy_volume_24h_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Buy Volume 24H Usd"},"sell_volume_24h_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sell Volume 24H Usd"},"pool_selection_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pool Selection Note"},"liquidity_warning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Liquidity Warning"},"price_warning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Warning"},"price_change_24h":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Change 24H"},"price_change_1h":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Change 1H"},"price_change_6h":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Change 6H"},"price_change_note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Price Change Note"},"token_age_category":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Token Age Category"},"token_age_hours":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Token Age Hours"},"pair_created_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pair Created At"},"market_cap":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Market Cap"},"fdv":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Fdv"},"organic_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Organic Score"},"organic_score_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organic Score Label"},"is_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Verified"},"holder_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Holder Count"},"buy_volume_24h":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Buy Volume 24H"},"sell_volume_24h":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sell Volume 24H"},"num_buys_24h":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Buys 24H"},"num_sells_24h":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Sells 24H"},"num_traders_24h":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Traders 24H"},"pair_address":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Pair Address"},"dex_id":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Dex Id"},"liquidity_total_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Liquidity Total Usd"},"liquidity_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Liquidity Source"},"fetched_at":{"type":"string","title":"Fetched At","description":"ISO-8601 timestamp of data fetch"}},"type":"object","required":["token_address","fetched_at"],"title":"PriceInfo"},"PriceResponse":{"properties":{"price":{"$ref":"#/components/schemas/PriceInfo"},"metadata":{"anyOf":[{"$ref":"#/components/schemas/TokenMetadata"},{"type":"null"}]}},"type":"object","required":["price"],"title":"PriceResponse","description":"Response for GET /price/{address}."},"SafetyReport":{"properties":{"token_address":{"type":"string","title":"Token Address"},"is_honeypot":{"type":"boolean","title":"Is Honeypot","default":false},"honeypot_reasons":{"items":{"type":"string"},"type":"array","title":"Honeypot Reasons"},"owner_renounced":{"type":"boolean","title":"Owner Renounced","default":false},"mint_authority_revoked":{"type":"boolean","title":"Mint Authority Revoked","default":false},"freeze_authority_revoked":{"type":"boolean","title":"Freeze Authority Revoked","default":false},"liquidity_locked":{"type":"boolean","title":"Liquidity Locked","default":false},"liquidity_locked_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Liquidity Locked Pct"},"buy_tax_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Buy Tax Pct"},"sell_tax_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sell Tax Pct"},"fee_source":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Fee Source"},"holder_concentration_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Holder Concentration Pct"},"retail_concentration_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Retail Concentration Pct"},"liquidity_amount_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Liquidity Amount Usd"},"is_sus":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Sus"},"dev_balance_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Dev Balance Pct"},"organic_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Organic Score"},"organic_score_label":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Organic Score Label"},"is_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Verified"},"market_cap":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Market Cap"},"fdv":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Fdv"},"holder_count":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Holder Count"},"risk_score":{"type":"number","title":"Risk Score","description":"Deterministic risk score 0 (safest) – 10 (riskiest)"},"risk_label":{"type":"string","title":"Risk Label","description":"Human-readable risk category"},"risk_factors":{"items":{"type":"string"},"type":"array","title":"Risk Factors","description":"List of identified risk factors"}},"type":"object","required":["token_address","risk_score","risk_label"],"title":"SafetyReport"},"SafetyResponse":{"properties":{"safety":{"$ref":"#/components/schemas/SafetyReport"}},"type":"object","required":["safety"],"title":"SafetyResponse","description":"Response for GET /safety/{address}."},"TokenMetadata":{"properties":{"address":{"type":"string","title":"Address"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Symbol"},"decimals":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Decimals"},"supply":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Supply"},"logo_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Uri"},"is_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Verified"},"tags":{"items":{"type":"string"},"type":"array","title":"Tags"}},"type":"object","required":["address"],"title":"TokenMetadata"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WalletAnalysisResponse":{"properties":{"wallet":{"type":"string","title":"Wallet"},"total_value_usd":{"type":"number","title":"Total Value Usd","default":0},"sol_balance":{"type":"number","title":"Sol Balance","default":0},"sol_value_usd":{"type":"number","title":"Sol Value Usd","default":0},"token_count":{"type":"integer","title":"Token Count","default":0},"holdings":{"items":{"$ref":"#/components/schemas/WalletHolding"},"type":"array","title":"Holdings"},"risk_summary":{"$ref":"#/components/schemas/WalletRiskSummary"},"top_holdings":{"items":{"type":"string"},"type":"array","title":"Top Holdings"},"fetched_at":{"type":"string","title":"Fetched At","description":"ISO-8601 timestamp when data was fetched"}},"type":"object","required":["wallet","fetched_at"],"title":"WalletAnalysisResponse","description":"Response for GET /wallet/analyze/{wallet_address}."},"WalletHolding":{"properties":{"mint":{"type":"string","title":"Mint"},"symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Symbol"},"name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Name"},"amount":{"type":"number","title":"Amount","default":0},"price_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Price Usd"},"value_usd":{"type":"number","title":"Value Usd","default":0},"pct_of_portfolio":{"type":"number","title":"Pct Of Portfolio","default":0},"risk_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Risk Score","description":"Risk score 0-10 (0=safe, 10=extreme risk). Based on mint/freeze authority, honeypot, liquidity, holder concentration. Null when token is unknown to Jupiter or safety data unavailable. Scale: 0-2 safe, 3-5 moderate, 6-8 high, 9-10 extreme."},"is_verified":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Is Verified"},"logo_uri":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Logo Uri"}},"type":"object","required":["mint"],"title":"WalletHolding","description":"A single SPL token holding in a wallet."},"WalletRiskSummary":{"properties":{"high_risk_pct":{"type":"number","title":"High Risk Pct","default":0},"verified_pct":{"type":"number","title":"Verified Pct","default":0},"unverified_pct":{"type":"number","title":"Unverified Pct","default":0},"illiquid_pct":{"type":"number","title":"Illiquid Pct","default":0}},"type":"object","title":"WalletRiskSummary","description":"Aggregated risk profile of a wallet's token holdings."},"WashDeltaResponse":{"properties":{"address":{"type":"string","title":"Address"},"wash_detected":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Wash Detected"},"wash_level":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Wash Level"},"organic_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Organic Pct"},"vol_liq_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Vol Liq Ratio"},"indicators":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Indicators"},"trend":{"type":"string","title":"Trend"},"delta":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Delta"},"baseline":{"anyOf":[{"type":"object"},{"type":"null"}],"title":"Baseline"},"assessed_at":{"type":"string","title":"Assessed At"},"briefing":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Briefing"},"disclaimer":{"type":"string","title":"Disclaimer","default":"Authenticity trend vs the server's own prior snapshot. Not a buy or sell recommendation, not price prediction."}},"type":"object","required":["address","trend","assessed_at"],"title":"WashDeltaResponse"},"WashTradingIndicator":{"properties":{"name":{"type":"string","title":"Name","description":"Indicator name (e.g. high_trades_per_trader)"},"value":{"type":"number","title":"Value","description":"Observed value"},"threshold":{"type":"number","title":"Threshold","description":"Threshold that was exceeded"},"note":{"type":"string","title":"Note","description":"Human-readable explanation"}},"type":"object","required":["name","value","threshold","note"],"title":"WashTradingIndicator","description":"A single wash trading indicator that triggered."},"WashTradingMetrics":{"properties":{"trades_per_trader":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Trades Per Trader"},"organic_volume_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Organic Volume Pct"},"organic_buyer_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Organic Buyer Pct"},"vol_liq_ratio":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Vol Liq Ratio"},"num_traders_24h":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Traders 24H"},"num_organic_buyers_24h":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Num Organic Buyers 24H"},"total_volume_24h_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Total Volume 24H Usd"}},"type":"object","title":"WashTradingMetrics"},"WashTradingResponse":{"properties":{"address":{"type":"string","title":"Address"},"detected":{"type":"boolean","title":"Detected"},"confidence":{"type":"string","title":"Confidence","description":"high | medium | low"},"indicators":{"items":{"$ref":"#/components/schemas/WashTradingIndicator"},"type":"array","title":"Indicators","default":[]},"metrics":{"$ref":"#/components/schemas/WashTradingMetrics"},"summary":{"type":"string","title":"Summary"},"recommendation":{"type":"string","title":"Recommendation"},"data_sources":{"anyOf":[{"additionalProperties":{"type":"string"},"type":"object"},{"type":"null"}],"title":"Data Sources"},"fetched_at":{"type":"string","title":"Fetched At"}},"type":"object","required":["address","detected","confidence","metrics","summary","recommendation","fetched_at"],"title":"WashTradingResponse","description":"Response for GET /wash-trading/{address}."}},"securitySchemes":{"X402Payment":{"type":"apiKey","description":"x402 per-call USDC payment on Solana. Send no credentials; the first call returns HTTP 402 with payment requirements. Any generic x402 client handles this automatically.","in":"header","name":"X-Payment"}}},"x-discovery":{"ownershipProofs":[]}}