{"openapi":"3.1.0","info":{"title":"Solana Wallet x402 by falcon.sol","version":"1.0.0","description":"Pay-per-call Solana wallet profiles, funding-source clusters, and trending tokens. Agents pay USDC over x402 on Solana, and on Base through the Coinbase CDP facilitator when it is configured. Call free GET /wallet/preview or MCP wallet_preview before paying. Unpaid calls to paid routes return HTTP 402 even when the query is missing or invalid. A signed request with a bad query returns HTTP 400 and is not charged. GET /token/trending costs $0.005 and includes holder concentration, mint and freeze authority, LP lock or burn status, and sniper or bundle share of early supply. Risky results are plain-English risk flags. Successful bodies include cached, stale, and cacheAgeMs.","contact":{"name":"falcon.sol","url":"https://x.com/ygfalcon","email":"falconsol@mail.grokbot.com"},"x-provider":{"name":"falcon.sol","tagline":"by falcon.sol","blurb":"Built by falcon.sol: anon dev shipping pay-per-call data tools and x402 APIs for builders and agents.","links":{"x":"https://x.com/ygfalcon","github":"https://github.com/ygfalcon","apify":"https://apify.com/falcon-sol"}},"x-payment-info":{"protocol":"x402","scheme":"exact","currency":"USDC","decimals":6,"networkMode":"mainnet"}},"servers":[{"url":"https://solana-wallet-intel-phi.vercel.app"}],"paths":{"/wallet/profile":{"get":{"operationId":"wallet_profile","summary":"Solana wallet profile","description":"Use this when you need priced holdings and windowed PnL for one Solana wallet. Holdings valued in USD, a short plain-language summary, windowed realized and unrealized PnL, win rate, and evidence-backed labels such as active memecoin trader. Includes copyTradeScore and copyTradeGrade: copy-return after a 3s delay and a 3.6% round trip, win rate, sample-size shrinkage, and bot or insider penalties. The score is null when no close lasted at least 3 seconds. txLimit is an integer from 5 to 25 and defaults to 20. Call free wallet_preview first if you only need SOL balance and last-active time, or wallet_quick for a cheaper copy-trade screen.","tags":["paid","solana","wallet","x402"],"parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string","description":"Solana wallet address in base58 (32 to 44 characters). Unpaid requests return HTTP 402. A signed request with an invalid address returns HTTP 400 and is not charged."}},{"name":"txLimit","in":"query","required":false,"schema":{"type":"string","description":"Recent signatures to inspect, integer from 5 to 25. Defaults to 20. Unpaid requests return HTTP 402. A signed request with an out-of-range value returns HTTP 400 and is not charged."}}],"x-payment-info":{"protocol":"x402","protocols":[{"x402":{}}],"scheme":"exact","price":"$0.009","amount":"9000","currency":"USDC","decimals":6,"networks":[{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"HD1ryR3dYSXBVNGfJZydbpmnChiE1wrAQkupWWtHt4pM","chain":"solana","facilitator":"public"},{"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0xa30f3C68f2F6067EE5b9d5f651426E44Ea8AdAE9","chain":"base","facilitator":"cdp"}]},"responses":{"200":{"description":"Solana wallet profile","content":{"application/json":{"schema":{"type":"object"},"example":{"address":"HD1ryR3dYSXBVNGfJZydbpmnChiE1wrAQkupWWtHt4pM","summary":"Holds $1,280.40 across 4 priced tokens. Largest position is SOL at 61%. Estimated realized PnL is +$42.10 and unrealized PnL is -$8.40 (win rate 60% on 5 closes). Labels: active memecoin trader, net winner.","portfolioUsd":1280.4,"labels":["active memecoin trader","net winner"],"labelDetails":[{"id":"active_memecoin_trader","title":"active memecoin trader","category":"activity","confidence":"medium","evidence":"5 swaps traded a token outside the blue-chip and stablecoin set."}],"pnl":{"realizedUsd":42.1,"unrealizedUsd":-8.4,"winRate":0.6,"partialCostBasis":false,"priceBasis":"execution"},"copyTradeScore":0.556,"copyTradeGrade":"C"}}}},"400":{"description":"A signed request failed validation before settlement. Unpaid probes receive 402 instead. The buyer is not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. The body is an x402 PaymentRequired document: accepts[].amount is USDC base units (6 decimals, so $0.01 is \"10000\"), and inputSchema describes the query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"502":{"description":"Upstream market data was unavailable. Settlement is cancelled. retryable is true for timeouts, rate limits, and 5xx.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/token/trending":{"get":{"operationId":"token_trending","summary":"Trending Solana tokens","description":"Call this when you need the Solana memecoins traders are watching and a rug-check before you buy, swap, or recommend one. The list includes liquidity, market cap, pair age, 5m/1h/24h price and volume, buy/sell ratio, pump.fun bonding or graduation, and links to pump.fun, DexScreener, and Solscan. Each token has a one-line verdict, riskScore (0 clean to 100), riskLevel (low, medium, high, or unknown), and a risk breakdown with evidence and confidence: top-10 share, mint and freeze authority, LP lock percent, and sniper or bundle share of early supply. riskLevel is unknown when the holder, authority, LP, and sniper checks are all unread, and maxRisk leaves those tokens out. Holder percent falls back to the public RugCheck report at medium confidence when the public RPC cannot list the largest accounts. A successful RPC holder read is kept. Holder-concentration change over 5m/1h/24h is filled when this process has seen the mint before. A check that cannot be read says so, uses low confidence, and is not flagged. On-chain safety flags are plain-English sentences that fire when the top 10 holders own 50% or more, mint or freeze authority is still active, LP is unlocked, or snipers and bundled wallets took 20% or more of early supply. Market flags are short codes: low_liquidity, thin_volume, newly_launched, extreme_move, wash_suspect, paid_boost. Thin, new, and wash-like books are ranked down. The summary block counts tokens by risk level and names the top movers. limit is an integer from 1 to 25 and defaults to 15. minLiquidity is an optional USD floor. maxRisk is low, medium, high, or an integer from 0 to 100.","tags":["paid","solana","rug-check","trending","memecoin","risk","x402"],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"string","description":"How many tokens to return, integer from 1 to 25. Defaults to 15. Unpaid requests return HTTP 402. A signed request with an out-of-range value returns HTTP 400 and is not charged. MCP also accepts a JSON integer."}},{"name":"minLiquidity","in":"query","required":false,"schema":{"type":"string","description":"Optional minimum pool liquidity in USD, a non-negative number such as 15000. Tokens with unknown liquidity are left out. Unpaid requests return HTTP 402. A signed request with a bad value returns HTTP 400 and is not charged. MCP also accepts a JSON number."}},{"name":"maxRisk","in":"query","required":false,"schema":{"type":"string","description":"Optional maximum risk. low, medium, or high keeps tokens at or below that level. An integer from 0 to 100 keeps tokens with riskScore at or below that number. Unknown risk is left out. Unpaid requests return HTTP 402. A signed request with a bad value returns HTTP 400 and is not charged."}}],"x-payment-info":{"protocol":"x402","protocols":[{"x402":{}}],"scheme":"exact","price":"$0.005","amount":"5000","currency":"USDC","decimals":6,"networks":[{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"HD1ryR3dYSXBVNGfJZydbpmnChiE1wrAQkupWWtHt4pM","chain":"solana","facilitator":"public"},{"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0xa30f3C68f2F6067EE5b9d5f651426E44Ea8AdAE9","chain":"base","facilitator":"cdp"}]},"responses":{"200":{"description":"Trending Solana tokens","content":{"application/json":{"schema":{"type":"object","required":["summary","tokens"],"properties":{"summary":{"type":"string"},"summaryBlock":{"type":"object","properties":{"returned":{"type":"integer"},"scanned":{"type":"integer"},"byRiskLevel":{"type":"object"},"topMovers":{"type":"array","items":{"type":"object"}}}},"timestamps":{"type":"object","properties":{"asOf":{"type":"string","description":"ISO-8601 time the board was built."},"generatedAt":{"type":"string","description":"ISO-8601 time the board was built. Matches asOf."}}},"etag":{"type":"string","description":"SHA-256 of the filtered body. Also sent as the ETag header."},"query":{"type":"object","description":"The limit, minLiquidity, and maxRisk that were applied."},"tokens":{"type":"array","items":{"type":"object","required":["rank","symbol","riskFlags","riskScore","riskLevel"],"properties":{"rank":{"type":"integer","minimum":1},"mint":{"type":"string","description":"Token mint address."},"symbol":{"type":"string"},"name":{"type":"string"},"priceUsd":{"type":["number","null"]},"liquidityUsd":{"type":["number","null"]},"marketCapUsd":{"type":["number","null"],"description":"USD market cap from the pair feed. Null when the feed does not publish one."},"volume24hUsd":{"type":["number","null"]},"priceChange24hPct":{"type":["number","null"]},"ageHours":{"type":["number","null"]},"verdict":{"type":"string","description":"One plain-English line. Heuristic, not a promise that a token is safe."},"momentum":{"type":"object","description":"Price, volume, and buy/sell ratio over 5 minutes, 1 hour, and 24 hours. Holder change is the percent change in top-10 concentration versus an earlier sample from this process.","properties":{"priceChangePct":{"type":"object"},"volumeUsd":{"type":"object"},"buySellRatio":{"type":"object"},"holderChangePct":{"type":"object"},"confidence":{"type":"string","enum":["high","medium","low"]}}},"pump":{"type":"object","properties":{"status":{"type":"string","enum":["bonding","graduated","not_pump","unknown"]},"progressPct":{"type":["number","null"]},"confidence":{"type":"string","enum":["high","medium","low"]}}},"links":{"type":"object","properties":{"pumpfun":{"type":["string","null"]},"dexscreener":{"type":["string","null"]},"solscan":{"type":"string"}}},"riskBreakdown":{"type":"array","description":"One row per safety check: holders, mint_authority, freeze_authority, lp_lock, snipers. value is the evidence. flagged is true only when the check crossed its threshold.","items":{"type":"object"}},"riskFlags":{"type":"array","items":{"type":"string"},"description":"Plain-English on-chain safety sentences plus market codes: low_liquidity, thin_volume, newly_launched, extreme_move, wash_suspect, paid_boost."},"riskScore":{"type":"integer","minimum":0,"maximum":100,"description":"0 is clean, 100 is high risk."},"riskLevel":{"type":"string","enum":["low","medium","high","unknown"],"description":"unknown means holder, authority, LP, and sniper checks were all unread. maxRisk leaves unknown tokens out."},"checks":{"type":"object","properties":{"holders":{"type":"object","properties":{"top10Share":{"type":["number","null"]},"holderPct":{"type":["number","null"],"description":"Top-10 holder share as a percent."},"confidence":{"type":"string","enum":["high","medium","low"]},"note":{"type":"string"}}},"authorities":{"type":"object","properties":{"mintAuthority":{"type":["string","null"]},"freezeAuthority":{"type":["string","null"]},"mintStatus":{"type":"string","enum":["active","revoked","unknown"]},"freezeStatus":{"type":"string","enum":["active","revoked","unknown"]},"confidence":{"type":"string","enum":["high","medium","low"]},"note":{"type":"string"}}},"lp":{"type":"object","properties":{"status":{"type":"string","enum":["burned","locked","unlocked","concentrated","unknown"]},"lockedPct":{"type":["number","null"],"description":"Percent of LP supply burned or locked."},"confidence":{"type":"string","enum":["high","medium","low"]},"note":{"type":"string"}}},"snipers":{"type":"object","properties":{"share":{"type":["number","null"]},"sniperPct":{"type":["number","null"]},"confidence":{"type":"string","enum":["high","medium","low"]},"note":{"type":"string"}}}}}}}},"cached":{"type":"boolean"},"stale":{"type":"boolean"},"cacheAgeMs":{"type":"integer"}}},"example":{"summary":"2 Solana tokens, ranked by 24h volume after down-ranking thin, new, and wash-like books. Top is BONK with $18,000,000 24h volume and $4,200,000 liquidity. 1 of 2 have risk flags.","tokens":[{"rank":1,"symbol":"BONK","liquidityUsd":4200000,"volume24hUsd":18000000,"ageHours":8000,"riskFlags":[],"riskScore":0,"riskLevel":"low","checks":{"holders":{"top10Share":0.18,"holderPct":18,"confidence":"high","note":"Top 10 holders control 18% of supply."},"authorities":{"mintAuthority":null,"freezeAuthority":null,"mintStatus":"revoked","freezeStatus":"revoked","confidence":"high","note":"Mint authority is revoked. Freeze authority is revoked."},"lp":{"status":"burned","lockedPct":100,"confidence":"high","note":"LP is burned. Burn addresses hold 100% of the LP supply."},"snipers":{"share":0.04,"sniperPct":4,"confidence":"high","note":"Snipers and bundled wallets took 4% of supply in the earliest slots."}},"verdict":"Low risk: top 10 hold 18%, authorities are revoked, LP is burned, and snipers took 4%.","marketCapUsd":1800000000,"pump":{"status":"not_pump","progressPct":null,"confidence":"high"},"links":{"dexscreener":"https://dexscreener.com/solana/bonk","solscan":"https://solscan.io/token/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263","pumpfun":null}},{"rank":2,"symbol":"NEWCOIN","liquidityUsd":38000,"volume24hUsd":910000,"ageHours":3,"riskFlags":["newly_launched","wash_suspect","Top 10 holders control 64% of supply.","Mint authority is still active, so the issuer can create more tokens.","LP is unlocked, so liquidity can be pulled.","Snipers and bundled wallets took 31% of supply in the earliest slots."],"riskScore":100,"riskLevel":"high","checks":{"holders":{"top10Share":0.64,"holderPct":64,"confidence":"high","note":"Top 10 holders control 64% of supply."},"authorities":{"mintAuthority":"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU","freezeAuthority":null,"mintStatus":"active","freezeStatus":"revoked","confidence":"high","note":"Mint authority is still active, so the issuer can create more tokens. Freeze authority is revoked."},"lp":{"status":"unlocked","lockedPct":0,"confidence":"high","note":"LP is unlocked, so liquidity can be pulled."},"snipers":{"share":0.31,"sniperPct":31,"confidence":"high","note":"Snipers and bundled wallets took 31% of supply in the earliest slots."}},"verdict":"High risk: top 10 hold 64%, mint authority is live, LP is unlocked, and snipers took 31%.","marketCapUsd":90000,"pump":{"status":"bonding","progressPct":42,"confidence":"high"}}],"summaryBlock":{"returned":2,"scanned":2,"byRiskLevel":{"low":1,"medium":0,"high":1,"unknown":0},"topMovers":[{"rank":2,"mint":"new","symbol":"NEWCOIN","priceChangePct":140,"window":"h24"}]},"timestamps":{"asOf":"2026-10-24T00:00:00.000Z","generatedAt":"2026-10-24T00:00:00.000Z"},"etag":"c4f0a2e8b91d4c6e8a0b1d2f3a4c5e6d7f8091a2b3c4d5e6f708192a3b4c5d6e"}}}},"400":{"description":"A signed request failed validation before settlement. Unpaid probes receive 402 instead. The buyer is not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. The body is an x402 PaymentRequired document: accepts[].amount is USDC base units (6 decimals, so $0.01 is \"10000\"), and inputSchema describes the query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"502":{"description":"Upstream market data was unavailable. Settlement is cancelled. retryable is true for timeouts, rate limits, and 5xx.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/wallet/funding":{"get":{"operationId":"wallet_funding","summary":"Wallet funding source and cluster","description":"Use this when you need a wallet's first SOL funder and whether other wallets look like the same operator. Find a wallet's first SOL funder, flag wallets that share that funder or a CEX deposit address, and return a cluster id with plain-language sybil risk reasons. Labeled exchange hot wallets are not used as a cluster. Optional peers compares up to 8 other wallets.","tags":["paid","solana","wallet","x402"],"parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string","description":"Solana wallet address in base58 (32 to 44 characters). Unpaid requests return HTTP 402. A signed request with an invalid address returns HTTP 400 and is not charged."}},{"name":"peers","in":"query","required":false,"schema":{"type":"string","description":"Comma-separated peer wallets to compare, up to 8. Each must be base58. The primary address is rejected. Unpaid requests return HTTP 402. A signed request with invalid peers returns HTTP 400 and is not charged. Wallets that share a personal first funder or a CEX deposit address join one cluster."}}],"x-payment-info":{"protocol":"x402","protocols":[{"x402":{}}],"scheme":"exact","price":"$0.009","amount":"9000","currency":"USDC","decimals":6,"networks":[{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"HD1ryR3dYSXBVNGfJZydbpmnChiE1wrAQkupWWtHt4pM","chain":"solana","facilitator":"public"},{"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0xa30f3C68f2F6067EE5b9d5f651426E44Ea8AdAE9","chain":"base","facilitator":"cdp"}]},"responses":{"200":{"description":"Wallet funding source and cluster","content":{"application/json":{"schema":{"type":"object"},"example":{"address":"HD1ryR3dYSXBVNGfJZydbpmnChiE1wrAQkupWWtHt4pM","summary":"First SOL came from a personal funder. Peer wallets that share that funder are one cluster. Cluster id is funder:So11111111111111111111111111111111111111112.","funder":{"address":"So11111111111111111111111111111111111111112","exchange":null,"amountSol":1.5},"cexDeposit":null,"cluster":{"id":"funder:So11111111111111111111111111111111111111112","key":"funder","members":["HD1ryR3dYSXBVNGfJZydbpmnChiE1wrAQkupWWtHt4pM"]},"risk":{"level":"high","reasons":["Peer wallets share that first SOL funder. Wallets opened by the same funder are often one operator or a sybil set."]}}}}},"400":{"description":"A signed request failed validation before settlement. Unpaid probes receive 402 instead. The buyer is not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. The body is an x402 PaymentRequired document: accepts[].amount is USDC base units (6 decimals, so $0.01 is \"10000\"), and inputSchema describes the query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"502":{"description":"Upstream market data was unavailable. Settlement is cancelled. retryable is true for timeouts, rate limits, and 5xx.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/wallet/quick":{"get":{"operationId":"wallet_quick","summary":"Solana wallet quick screen","description":"Use this for a cheap copy-trade screen before paying for a full profile. Cheap copy-trade screen for one wallet: windowed realized PnL, win rate, closed trades, last active time, bot, exchange, net-winner and dormant flags, plus copyTradeScore and copyTradeGrade (copy-return after a 3s delay and a 3.6% round trip, win rate, sample-size shrinkage, bot and insider penalties). Free teaser at /wallet/preview; full report at /wallet/profile.","tags":["paid","solana","wallet","x402"],"parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string","description":"Solana wallet address in base58 (32 to 44 characters). Unpaid requests return HTTP 402. A signed request with an invalid address returns HTTP 400 and is not charged."}}],"x-payment-info":{"protocol":"x402","protocols":[{"x402":{}}],"scheme":"exact","price":"$0.002","amount":"2000","currency":"USDC","decimals":6,"networks":[{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"HD1ryR3dYSXBVNGfJZydbpmnChiE1wrAQkupWWtHt4pM","chain":"solana","facilitator":"public"},{"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0xa30f3C68f2F6067EE5b9d5f651426E44Ea8AdAE9","chain":"base","facilitator":"cdp"}]},"responses":{"200":{"description":"Solana wallet quick screen","content":{"application/json":{"schema":{"type":"object"},"example":{"address":"HD1ryR3dYSXBVNGfJZydbpmnChiE1wrAQkupWWtHt4pM","realizedUsd":42.1,"winRate":0.6,"closedTrades":5,"bot":false,"exchangeLike":false,"netWinner":true,"dormant":false,"portfolioUsd":1280.4,"lastActiveAt":"2026-10-23T18:00:00.000Z","windowTransactions":25,"copyTradeScore":0.556,"copyTradeGrade":"C"}}}},"400":{"description":"A signed request failed validation before settlement. Unpaid probes receive 402 instead. The buyer is not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. The body is an x402 PaymentRequired document: accepts[].amount is USDC base units (6 decimals, so $0.01 is \"10000\"), and inputSchema describes the query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"502":{"description":"Upstream market data was unavailable. Settlement is cancelled. retryable is true for timeouts, rate limits, and 5xx.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/wallet/quick/batch":{"get":{"operationId":"wallet_quick_batch","summary":"Batch quick screen, up to 10 wallets","description":"Quick screen (windowed realized PnL, win rate, copyTradeScore, copyTradeGrade, bot, exchange, net-winner and dormant flags) for up to 10 Solana wallets in one paid call, ranked by realized PnL. Pass addresses comma-separated.","tags":["paid","solana","wallet","x402"],"parameters":[{"name":"addresses","in":"query","required":true,"schema":{"type":"string","description":"1 to 10 comma-separated base58 Solana wallet addresses. Unpaid requests return HTTP 402. A signed request with a bad list returns HTTP 400 and is not charged."}}],"x-payment-info":{"protocol":"x402","protocols":[{"x402":{}}],"scheme":"exact","price":"$0.015","amount":"15000","currency":"USDC","decimals":6,"networks":[{"network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"HD1ryR3dYSXBVNGfJZydbpmnChiE1wrAQkupWWtHt4pM","chain":"solana","facilitator":"public"},{"network":"eip155:8453","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0xa30f3C68f2F6067EE5b9d5f651426E44Ea8AdAE9","chain":"base","facilitator":"cdp"}]},"responses":{"200":{"description":"Batch quick screen, up to 10 wallets","content":{"application/json":{"schema":{"type":"object"},"example":{"asOf":"2026-10-24T12:00:00.000Z","wallets":[{"address":"HD1ryR3dYSXBVNGfJZydbpmnChiE1wrAQkupWWtHt4pM","realizedUsd":42.1,"winRate":0.6,"bot":false,"smartMoney":false,"copyTradeScore":0.556,"copyTradeGrade":"C"}],"errors":[]}}}},"400":{"description":"A signed request failed validation before settlement. Unpaid probes receive 402 instead. The buyer is not charged.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"402":{"description":"Payment required. The body is an x402 PaymentRequired document: accepts[].amount is USDC base units (6 decimals, so $0.01 is \"10000\"), and inputSchema describes the query.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PaymentRequired"}}}},"502":{"description":"Upstream market data was unavailable. Settlement is cancelled. retryable is true for timeouts, rate limits, and 5xx.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/demo/check":{"get":{"operationId":"token_check_demo","summary":"Free rug-check demo for one Solana token","description":"Free demo. Try free, then pay per call. Pass one Solana token mint and get a real rug-check: riskScore, riskLevel, a one-line verdict, the top risk flags, liquidity, market cap, age, and pump.fun status. Uses free public data only. Cached 60 seconds per mint and rate-limited to 20 calls a minute per client. The paid routes return every flag, the full on-chain checks, and wallet intelligence. MCP tool token_check_demo.","tags":["free"],"security":[],"parameters":[{"name":"mint","in":"query","required":true,"schema":{"type":"string","description":"Solana token mint in base58 (32 to 44 characters). Invalid mints return HTTP 400. This route is free."}}],"responses":{"200":{"description":"Rug-check summary for one token, plus the paid routes and prices.","content":{"application/json":{"schema":{"type":"object","properties":{"demo":{"type":"boolean"},"found":{"type":"boolean"},"mint":{"type":["string","null"]},"summary":{"type":"string"},"token":{"type":"object"},"next":{"type":"object"},"provider":{"type":"object"}}}}}},"400":{"description":"Invalid mint.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Free demo rate limit (20 per minute per client). Honor Retry-After.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/token/trending/preview":{"get":{"operationId":"token_trending_preview","summary":"Free trending preview (top 3 with risk scores)","description":"Free. Call this before paying. The top 3 trending Solana tokens with riskScore, riskLevel, flag count, verdict, liquidity, market cap, age, and pump.fun status. Shares the 60-second cache with the paid feed. Pay for GET /token/trending to get up to 25 tokens with the risk breakdown, momentum, and links.","tags":["free"],"security":[],"parameters":[],"responses":{"200":{"description":"Top 3 trending tokens with risk scores.","content":{"application/json":{"schema":{"type":"object","properties":{"preview":{"type":"boolean"},"tokens":{"type":"array","items":{"type":"object","properties":{"rank":{"type":"integer"},"mint":{"type":"string"},"symbol":{"type":"string"},"riskScore":{"type":"integer"},"riskLevel":{"type":"string","enum":["low","medium","high","unknown"]},"riskFlagCount":{"type":"integer"},"verdict":{"type":"string"},"liquidityUsd":{"type":["number","null"]},"marketCapUsd":{"type":["number","null"]},"ageHours":{"type":["number","null"]},"pump":{"type":"object"}}}},"summaryBlock":{"type":"object"},"timestamps":{"type":"object"},"etag":{"type":"string"},"full":{"type":"string"}}}}}},"502":{"description":"Upstream market data was unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/wallet/preview":{"get":{"operationId":"wallet_preview","summary":"Free wallet preview","description":"Free teaser. Call this before any paid wallet tool. Returns SOL balance, last active time, how many transactions landed in the last 24 hours, and a dormant or recently-active label. Does not spend USDC. Pass one base58 Solana address. Invalid addresses return an error and do not ask for payment. Upgrade to wallet_quick for a copy-trade screen, wallet_profile for priced holdings, or wallet_funding for the first SOL funder and cluster. MCP tool wallet_preview.","tags":["free"],"security":[],"parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string","description":"Solana wallet address in base58 (32 to 44 characters). Invalid addresses return HTTP 400. This route is free."}}],"responses":{"200":{"description":"Wallet preview. May be cached at the edge for a few seconds.","content":{"application/json":{"schema":{"type":"object"},"example":{"address":"HD1ryR3dYSXBVNGfJZydbpmnChiE1wrAQkupWWtHt4pM","solBalance":1.25,"lastActiveAt":"2026-10-23T18:00:00.000Z","recentTxs24h":3,"recentTxs24hCapped":false,"labels":["recently active"],"preview":true,"cached":false,"stale":false,"cacheAgeMs":0}}}},"400":{"description":"Invalid address. No payment.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"502":{"description":"Public Solana RPC was unavailable.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/health":{"get":{"summary":"Liveness, freshness, and SLA","security":[],"description":"Free process check. sla.version is this build. sla.latency is p50 and p95 over a rolling window of non-health requests. sla.upstream is the Solana RPC rate-limit status. sla.cache.ageMs is the age of the oldest live cache entry. The same sla object is copied onto GET /.well-known/x402.","responses":{"200":{"description":"The process is up, with a freshness and SLA snapshot.","content":{"application/json":{"schema":{"type":"object","required":["ok","service","sla"],"properties":{"ok":{"type":"boolean"},"service":{"type":"string"},"networkMode":{"type":"string"},"dataCluster":{"type":"string"},"sla":{"type":"object","required":["version","windowMs","latency","upstream","cache"],"properties":{"version":{"type":"string","examples":["1.1.0"]},"windowMs":{"type":"integer","description":"Rolling window for latency and upstream samples. Default 300000."},"latency":{"type":"object","properties":{"p50Ms":{"type":["integer","null"]},"p95Ms":{"type":["integer","null"]},"samples":{"type":"integer"}}},"upstream":{"type":"object","properties":{"status":{"type":"string","enum":["unknown","ok","rate_limited"]},"rateLimited":{"type":"boolean"},"http429":{"type":"integer","description":"HTTP 429 responses from solana-rpc and helius inside the window."},"lastLimitedAt":{"type":["string","null"],"format":"date-time"},"sources":{"type":"array","items":{"type":"object"}}}},"cache":{"type":"object","properties":{"ageMs":{"type":["integer","null"],"description":"Age of the oldest live cache entry."},"newestAgeMs":{"type":["integer","null"]},"entries":{"type":"integer"},"ttlMs":{"type":["integer","null"]}}}}}}}}}}}}},"/.well-known/x402":{"get":{"summary":"x402 discovery document","description":"Lists only paid resources. Free routes are omitted from resources.","security":[],"responses":{"200":{"description":"Paid endpoints, prices, and facilitator routes."}}}},"/.well-known/agent.json":{"get":{"operationId":"agent_card","summary":"Agent card for discovery","description":"Free machine-readable card. Skills say when an agent should call each tool. No payment.","tags":["free","discovery"],"security":[],"responses":{"200":{"description":"Agent card."}}}},"/.well-known/mcp.json":{"get":{"operationId":"mcp_manifest","summary":"MCP server manifest","description":"Free manifest for the streamable HTTP MCP server, including when to call each tool. No payment.","tags":["free","discovery"],"security":[],"responses":{"200":{"description":"MCP manifest."}}}},"/llms-full.txt":{"get":{"operationId":"llms_full","summary":"Long agent guide","description":"Free plain-text guide: when to call each tool, the trending response fields, and retry guidance. No payment.","tags":["free","discovery"],"security":[],"responses":{"200":{"description":"Long agent guide.","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/llms.txt":{"get":{"summary":"Agent-facing service index","security":[],"responses":{"200":{"description":"Plain-text catalog of paid routes, USDC prices, and free discovery URLs.","content":{"text/plain":{"schema":{"type":"string"}}}}}}}},"components":{"schemas":{"Error":{"type":"object","required":["error","message","retryable"],"properties":{"error":{"type":"string","description":"Stable machine code.","examples":["invalid_address","invalid_tx_limit","invalid_limit","invalid_peers","upstream_failed"]},"message":{"type":"string","description":"What to change. Secrets are redacted."},"retryable":{"type":"boolean","description":"True when a later attempt can succeed. False for validation errors."},"retry":{"type":"object","description":"How to try again. fix_the_query means change the request. retry_later means wait. do_not_retry means the same request will fail.","properties":{"advice":{"type":"string","enum":["fix_the_query","retry_later","do_not_retry"]},"retryAfterMs":{"type":["integer","null"]}}}}},"PaymentRequired":{"type":"object","required":["x402Version","accepts","inputSchema"],"properties":{"x402Version":{"type":"integer","const":2},"error":{"type":"string"},"resource":{"type":"object"},"accepts":{"type":"array","items":{"type":"object","required":["scheme","network","amount","asset","payTo"],"properties":{"scheme":{"type":"string","const":"exact"},"network":{"type":"string"},"amount":{"type":"string","description":"USDC base units. 6 decimals, so 0.01 USDC is \"10000\".","examples":["9000","5000","15000","2000"]},"asset":{"type":"string","description":"USDC mint or contract."},"payTo":{"type":"string"},"maxTimeoutSeconds":{"type":"integer"},"extra":{"type":"object"}}}},"extensions":{"type":"object"},"inputSchema":{"type":"object"}}}}}}