Read-only market data: tokens, stocks, Hyperliquid perps, Polymarket, and public trader books.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Browse or filter the Discover index across spot tokens, tokenised stocks, perps and prediction markets; each row carries its venues, chains, outcomes and 24h stats. Filter by kind, venue, chain, class, tag or feed; sort by volume_24h, change_24h, market_cap, trending, ends_soon and more; page with cursor. For movers use kind=perp: spot change_24h is noise from illiquid pools unless filtered by liquidity. Prediction rows carry every outcome, so keep limit small (<=5).
Text query; omit to browse.
Comma-separated Polymarket tag slugs (see discover_categories), e.g. politics.
Only one screener feed's members: trending, new or crypto.
Comma-separated: spot, tokenised_stock, perp, prediction.
volume_24h, change_24h, market_cap, new, trending, relevance, ends_soon or name.
Comma-separated chains, e.g. ethereum, solana, base.
Comma-separated asset classes: crypto, tradfi, prediction.
1-100 (default 25).
asc or desc.
Comma-separated venues, e.g. hyperliquid, polymarket.
`next_cursor` from the previous page, same filters and sort.
Prediction rows: top N outcomes by price, 1-50. Priceless drop first.
USD floor, >= 0: pool liquidity (spot, stock, prediction) or open interest (perp). Rows without the figure are dropped.
USD floor on 24h volume, >= 0. Rows without one are dropped.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http markets https://gateway.syndicate.trade/mcp
Browse or filter the Discover index across spot tokens, tokenised stocks, perps and prediction markets; each row carries its venues, chains, outcomes and 24h stats. Filter by kind, venue, chain, class, tag or feed; sort by volume_24h, change_24h, market_cap, trending, ends_soon and more; page with cursor. For movers use kind=perp: spot change_24h is noise from illiquid pools unless filtered by liquidity. Prediction rows carry every outcome, so keep limit small (<=5).
| Argument | Type | Description |
|---|---|---|
| q | string | null | Text query; omit to browse. |
| tag | string | null | Comma-separated Polymarket tag slugs (see discover_categories), e.g. politics. |
| feed | string | null | Only one screener feed's members: trending, new or crypto. |
| kind | string | null | Comma-separated: spot, tokenised_stock, perp, prediction. |
| sort | string | null | volume_24h, change_24h, market_cap, new, trending, relevance, ends_soon or name. |
| chain | string | null | Comma-separated chains, e.g. ethereum, solana, base. |
| class | string | null | Comma-separated asset classes: crypto, tradfi, prediction. |
| limit | integer | null | 1-100 (default 25). |
| order | string | null | asc or desc. |
| venue | string | null | Comma-separated venues, e.g. hyperliquid, polymarket. |
| cursor | string | null | `next_cursor` from the previous page, same filters and sort. |
| max_outcomes | integer | null | Prediction rows: top N outcomes by price, 1-50. Priceless drop first. |
| min_liquidity_usd | number | null | USD floor, >= 0: pool liquidity (spot, stock, prediction) or open interest (perp). Rows without the figure are dropped. |
| min_volume_24h_usd | number | null | USD floor on 24h volume, >= 0. Rows without one are dropped. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"q": {
"type": [
"string",
"null"
],
"description": "Text query; omit to browse."
},
"tag": {
"type": [
"string",
"null"
],
"description": "Comma-separated Polymarket tag slugs (see discover_categories), e.g. politics."
},
"feed": {
"type": [
"string",
"null"
],
"description": "Only one screener feed's members: trending, new or crypto."
},
"kind": {
"type": [
"string",
"null"
],
"description": "Comma-separated: spot, tokenised_stock, perp, prediction."
},
"sort": {
"type": [
"string",
"null"
],
"description": "volume_24h, change_24h, market_cap, new, trending, relevance, ends_soon or name."
},
"chain": {
"type": [
"string",
"null"
],
"description": "Comma-separated chains, e.g. ethereum, solana, base."
},
"class": {
"type": [
"string",
"null"
],
"description": "Comma-separated asset classes: crypto, tradfi, prediction."
},
"limit": {
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0,
"description": "1-100 (default 25)."
},
"order": {
"type": [
"string",
"null"
],
"description": "asc or desc."
},
"venue": {
"type": [
"string",
"null"
],
"description": "Comma-separated venues, e.g. hyperliquid, polymarket."
},
"cursor": {
"type": [
"string",
"null"
],
"description": "`next_cursor` from the previous page, same filters and sort."
},
"max_outcomes": {
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0,
"description": "Prediction rows: top N outcomes by price, 1-50. Priceless drop first."
},
"min_liquidity_usd": {
"type": [
"number",
"null"
],
"format": "double",
"description": "USD floor, >= 0: pool liquidity (spot, stock, prediction) or open interest (perp).\nRows without the figure are dropped."
},
"min_volume_24h_usd": {
"type": [
"number",
"null"
],
"format": "double",
"description": "USD floor on 24h volume, >= 0. Rows without one are dropped."
}
}
}List the Discover categories (prediction-market tags and their slugs) usable as discover's `tag` filter.
No arguments.
{
"type": "object",
"properties": {}
}Hyperliquid perp candles for one coin as parallel arrays t/o/h/l/c/v. `coin` is the bare Hyperliquid coin (BTC, not BTC-PERP; HIP-3 coins are dex-prefixed, e.g. xyz:NVDA). `interval` sets the bar size (default 1h). `from`/`to` are unix MILLISECONDS (default the last 7 days); returned `t` is unix seconds.
| Argument | Type | Description |
|---|---|---|
| to | integer | null | Window end, unix MILLISECONDS, not seconds (default now). |
| coin* | string | Bare Hyperliquid coin (BTC, kPEPE) or Discover's perp id (BTC-PERP); HIP-3 coins are dex-prefixed, e.g. xyz:NVDA. |
| from | integer | null | Window start, unix MILLISECONDS, not seconds (default 7 days before `to`). |
| interval | string | null | e.g. 1m, 15m, 1h, 4h, 1d. Default 1h. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"coin"
],
"properties": {
"to": {
"type": [
"integer",
"null"
],
"format": "int64",
"description": "Window end, unix MILLISECONDS, not seconds (default now)."
},
"coin": {
"type": "string",
"writeOnly": true,
"description": "Bare Hyperliquid coin (BTC, kPEPE) or Discover's perp id (BTC-PERP);\nHIP-3 coins are dex-prefixed, e.g. xyz:NVDA."
},
"from": {
"type": [
"integer",
"null"
],
"format": "int64",
"description": "Window start, unix MILLISECONDS, not seconds (default 7 days before `to`)."
},
"interval": {
"type": [
"string",
"null"
],
"description": "e.g. 1m, 15m, 1h, 4h, 1d. Default 1h."
}
}
}One Polymarket event (all its outcomes) by event slug, event id, market slug or condition_id: each outcome's price, bid/ask and price history, plus live game state for sports. Prices are YES probabilities 0..1. `interval` is the history's lookback window (1h, 6h, 1d, 1w, 1m, max), not a bar size; keep it short (default 1d) on many-outcome events.
| Argument | Type | Description |
|---|---|---|
| key* | string | Event slug, Gamma event id, market slug or condition id. |
| interval | any | Price-history window (default 1d). |
| include_no_history | boolean | Add binary outcomes' NO-side series (default false). It is always `1 - p` of `history`, so it only doubles the payload. |
{
"type": "object",
"$defs": {
"ChartWindow": {
"enum": [
"1h",
"6h",
"1d",
"1w",
"1m",
"max"
],
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"writeOnly": true,
"description": "Event slug, Gamma event id, market slug or condition id."
},
"interval": {
"anyOf": [
{
"$ref": "#/$defs/ChartWindow"
},
{
"type": "null"
}
],
"description": "Price-history window (default 1d)."
},
"include_no_history": {
"type": "boolean",
"default": false,
"description": "Add binary outcomes' NO-side series (default false). It is always\n`1 - p` of `history`, so it only doubles the payload."
}
}
}One syndicate by id: its public page (name, pitch, operators, terms, members) under `syndicate` and its book (holdings, closed positions, balance curve) under `book`.
| Argument | Type | Description |
|---|---|---|
| id* | string | Syndicate id (UUID), from list_syndicates. |
| sort | any | Order of the book's holdings and closed positions (default newest). |
| limit | integer | null | Caps holdings and closed positions each, 1-1000. |
| include | string | null | Same `include` as a trader book: comma-separated section names, omitted = all. Passed only on the book request. |
| include_dust | boolean | null | Include dust-sized holdings (default false). |
{
"type": "object",
"$defs": {
"BookSort": {
"enum": [
"newest",
"oldest",
"highest",
"lowest"
],
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"id"
],
"properties": {
"id": {
"type": "string",
"writeOnly": true,
"description": "Syndicate id (UUID), from list_syndicates."
},
"sort": {
"anyOf": [
{
"$ref": "#/$defs/BookSort"
},
{
"type": "null"
}
],
"description": "Order of the book's holdings and closed positions (default newest)."
},
"limit": {
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0,
"description": "Caps holdings and closed positions each, 1-1000."
},
"include": {
"type": [
"string",
"null"
],
"description": "Same `include` as a trader book: comma-separated section names,\nomitted = all. Passed only on the book request."
},
"include_dust": {
"type": [
"boolean",
"null"
],
"description": "Include dust-sized holdings (default false)."
}
}
}One token by chain and contract address: identity, mark price, liquidity and listings under `token`; per-window price change and 24h trading activity (volume, buys, sells, traders) under `stats`.
| Argument | Type | Description |
|---|---|---|
| chain* | string | Chain slug, e.g. ethereum, base, solana, robinhood. |
| address* | string | Token contract address (0x… on EVM, base58 mint on Solana). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"chain",
"address"
],
"properties": {
"chain": {
"type": "string",
"writeOnly": true,
"description": "Chain slug, e.g. ethereum, base, solana, robinhood."
},
"address": {
"type": "string",
"writeOnly": true,
"description": "Token contract address (0x… on EVM, base58 mint on Solana)."
}
}
}OHLCV candles for one token by chain slug and contract address. `tf` sets the resolution; `from`/`to` are unix SECONDS. Always pass tf and from: with no window the answer runs to over a thousand bars. Use a coarse tf (60, 1D) for long windows.
| Argument | Type | Description |
|---|---|---|
| tf | string | null | Resolution: 1S, 5S, 1, 5, 15, 60, 240 (minutes) or 1D. Default 1. |
| to | integer | null | Window end, unix seconds (default now). |
| from | integer | null | Window start, unix seconds. |
| chain* | string | Chain slug, e.g. ethereum, base, solana, robinhood. |
| address* | string | Token contract address (0x… on EVM, base58 mint on Solana). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"chain",
"address"
],
"properties": {
"tf": {
"type": [
"string",
"null"
],
"description": "Resolution: 1S, 5S, 1, 5, 15, 60, 240 (minutes) or 1D. Default 1."
},
"to": {
"type": [
"integer",
"null"
],
"format": "int64",
"description": "Window end, unix seconds (default now)."
},
"from": {
"type": [
"integer",
"null"
],
"format": "int64",
"description": "Window start, unix seconds."
},
"chain": {
"type": "string",
"writeOnly": true,
"description": "Chain slug, e.g. ethereum, base, solana, robinhood."
},
"address": {
"type": "string",
"writeOnly": true,
"description": "Token contract address (0x… on EVM, base58 mint on Solana)."
}
}
}A trader's public profile by handle: user id, bio, avatar, follower and following counts, join date. Private and followers-only profiles answer not found.
| Argument | Type | Description |
|---|---|---|
| handle* | string | Trader handle, without the @. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"handle"
],
"properties": {
"handle": {
"type": "string",
"description": "Trader handle, without the @."
}
}
}A public trader's ledger activity by handle, newest first: swaps, deposits, withdrawals, transfers and fees. Narrow with `filter`, page with `cursor`.
| Argument | Type | Description |
|---|---|---|
| limit | integer | null | 1-200 (default 50). |
| cursor | string | null | `next_cursor` from the previous page. |
| filter | any | Default all. |
| handle* | string | Trader handle, without the @. |
{
"type": "object",
"$defs": {
"ActivityFilter": {
"enum": [
"all",
"trades",
"cash",
"transfers"
],
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"handle"
],
"properties": {
"limit": {
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0,
"description": "1-200 (default 50)."
},
"cursor": {
"type": [
"string",
"null"
],
"description": "`next_cursor` from the previous page."
},
"filter": {
"anyOf": [
{
"$ref": "#/$defs/ActivityFilter"
},
{
"type": "null"
}
],
"description": "Default all."
},
"handle": {
"type": "string",
"writeOnly": true,
"description": "Trader handle, without the @."
}
}
}A public trader's book by handle: open holdings and perps with value and PnL, closed positions, cash, realized PnL and the balance curve. Dust is hidden unless include_dust is true.
| Argument | Type | Description |
|---|---|---|
| sort | any | Order of holdings and closed positions (default newest). |
| limit | integer | null | Caps holdings and closed positions each, 1-1000. |
| handle* | string | Trader handle, without the @. |
| include | string | null | Comma-separated sections (`holdings`, `closed`, `activity`, `realized_history`, `balance_history`, `perps`, `cash_rows`). Omitted returns every section. An unknown name is a 400. |
| include_dust | boolean | null | Include dust-sized holdings (default false). |
{
"type": "object",
"$defs": {
"BookSort": {
"enum": [
"newest",
"oldest",
"highest",
"lowest"
],
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"handle"
],
"properties": {
"sort": {
"anyOf": [
{
"$ref": "#/$defs/BookSort"
},
{
"type": "null"
}
],
"description": "Order of holdings and closed positions (default newest)."
},
"limit": {
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0,
"description": "Caps holdings and closed positions each, 1-1000."
},
"handle": {
"type": "string",
"writeOnly": true,
"description": "Trader handle, without the @."
},
"include": {
"type": [
"string",
"null"
],
"description": "Comma-separated sections (`holdings`, `closed`, `activity`,\n`realized_history`, `balance_history`, `perps`, `cash_rows`).\nOmitted returns every section. An unknown name is a 400."
},
"include_dust": {
"type": [
"boolean",
"null"
],
"description": "Include dust-sized holdings (default false)."
}
}
}The points leaderboard's top rows: rank, handle, score and referrals. Points, not trading performance; use list_traders for PnL.
| Argument | Type | Description |
|---|---|---|
| head | integer | null | Rows from the top, 1-100 (default 10). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"head": {
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0,
"description": "Rows from the top, 1-100 (default 10)."
}
}
}Raw Hyperliquid metaAndAssetCtxs (large): a universe array and a per-asset context array, parallel and joined by index, delisted coins included. Funding is the hourly rate as a fraction; open interest is in coin units. Use only for raw funding; screen perps with discover kind=perp.
No arguments.
{
"type": "object",
"properties": {}
}Browse public syndicates (shared trading books run by operators), newest first: id, name, pitch, emblem, status, operators and member count. Page with `cursor`.
| Argument | Type | Description |
|---|---|---|
| limit | integer | null | 1-50 (default 20). |
| cursor | string | null | `next_cursor` from the previous page. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0,
"description": "1-50 (default 20)."
},
"cursor": {
"type": [
"string",
"null"
],
"description": "`next_cursor` from the previous page."
}
}
}The trading ranking: public traders by realized PnL, return or hit rate over a rolling window, with open value and balance per row. Few traders qualify; raise min_sales (default 5) to drop lucky one-sale records, and always show each row's `sales` beside its rank.
| Argument | Type | Description |
|---|---|---|
| sort | any | realized PnL (default), return, or hit_rate. |
| limit | integer | null | 1-50 (default 20). |
| window | any | Rolling window (default 30d). |
| min_sales | integer | null | Priced sales in the window needed to be ranked, 1-100 (default 5). |
{
"type": "object",
"$defs": {
"RankWindow": {
"enum": [
"1d",
"7d",
"30d",
"all"
],
"type": "string"
},
"TraderRank": {
"enum": [
"realized",
"return",
"hit_rate"
],
"type": "string"
}
},
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sort": {
"anyOf": [
{
"$ref": "#/$defs/TraderRank"
},
{
"type": "null"
}
],
"description": "realized PnL (default), return, or hit_rate."
},
"limit": {
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0,
"description": "1-50 (default 20)."
},
"window": {
"anyOf": [
{
"$ref": "#/$defs/RankWindow"
},
{
"type": "null"
}
],
"description": "Rolling window (default 30d)."
},
"min_sales": {
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0,
"description": "Priced sales in the window needed to be ranked, 1-100 (default 5)."
}
}
}Search everything by text: tokens, perps, prediction markets and traders matching a ticker, name, address or handle. Start here to turn a name into the chain+address, coin or condition_id the other tools take. `limit` caps token hits only. Names are often ambiguous (many TRUMPs): pick by kind and liquidity.
| Argument | Type | Description |
|---|---|---|
| q* | string | Ticker, name, contract address or trader handle. |
| limit | integer | null | Max token hits, 1-50 (default 12). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"q"
],
"properties": {
"q": {
"type": "string",
"description": "Ticker, name, contract address or trader handle."
},
"limit": {
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0,
"description": "Max token hits, 1-50 (default 12)."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 7, 2026.