# Otto AI Stock DEX Pool Membership

> Otto AI Stock DEX Pool Membership is a paid API for AI agents from x402.ottoai.services, paid per call via x402, $0.001/call, status unknown (last checked 2026-09-13).

Returns all DEX liquidity pools on Robinhood Chain, Base, BNB Chain, or Solana that contain a specified tokenized US stock, including pool ID, DEX name, stock side, counterpart token class, USD liquidity, 24h volume, and pool age.

## Facts

- Endpoint: GET https://x402.ottoai.services/stock-pools
- Price: $0.001/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/otto-ai-stock-dex-pool-membership-84b9fb91
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_K2rBscvVAqDCWCsZSCtPD

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability otto-ai-stock-dex-pool-membership-84b9fb91
```

Example prompt: Which DEX pools is the tokenized MU stock a member of on Robinhood Chain? I want to see the pool IDs, which DEX, the counterpart tokens, reported USD liquidity, and 24-hour volume.

## When to prefer this

Use this endpoint when you need to discover which DEX liquidity pools a tokenized US stock participates in across Robinhood Chain, Base, BNB, or Solana — especially when you want pool metadata (ID, DEX, liquidity, volume, age) rather than swap execution or yield rates. Prefer this over generic DEX aggregators when the target is specifically a tokenized real-world stock asset and you need chain-specific, evidence-backed counterpart classification.

## Known failure modes

- Bare ticker without network prefix is rejected — must use format '<network>:<TICKER>'
- Ambiguous ticker on a single chain (e.g. eight Solana tickers exist on both xStocks and Backpack) is rejected; must supply token address
- Unsupported network name returns an error
- No pools found returns status 'unavailable' with a reason string and no charge
- Stock token not found on the specified network returns 'unavailable'

## How this service works

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.

## Output

A list of DEX pools in which the queried tokenized stock participates, each entry including pool ID (v4 IDs and v3 addresses kept distinct), DEX name, which side of the pool the stock occupies, the counterpart token with an evidence-backed asset class label, reported USD liquidity, 24-hour volume, and pool age. Returns only pools where the stock is the base token. Returns status 'unavailable' (uncharged) on any error or when no data is found.

## Request schema (JSON Schema)

```json
{
 "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": [
      "stock"
     ],
     "properties": {
      "stock": {
       "type": "string",
       "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."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "status"
     ],
     "properties": {
      "data": {},
      "meta": {
       "type": "object"
      },
      "reason": {
       "type": "string",
       "description": "status=unavailable only; every >=400 is UNCHARGED"
      },
      "status": {
       "enum": [
        "success",
        "unavailable"
       ],
       "type": "string"
      }
     }
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "data": {
   "pools": [
    {
     "dex": "bankr-robinhood",
     "hook": {
      "status": "unknown",
      "address": null
     },
     "poolId": {
      "kind": "v4_pool_id",
      "value": "0xc3cc877a8a7d28efdb5dbec9ae71724652431e6411aa1a9fc8928028da554aa1"
     },
     "source": "geckoterminal",
     "network": "robinhood",
     "poolUrl": "https://www.geckoterminal.com/robinhood/pools/0xc3cc877a8a7d28efdb5dbec9...",
     "txns24h": 3576,
     "pairLabel": "MOO / MU",
     "stockSide": "quote",
     "dexVersion": null,
     "stockToken": {
      "symbol": "MU",
      "address": "0xff080c8ce2e5feadaca0da81314ae59d232d4afd"
     },
     "liquidityUsd": 3216427.2018,
     "txns24hBasis": "provider_base_token_orientation",
     "volume24hUsd": 3737988.36338816,
     "poolCreatedAt": "2026-07-20T18:35:02Z",
     "counterpartClass": "unclassified",
     "counterpartToken": {
      "symbol": "MOO",
      "address": "0xd9db30bb0d2b8d2eae3826a1372117e058791e18"
     },
     "counterpartClassBasis": "no_evidence",
     "pairPriceChange24hPct": 1.42,
     "stockPriceChange24hPct": null,
     "pairPriceChangeAppliesTo": {
      "symbol": "MOO",
      "address": "0xd9db30bb0d2b8d2eae3826a1372117e058791e18"
     },
     "stockPriceChangeUnavailableReason": "stock_is_quote_side"
    }
   ],
   "stock": {
    "venue": "robinhood",
    "address": "0xff080c8ce2e5feadaca0da81314ae59d232d4afd",
    "network": "robinhood",
    "verified": true,
    "underlying": "MU",
    "verificationBasis": "stocks_venue_registry:robinhood:MU"
   },
   "coverage": {
    "cap": 10,
    "sources": [
     "geckoterminal"
    ],
    "complete": false,
    "eligible": 1,
    "returned": 1,
    "limitations": [
     "Provider-covered observation, not a complete census of this token’s pool..."
    ],
    "degradedSources": []
   },
   "rankedBy": "liquidity_usd_desc",
   "generatedAt": "2026-09-06T07:14:11.320Z",
   "retrievedAt": "2026-09-06T07:14:11.058Z",
   "providerObservedAt": null
  },
  "meta": {
   "degraded": false,
   "validUntil": "",
   "generatedAt": "",
   "stalenessSec": 0
  },
  "status": "success"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/otto-ai-stock-dex-pool-membership-84b9fb91/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402.ottoai.services](https://www.zero.xyz/host/x402.ottoai.services/llms.txt)
