solana-wallet-x402
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.
The wallet the 402 directs payment to. Its whole payment record — every payer, every chain — is on the merchant page.
Asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
The payTo wallet does not resolve to a registered ERC-8004 agent. That is not a verdict on the service — most of the catalog is unregistered.
Live 402 challenge
Captured by the enrichment pass, not read just now. Prices can change — always read the 402 the endpoint answers with.
{
"error": "Payment required",
"accepts": [
{
"asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"extra": {
"memo": "swi:/token/trending",
"feePayer": "CjNFTjvBhbJJd2B5ePPMHRLx1ELZpa8dwQgGL727eKww"
},
"payTo": "HD1ryR3dYSXBVNGfJZydbpmnChiE1wrAQkupWWtHt4pM",
"amount": "5000",
"scheme": "exact",
"network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
"maxTimeoutSeconds": 60
},
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"memo": "swi:/token/trending",
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa30f3C68f2F6067EE5b9d5f651426E44Ea8AdAE9",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 60
}
],
"resource": {
"url": "https://solana-wallet-intel-phi.vercel.app/token/trending",
"tags": [
"solana",
"rug-check",
"trending",
"memecoin",
"risk",
"x402"
],
"mimeType": "application/json",
"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.",
"serviceName": "solana-wallet-x402"
},
"extensions": {
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"limit": "15",
"maxRisk": "high",
"minLiquidity": "15000"
}
},
"output": {
"type": "json",
"example": {
"etag": "c4f0a2e8b91d4c6e8a0b1d2f3a4c5e6d7f8091a2b3c4d5e6f708192a3b4c5d6e",
"tokens": [
{
"pump": {
"status": "not_pump",
"confidence": "high",
"progressPct": null
},
"rank": 1,
"links": {
"pumpfun": null,
"solscan": "https://solscan.io/token/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
"dexscreener": "https://dexscreener.com/solana/bonk"
},
"checks": {
"lp": {
"note": "LP is burned. Burn addresses hold 100% of the LP supply.",
"status": "burned",
"lockedPct": 100,
"confidence": "high"
},
"holders": {
"note": "Top 10 holders control 18% of supply.",
"holderPct": 18,
"confidence": "high",
"top10Share": 0.18
},
"snipers": {
"note": "Snipers and bundled wallets took 4% of supply in the earliest slots.",
"share": 0.04,
"sniperPct": 4,
"confidence": "high"
},
"authorities": {
"note": "Mint authority is revoked. Freeze authority is revoked.",
"confidence": "high",
"mintStatus": "revoked",
"freezeStatus": "revoked",
"mintAuthority": null,
"freezeAuthority": null
}
},
"symbol": "BONK",
"verdict": "Low risk: top 10 hold 18%, authorities are revoked, LP is burned, and snipers took 4%.",
"ageHours": 8000,
"riskFlags": [],
"riskLevel": "low",
"riskScore": 0,
"liquidityUsd": 4200000,
"marketCapUsd": 1800000000,
"volume24hUsd": 18000000
},
{
"pump": {
"status": "bonding",
"confidence": "high",
"progressPct": 42
},
"rank": 2,
"checks": {
"lp": {
"note": "LP is unlocked, so liquidity can be pulled.",
"status": "unlocked",
"lockedPct": 0,
"confidence": "high"
},
"holders": {
"note": "Top 10 holders control 64% of supply.",
"holderPct": 64,
"confidence": "high",
"top10Share": 0.64
},
"snipers": {
"note": "Snipers and bundled wallets took 31% of supply in the earliest slots.",
"share": 0.31,
"sniperPct": 31,
"confidence": "high"
},
"authorities": {
"note": "Mint authority is still active, so the issuer can create more tokens. Freeze authority is revoked.",
"confidence": "high",
"mintStatus": "active",
"freezeStatus": "revoked",
"mintAuthority": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
"freezeAuthority": null
}
},
"symbol": "NEWCOIN",
"verdict": "High risk: top 10 hold 64%, mint authority is live, LP is unlocked, and snipers took 31%.",
"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."
],
"riskLevel": "high",
"riskScore": 100,
"liquidityUsd": 38000,
"marketCapUsd": 90000,
"volume24hUsd": 910000
}
],
"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.",
"timestamps": {
"asOf": "2026-10-24T00:00:00.000Z",
"generatedAt": "2026-10-24T00:00:00.000Z"
},
"summaryBlock": {
"scanned": 2,
"returned": 2,
"topMovers": [
{
"mint": "new",
"rank": 2,
"symbol": "NEWCOIN",
"window": "h24",
"priceChangePct": 140
}
],
"byRiskLevel": {
"low": 1,
"high": 1,
"medium": 0,
"unknown": 0
}
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method"
],
"properties": {
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"type": "object",
"required": [],
"properties": {
"limit": {
"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."
},
"maxRisk": {
"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."
},
"minLiquidity": {
"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."
}
}
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object",
"required": [
"summary",
"tokens"
],
"properties": {
"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."
},
"stale": {
"type": "boolean"
},
"cached": {
"type": "boolean"
},
"tokens": {
"type": "array",
"items": {
"type": "object",
"required": [
"rank",
"symbol",
"riskFlags",
"riskScore",
"riskLevel"
],
"properties": {
"mint": {
"type": "string",
"description": "Token mint address."
},
"name": {
"type": "string"
},
"pump": {
"type": "object",
"properties": {
"status": {
"enum": [
"bonding",
"graduated",
"not_pump",
"unknown"
],
"type": "string"
},
"confidence": {
"enum": [
"high",
"medium",
"low"
],
"type": "string"
},
"progressPct": {
"type": [
"number",
"null"
]
}
}
},
"rank": {
"type": "integer",
"minimum": 1
},
"links": {
"type": "object",
"properties": {
"pumpfun": {
"type": [
"string",
"null"
]
},
"solscan": {
"type": "string"
},
"dexscreener": {
"type": [
"string",
"null"
]
}
}
},
"checks": {
"type": "object",
"properties": {
"lp": {
"type": "object",
"properties": {
"note": {
"type": "string"
},
"status": {
"enum": [
"burned",
"locked",
"unlocked",
"concentrated",
"unknown"
],
"type": "string"
},
"lockedPct": {
"type": [
"number",
"null"
],
"description": "Percent of LP supply burned or locked."
},
"confidence": {
"enum": [
"high",
"medium",
"low"
],
"type": "string"
}
}
},
"holders": {
"type": "object",
"properties": {
"note": {
"type": "string"
},
"holderPct": {
"type": [
"number",
"null"
],
"description": "Top-10 holder share as a percent."
},
"confidence": {
"enum": [
"high",
"medium",
"low"
],
"type": "string"
},
"top10Share": {
"type": [
"number",
"null"
]
}
}
},
"snipers": {
"type": "object",
"properties": {
"note": {
"type": "string"
},
"share": {
"type": [
"number",
"null"
]
},
"sniperPct": {
"type": [
"number",
"null"
]
},
"confidence": {
"enum": [
"high",
"medium",
"low"
],
"type": "string"
}
}
},
"authorities": {
"type": "object",
"properties": {
"note": {
"type": "string"
},
"confidence": {
"enum": [
"high",
"medium",
"low"
],
"type": "string"
},
"mintStatus": {
"enum": [
"active",
"revoked",
"unknown"
],
"type": "string"
},
"freezeStatus": {
"enum": [
"active",
"revoked",
"unknown"
],
"type": "string"
},
"mintAuthority": {
"type": [
"string",
"null"
]
},
"freezeAuthority": {
"type": [
"string",
"null"
]
}
}
}
}
},
"symbol": {
"type": "string"
},
"verdict": {
"type": "string",
"description": "One plain-English line. Heuristic, not a promise that a token is safe."
},
"ageHours": {
"type": [
"number",
"null"
]
},
"momentum": {
"type": "object",
"properties": {
"volumeUsd": {
"type": "object"
},
"confidence": {
"enum": [
"high",
"medium",
"low"
],
"type": "string"
},
"buySellRatio": {
"type": "object"
},
"priceChangePct": {
"type": "object"
},
"holderChangePct": {
"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."
},
"priceUsd": {
"type": [
"number",
"null"
]
},
"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."
},
"riskLevel": {
"enum": [
"low",
"medium",
"high",
"unknown"
],
"type": "string",
"description": "unknown means holder, authority, LP, and sniper checks were all unread. maxRisk leaves unknown tokens out."
},
"riskScore": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "0 is clean, 100 is high risk."
},
"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"
]
},
"riskBreakdown": {
"type": "array",
"items": {
"type": "object"
},
"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."
},
"priceChange24hPct": {
"type": [
"number",
"null"
]
}
}
}
},
"summary": {
"type": "string"
},
"cacheAgeMs": {
"type": "integer"
},
"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."
}
}
},
"summaryBlock": {
"type": "object",
"properties": {
"scanned": {
"type": "integer"
},
"returned": {
"type": "integer"
},
"topMovers": {
"type": "array",
"items": {
"type": "object"
}
},
"byRiskLevel": {
"type": "object"
}
}
}
}
}
}
}
}
}
}
},
"inputSchema": {
"type": "object",
"required": [],
"properties": {
"limit": {
"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."
},
"maxRisk": {
"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."
},
"minLiquidity": {
"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."
}
}
},
"x402Version": 2
}Accepts
The payment requirements as published to the catalog. Read the live 402 before paying — a price here is a claim, not a quote.
That figure is in the token’s smallest units. Roundhouse does not hold this contract’s decimals, so it is shown as published rather than converted.
- Paid to
- HD1ryR…Ht4pM
- Token contract
- EPjFWd…TDt1v
- Payment window
- 1 minute
Pay 0.005 USDC on Base to 0xa30f…AdAE9. The signed payment is good for 1 minute.
- Paid to
- 0xa30f…AdAE9
- USD Coin contract
- 0x8335…02913
- Payment window
- 1 minute
- As published
- 5000 smallest units
The catalog’s raw entry
[
{
"asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"extra": {
"memo": "swi:/token/trending",
"feePayer": "CjNFTjvBhbJJd2B5ePPMHRLx1ELZpa8dwQgGL727eKww",
"recentBlockhash": "3Fzp3mBdE38AVPMdgYPY2yeMtroJQ3RzQaSbg1JBXkiP",
"lastValidBlockHeight": "439791326"
},
"payTo": "HD1ryR3dYSXBVNGfJZydbpmnChiE1wrAQkupWWtHt4pM",
"amount": "5000",
"scheme": "exact",
"network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
"maxTimeoutSeconds": 60
},
{
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"extra": {
"memo": "swi:/token/trending",
"name": "USD Coin",
"version": "2"
},
"payTo": "0xa30f3C68f2F6067EE5b9d5f651426E44Ea8AdAE9",
"amount": "5000",
"scheme": "exact",
"network": "eip155:8453",
"maxTimeoutSeconds": 60
}
]Extensions
{
"bazaar": {
"info": {
"input": {
"type": "http",
"method": "GET",
"queryParams": {
"limit": "15",
"maxRisk": "high",
"minLiquidity": "15000"
}
},
"output": {
"type": "json",
"example": {
"etag": "c4f0a2e8b91d4c6e8a0b1d2f3a4c5e6d7f8091a2b3c4d5e6f708192a3b4c5d6e",
"tokens": [
{
"pump": {
"status": "not_pump",
"confidence": "high",
"progressPct": null
},
"rank": 1,
"links": {
"pumpfun": null,
"solscan": "https://solscan.io/token/DezXAZ8z7PnrnRJjz3wXBoRgixCa6xjnB7YaB1pPB263",
"dexscreener": "https://dexscreener.com/solana/bonk"
},
"checks": {
"lp": {
"note": "LP is burned. Burn addresses hold 100% of the LP supply.",
"status": "burned",
"lockedPct": 100,
"confidence": "high"
},
"holders": {
"note": "Top 10 holders control 18% of supply.",
"holderPct": 18,
"confidence": "high",
"top10Share": 0.18
},
"snipers": {
"note": "Snipers and bundled wallets took 4% of supply in the earliest slots.",
"share": 0.04,
"sniperPct": 4,
"confidence": "high"
},
"authorities": {
"note": "Mint authority is revoked. Freeze authority is revoked.",
"confidence": "high",
"mintStatus": "revoked",
"freezeStatus": "revoked",
"mintAuthority": null,
"freezeAuthority": null
}
},
"symbol": "BONK",
"verdict": "Low risk: top 10 hold 18%, authorities are revoked, LP is burned, and snipers took 4%.",
"ageHours": 8000,
"riskFlags": [],
"riskLevel": "low",
"riskScore": 0,
"liquidityUsd": 4200000,
"marketCapUsd": 1800000000,
"volume24hUsd": 18000000
},
{
"pump": {
"status": "bonding",
"confidence": "high",
"progressPct": 42
},
"rank": 2,
"checks": {
"lp": {
"note": "LP is unlocked, so liquidity can be pulled.",
"status": "unlocked",
"lockedPct": 0,
"confidence": "high"
},
"holders": {
"note": "Top 10 holders control 64% of supply.",
"holderPct": 64,
"confidence": "high",
"top10Share": 0.64
},
"snipers": {
"note": "Snipers and bundled wallets took 31% of supply in the earliest slots.",
"share": 0.31,
"sniperPct": 31,
"confidence": "high"
},
"authorities": {
"note": "Mint authority is still active, so the issuer can create more tokens. Freeze authority is revoked.",
"confidence": "high",
"mintStatus": "active",
"freezeStatus": "revoked",
"mintAuthority": "7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU",
"freezeAuthority": null
}
},
"symbol": "NEWCOIN",
"verdict": "High risk: top 10 hold 64%, mint authority is live, LP is unlocked, and snipers took 31%.",
"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."
],
"riskLevel": "high",
"riskScore": 100,
"liquidityUsd": 38000,
"marketCapUsd": 90000,
"volume24hUsd": 910000
}
],
"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.",
"timestamps": {
"asOf": "2026-10-24T00:00:00.000Z",
"generatedAt": "2026-10-24T00:00:00.000Z"
},
"summaryBlock": {
"scanned": 2,
"returned": 2,
"topMovers": [
{
"mint": "new",
"rank": 2,
"symbol": "NEWCOIN",
"window": "h24",
"priceChangePct": 140
}
],
"byRiskLevel": {
"low": 1,
"high": 1,
"medium": 0,
"unknown": 0
}
}
}
}
},
"schema": {
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"input"
],
"properties": {
"input": {
"type": "object",
"required": [
"type",
"method"
],
"properties": {
"type": {
"type": "string",
"const": "http"
},
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"type": "object",
"required": [],
"properties": {
"limit": {
"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."
},
"maxRisk": {
"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."
},
"minLiquidity": {
"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."
}
}
}
},
"additionalProperties": false
},
"output": {
"type": "object",
"required": [
"type"
],
"properties": {
"type": {
"type": "string"
},
"example": {
"type": "object",
"required": [
"summary",
"tokens"
],
"properties": {
"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."
},
"stale": {
"type": "boolean"
},
"cached": {
"type": "boolean"
},
"tokens": {
"type": "array",
"items": {
"type": "object",
"required": [
"rank",
"symbol",
"riskFlags",
"riskScore",
"riskLevel"
],
"properties": {
"mint": {
"type": "string",
"description": "Token mint address."
},
"name": {
"type": "string"
},
"pump": {
"type": "object",
"properties": {
"status": {
"enum": [
"bonding",
"graduated",
"not_pump",
"unknown"
],
"type": "string"
},
"confidence": {
"enum": [
"high",
"medium",
"low"
],
"type": "string"
},
"progressPct": {
"type": [
"number",
"null"
]
}
}
},
"rank": {
"type": "integer",
"minimum": 1
},
"links": {
"type": "object",
"properties": {
"pumpfun": {
"type": [
"string",
"null"
]
},
"solscan": {
"type": "string"
},
"dexscreener": {
"type": [
"string",
"null"
]
}
}
},
"checks": {
"type": "object",
"properties": {
"lp": {
"type": "object",
"properties": {
"note": {
"type": "string"
},
"status": {
"enum": [
"burned",
"locked",
"unlocked",
"concentrated",
"unknown"
],
"type": "string"
},
"lockedPct": {
"type": [
"number",
"null"
],
"description": "Percent of LP supply burned or locked."
},
"confidence": {
"enum": [
"high",
"medium",
"low"
],
"type": "string"
}
}
},
"holders": {
"type": "object",
"properties": {
"note": {
"type": "string"
},
"holderPct": {
"type": [
"number",
"null"
],
"description": "Top-10 holder share as a percent."
},
"confidence": {
"enum": [
"high",
"medium",
"low"
],
"type": "string"
},
"top10Share": {
"type": [
"number",
"null"
]
}
}
},
"snipers": {
"type": "object",
"properties": {
"note": {
"type": "string"
},
"share": {
"type": [
"number",
"null"
]
},
"sniperPct": {
"type": [
"number",
"null"
]
},
"confidence": {
"enum": [
"high",
"medium",
"low"
],
"type": "string"
}
}
},
"authorities": {
"type": "object",
"properties": {
"note": {
"type": "string"
},
"confidence": {
"enum": [
"high",
"medium",
"low"
],
"type": "string"
},
"mintStatus": {
"enum": [
"active",
"revoked",
"unknown"
],
"type": "string"
},
"freezeStatus": {
"enum": [
"active",
"revoked",
"unknown"
],
"type": "string"
},
"mintAuthority": {
"type": [
"string",
"null"
]
},
"freezeAuthority": {
"type": [
"string",
"null"
]
}
}
}
}
},
"symbol": {
"type": "string"
},
"verdict": {
"type": "string",
"description": "One plain-English line. Heuristic, not a promise that a token is safe."
},
"ageHours": {
"type": [
"number",
"null"
]
},
"momentum": {
"type": "object",
"properties": {
"volumeUsd": {
"type": "object"
},
"confidence": {
"enum": [
"high",
"medium",
"low"
],
"type": "string"
},
"buySellRatio": {
"type": "object"
},
"priceChangePct": {
"type": "object"
},
"holderChangePct": {
"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."
},
"priceUsd": {
"type": [
"number",
"null"
]
},
"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."
},
"riskLevel": {
"enum": [
"low",
"medium",
"high",
"unknown"
],
"type": "string",
"description": "unknown means holder, authority, LP, and sniper checks were all unread. maxRisk leaves unknown tokens out."
},
"riskScore": {
"type": "integer",
"maximum": 100,
"minimum": 0,
"description": "0 is clean, 100 is high risk."
},
"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"
]
},
"riskBreakdown": {
"type": "array",
"items": {
"type": "object"
},
"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."
},
"priceChange24hPct": {
"type": [
"number",
"null"
]
}
}
}
},
"summary": {
"type": "string"
},
"cacheAgeMs": {
"type": "integer"
},
"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."
}
}
},
"summaryBlock": {
"type": "object",
"properties": {
"scanned": {
"type": "integer"
},
"returned": {
"type": "integer"
},
"topMovers": {
"type": "array",
"items": {
"type": "object"
}
},
"byRiskLevel": {
"type": "object"
}
}
}
}
}
}
}
}
}
}
}Provenance
- Seen in the source catalog
- 2026-10-26 18:22Z
- Last indexed by Roundhouse
- 2026-10-26 20:20Z
- Last enriched (probe, favicon, geo)
- 2026-10-24 22:46Z
- x402 version
- 2
- Max timeout
- 60s
- Liveness probe
- HTTP 402
Hand this page to an agent
Copy the prompt and paste it into Claude, an MCP client or your own agent — it will vet this service and call it over the free read API. No key, no account.
GET api.roundhouseai.io/v0/endpoints
No per-endpoint history for this service yet, so this is payments indexed to its PROVIDER's wallet over 30 days. Verified volume counts only settlements with an on-chain EIP-3009 marker.
Show the promptHide the prompt
Using Roundhouse, look up the x402 service solana-wallet-x402 and tell me whether it is worth paying: what a call costs, whether the endpoint answered when last probed, and what its payment record actually shows. curl -s 'https://api.roundhouseai.io/v0/endpoints?q=solana-wallet-x402' curl -s 'https://api.roundhouseai.io/v0/merchants/<the payTo wallet returned above>' Then call it: read the price from the live 402 at https://solana-wallet-intel-phi.vercel.app/token/trending, never from a cached figure, and pay with an x402 client. The /v0 API needs an API key (`authorization: Bearer rh_live_…`) on everything except /v0/unified* and /v0/endpoints. Either pay over x402 (mint a personal key for $0.01 at GET https://api.roundhouseai.io/v0/test/x402), or ask me for an organization key, which I create at https://roundhouseai.io/dashboard/connections. If you have neither, ask before going further. If you do not have Roundhouse tools or skills installed, read https://roundhouseai.io/skill.md first — it is the whole procedure.