# Tokens.xyz (/docs/nodes/data/tokensxyz)

Canonical Solana asset registry with curated RWA, stock, and currency lists, per-mint variants, and batch price snapshots.



The Tokens.xyz node queries the [Tokens.xyz Assets API](https://docs.tokens.xyz), a canonical asset registry for Solana. Where a token index gives you one row per mint, Tokens.xyz groups every on-chain variant of an asset under one canonical id: `tesla` is one asset with TSLAx (xStocks), TSLAon (Ondo), and every other tokenized-Tesla mint as variants, each carrying a liquidity tier, a trust tier, and market stats. That makes it the answer to "which mint is the real X" (the exact question tokenized stocks and RWAs make hard), plus a source of curated universes (majors, LSTs, currencies, RWAs, ETFs, metals, tokenized stocks) with verified mints and prices.

No API key is needed: Tokens.xyz access is included with Solaris AI. Unknown mints resolve as `solana-<mint>` singleton assets rather than errors.

Operations [#operations]

Lookup [#lookup]

**`searchAssets`**: find canonical assets by name or symbol (`tesla`, `usdy`, `gold`). Start here when a workflow has a name and needs an assetId or mint. Returns ranked asset rows with the primary variant mint per asset.

**`resolveAsset`**: turn one reference (a symbol, an alias, a canonical id, or a raw mint address) into its canonical asset and primary variant. A mint-shaped input resolves exactly; anything else resolves by name. Use this to normalize upstream data (e.g. a mint from a wallet feed) into a stable asset identity.

**`getAsset`**: full detail for one asset: price, market cap, and the primary variant. Optional `include` facets fold in `profile` (metadata), `risk` (the risk summary; there is no separate risk operation), `ohlcv`, and `markets`.

**`getVariants`**: every on-chain mint of an asset with kind (`tokenized_equity`, `stablecoin`, `lst`, ...), liquidity tier, and trust tier. This is the due-diligence view: when five mints all claim to be SpaceX, the tiers say which one actually trades.

Catalog [#catalog]

**`getCuratedList`**: a curated universe with verified mints and prices: `rwas` (treasuries, bond ETFs, wrapped yield), `stocks` (tokenized equities), `currencies` (stablecoins), `lsts`, `metals`, `etfs`, `majors`, or `all`. Responses are paginated (`limit` defaults to 100, max 500; `offset` for later pages) so large lists never blow past the engine's output ceiling. The optional `primaryVariantStrategy` picks how each asset's primary mint is chosen: `liquidity` (default), `execution_quality`, or `stock_redeemability`.

**`getTrending`**: assets trending by market activity right now.

**`getMarketSnapshots`**: batch price / liquidity / volume snapshot for up to 50 mints in one POST: the batch pricing primitive for portfolio workflows. Pass mints comma-separated; templates from upstream nodes work.

Output [#output]

Every operation returns `{ success, operation, ...echoed inputs, data }` under the node's response name (default `tokensXyzResponse`). List operations put asset rows in `data`; each row carries `assetId`, `symbol`, `category`, `stats.price`, and `primaryVariant.mint` with its tiers.

Notes [#notes]

* The node is read-only; it never trades. Pair it with [Jupiter](/docs/nodes/defi/jupiter) for execution.
* For OHLCV charting use [Birdeye](/docs/nodes/data/birdeye), [GMGN](/docs/nodes/data/gmgn), or [CoinGecko](/docs/nodes/data/coingecko); Tokens.xyz's differentiator is identity and catalogs, not candles.
* Copilot's portfolio rebalancers ground their asset picks in this same curated catalog. See [Portfolio rebalancers from one sentence](/docs/copilot#portfolio-rebalancers-from-one-sentence).
