Find the DEX pools a tokenized US stock is a member of, on Robinhood Chain, Base, BNB Chai
Find the DEX pools a tokenized US stock is a member of, on Robinhood Chain, Base, BNB Chain or Solana. Returns pool id (v4 ids kept distinct from v3 addresses), DEX, the side the stock is on, the counterpart with an evidence-backed class, reported USD liquidity, 24h volume and pool age. Membership discovery only: a provider-covered read, not a census; no APR, no execution; a return is the stock's only where it is the base token. $0.001 per call.
1000 (raw units)
price
2
calls / 30d
2
unique payers
2026-09-07
updated
Provider
x402.ottoai.services · discovered, not yet claimed by its owner
Payment (x402 accepts[])
[
{
"scheme": "exact",
"network": "eip155:8453",
"payTo": "0x0E84dDEdAaE6A779c462C22a59F301EC31B6b808",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "1000",
"maxTimeoutSeconds": 300
},
{
"scheme": "exact",
"network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
"payTo": "6XcSfqJHr9vNW2vbiRaMqUYVm7shDgLepca54wUTDPN5",
"asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"amount": "1000",
"maxTimeoutSeconds": 300
}
]Output schema
{
"bazaar": {
"info": {
"input": {
"method": "GET",
"queryParams": {
"stock": "robinhood:MU"
},
"type": "http"
},
"output": {
"example": {
"data": {
"coverage": {
"cap": 10,
"complete": false,
"degradedSources": [],
"eligible": 1,
"limitations": [
"Provider-covered observation, not a complete census of this token’s pool..."
],
"returned": 1,
"sources": [
"geckoterminal"
]
},
"generatedAt": "2026-09-06T07:14:11.320Z",
"pools": [
{
"counterpartClass": "unclassified",
"counterpartClassBasis": "no_evidence",
"counterpartToken": {
"address": "0xd9db30bb0d2b8d2eae3826a1372117e058791e18",
"symbol": "MOO"
},
"dex": "bankr-robinhood",
"dexVersion": null,
"hook": {
"address": null,
"status": "unknown"
},
"liquidityUsd": 3216427.2018,
"network": "robinhood",
"pairLabel": "MOO / MU",
"pairPriceChange24hPct": 1.42,
"pairPriceChangeAppliesTo": {
"address": "0xd9db30bb0d2b8d2eae3826a1372117e058791e18",
"symbol": "MOO"
},
"poolCreatedAt": "2026-07-20T18:35:02Z",
"poolId": {
"kind": "v4_pool_id",
"value": "0xc3cc877a8a7d28efdb5dbec9ae71724652431e6411aa1a9fc8928028da554aa1"
},
"poolUrl": "https://www.geckoterminal.com/robinhood/pools/0xc3cc877a8a7d28efdb5dbec9...",
"source": "geckoterminal",
"stockPriceChange24hPct": null,
"stockPriceChangeUnavailableReason": "stock_is_quote_side",
"stockSide": "quote",
"stockToken": {
"address": "0xff080c8ce2e5feadaca0da81314ae59d232d4afd",
"symbol": "MU"
},
"txns24h": 3576,
"txns24hBasis": "provider_base_token_orientation",
"volume24hUsd": 3737988.36338816
}
],
"providerObservedAt": null,
"rankedBy": "liquidity_usd_desc",
"retrievedAt": "2026-09-06T07:14:11.058Z",
"stock": {
"address": "0xff080c8ce2e5feadaca0da81314ae59d232d4afd",
"network": "robinhood",
"underlying": "MU",
"venue": "robinhood",
"verificationBasis": "stocks_venue_registry:robinhood:MU",
"verified": true
}
},
"meta": {
"degraded": false,
"generatedAt": "",
"stalenessSec": 0,
"validUntil": ""
},
"status": "success"
},
"type": "json"
}
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"input": {
"additionalProperties": false,
"properties": {
"method": {
"enum": [
"GET"
],
"type": "string"
},
"queryParams": {
"properties": {
"stock": {
"description": "Network-qualified stock identity: \"<network>:<TICKER>\" or \"<network>:<token address>\" where network is robinhood, base, bsc or solana (e.g. robinhood:MU). A bare ticker is rejected — the same ticker is tokenized on several chains. A ticker that names two deployments on ONE chain (eight Solana tickers exist on both xStocks and Backpack) is also rejected: give the token address.",
"type": "string"
}
},
"required": [
"stock"
],
"type": "object"
},
"type": {
"const": "http",
"type": "string"
}
},
"required": [
"type",
"method"
],
"type": "object"
},
"output": {
"properties": {
"example": {
"properties": {
"data": {},
"meta": {
"type": "object"
},
"reason": {
"description": "status=unavailable only; every >=400 is UNCHARGED",
"type": "string"
},
"status": {
"enum": [
"success",
"unavailable"
],
"type": "string"
}
},
"required": [
"status"
],
"type": "object"
},
"type": {
"type": "string"
}
},
"required": [
"type"
],
"type": "object"
}
},
"required": [
"input"
],
"type": "object"
}
},
"builder-code": {
"info": {
"a": "bc_hc2dhq09"
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"additionalProperties": false,
"properties": {
"a": {
"description": "App builder code",
"pattern": "^[a-z0-9_]{1,32}$",
"type": "string"
},
"s": {
"description": "Service builder codes",
"items": {
"pattern": "^[a-z0-9_]{1,32}$",
"type": "string"
},
"type": "array"
},
"w": {
"description": "Wallet builder code",
"pattern": "^[a-z0-9_]{1,32}$",
"type": "string"
}
},
"type": "object"
}
},
"offer-receipt": {
"info": {
"offers": [
{
"acceptIndex": 0,
"format": "eip712",
"payload": {
"amount": "1000",
"asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"network": "eip155:8453",
"payTo": "0x0E84dDEdAaE6A779c462C22a59F301EC31B6b808",
"resourceUrl": "https://x402.ottoai.services/stock-pools",
"scheme": "exact",
"validUntil": 1788792112,
"version": 1
},
"signature": "0x354b00a5dadaf6c12056ebd17e03ded8962846a873827430d74ad671c9a6b13254ed6327c3b4a1641aafbe6251532556142b35d84c61f80ea7f4eb6373fbd3ba1c"
},
{
"acceptIndex": 1,
"format": "eip712",
"payload": {
"amount": "1000",
"asset": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"network": "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp",
"payTo": "6XcSfqJHr9vNW2vbiRaMqUYVm7shDgLepca54wUTDPN5",
"resourceUrl": "https://x402.ottoai.services/stock-pools",
"scheme": "exact",
"validUntil": 1788792112,
"version": 1
},
"signature": "0x769ad3050c43fa1c74cc4ce0ec4f2db03506850cd78208b2d57c22d48eec01ca3f64463a36f7c51577e8f99a35b64bd4f298c96c910d9d06ce7ec2bfd4eab94b1b"
}
]
},
"schema": {
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"offers": {
"items": {
"properties": {
"acceptIndex": {
"type": "integer"
},
"format": {
"type": "string"
},
"payload": {
"properties": {
"amount": {
"type": "string"
},
"asset": {
"type": "string"
},
"network": {
"type": "string"
},
"payTo": {
"type": "string"
},
"resourceUrl": {
"type": "string"
},
"scheme": {
"type": "string"
},
"validUntil": {
"type": "integer"
},
"version": {
"type": "integer"
}
},
"required": [
"version",
"resourceUrl",
"scheme",
"network",
"asset",
"payTo",
"amount"
],
"type": "object"
},
"signature": {
"type": "string"
}
},
"required": [
"format",
"signature"
],
"type": "object"
},
"type": "array"
}
},
"required": [
"offers"
],
"type": "object"
}
},
"otto-content-receipt": {}
}Use it
curl
curl "https://x402.ottoai.services/stock-pools" # -> 402 Payment Required, accepts[] lists how to pay # retry with a PAYMENT-SIGNATURE (or PAYMENT header) once paid
JavaScript
const res = await fetch("https://x402.ottoai.services/stock-pools");
if (res.status === 402) {
const { accepts } = await res.json();
// pay one of accepts[] via an x402 client, then retry with the payment header
}Python
import httpx
res = httpx.get("https://x402.ottoai.services/stock-pools")
if res.status_code == 402:
accepts = res.json()["accepts"]
# pay one of accepts[] via an x402 client, then retry with the payment headerMachine-readable
Everything on this page is also available as clean JSON at /resources/195.json, and this resource appears in /discovery/resources and /discovery/search.