Skip to main content

In the app

Sign in with an EVM wallet (MetaMask, Rabby and others) or pick Robinhood when you sign up with email, and your account runs on Robinhood Chain.

Fund in ETH or USDG

ETH pays gas. Choose ETH or USDG as your Base Token for new positions. With USDG, Keep ETH tops up your gas automatically.

Uniswap V3 and V4

Zap in from ETH or USDG, pick a range, and close back into the currency you opened with.

Tokenized stocks

The Stocks filter shows pools holding Robinhood-issued stock tokens, matched by contract address.

Copy LP with guards

Hooked V4 pools are only copied if you allow them, fast flippers get a warning, and leaders whose profit doesn’t come from fees are switched off.
Things that differ from Solana:
  • Positions are identified by their Uniswap token ID, shown as #1234567.
  • Every copy keeps back a little ETH (at least 0.001 ETH) to pay for its own exit. WETH does not pay gas.
  • An automatic copy is skipped as Too small for gas when gas to open and close it would be more than 3% of its size. We suggest copying with at least 0.08 ETH of net worth. See Copy LP on Robinhood Chain.
  • Claim SOL, Fund protection and compound are Solana only.
The rest of this page is for developers using the API.

Overview

LP Agent indexes Uniswap V3 and Uniswap V4 liquidity on Robinhood Chain, an EVM network. The public API serves that data through the same endpoints you already use for Solana: you select the network with a chain query parameter.
chain defaults to SOL. Every existing integration keeps working untouched: you only pass chain=ROBINHOOD on the requests where you want Robinhood data.

Selecting a chain

An unrecognised chain value falls back to SOL rather than returning an error, so a typo produces Solana data, not a 400. Check the value you send.

Endpoint support

/pools/{poolId}/positions needs chain=ROBINHOOD for a Robinhood pool. On Robinhood its positionState is always empty and activeBin is omitted, since both are Meteora DLMM bin data, and platform is ignored in favour of the pool’s own protocol./pools/{poolId}/onchain-stats and /pools/{poolId}/top-lpers accept chain and platform like the other endpoints. chain is optional there: a Uniswap V3 pool address or Uniswap V4 pool ID (the 32-byte 0x hash) is treated as Robinhood when you leave it out. Either ID works in any letter case.
These endpoints have no Robinhood Chain equivalent today. They either read Solana-specific pool state or build and land Solana transactions through Jito bundles, which has no EVM counterpart.

Response differences to expect

Robinhood responses use the same envelope as Solana, but a few fields carry different conventions. Handle these explicitly rather than assuming Solana shapes.
A Robinhood position ID is the Uniswap V3 position-manager address and the NFT token ID, joined by a hyphen: 0x1234…abcd-5678. The API also accepts the fully qualified robinhood:0x1234…abcd-5678 form.Because that shape is self-identifying, GET /lp-positions/position resolves the chain from the ID when you omit chain. Solana position IDs stay base58 mint addresses.
GET /token/balance returns the native ETH balance under the wrapped native token address, not the zero address. On Solana, native SOL appears under the wrapped SOL mint and the response is additionally filtered to holdings worth more than $0.02; the Robinhood response applies no such dust filter.
GET /pools/discover?chain=ROBINHOOD filters by these quote tokens:Pass the symbol (quote_token=USDG), not the address.
GET /pools/discover?chain=ROBINHOOD differs from Solana in a few ways:
  • min_bin_step, max_bin_step, min_organic_score and max_organic_score are Solana concepts and are ignored.
  • Browsing hides pools under $5,000 liquidity. Pass min_liquidity, show_small_pools=true or search to see them.
  • Browsing also hides pools that claim at least 50,000TVLonunder50,000 TVL on under 500 of 24h volume, the signature of TVL painted by a single-sided deposit. search skips this.
  • category=stock narrows to pools holding a tokenized stock from Robinhood’s on-chain asset registry.
  • search matches 0x addresses and Uniswap V4 pool IDs in any letter case.
GET /lp-positions/logs returns economic events only. On Solana, open and close rows are metadata and are dropped. On Robinhood, close and collectGross are dropped (collectGross is the raw Uniswap Collect payout, which the API splits into separate decrease and fee rows), while open is kept because Uniswap V3 records the initial deposit there. Logs are capped at 200 rows per position.
Endpoints that take a platform parameter default to every protocol served on the requested chain: meteora,meteora_damm_v2 on SOL, uniswap_v3,uniswap_v4 on ROBINHOOD. Pass it to narrow the result. The older names protocol (overview, revenue) and type (discover) are still accepted.

Known limitations

PnL for Robinhood positions is incomplete. Treat the fields below as indicative, not settled accounting, and reconcile against on-chain data for anything financial.
  • Swap legs are outside the ledger. Position PnL measures the liquidity leg only. The swaps that enter and exit a position (up to four per cycle) are not booked into it, and their cost is material relative to typical LP gains.
  • Open positions do not carry a live value. The stored current value of an open position is not continuously refreshed, so any PnL derived from it is unreliable while the position is open. Use GET /lp-positions/position for a live read.
  • Reconciled PnL is not yet applied on Robinhood. The audit pass that corrects Solana position PnL does not currently reach Robinhood rows, so Robinhood values are the raw ledger figures.
Closed-position and realised-fee figures are the most reliable Robinhood numbers today.