# Femtos (remote · api.femtos.xyz)

Hyperliquid data on HyperCore, HyperEVM, Elysium: balances, prices, trades, token security, bridges

- Trust score: 68/100 (medium)
- Change this week: +3
- Registry status: active
- Liveness: live
- Owner verified: no
- Last scored: 2026-11-05

## Components

- remote · `api.femtos.xyz`: 68/100 (this document), [markdown](https://verifymcp.io/servers/xyz-femtos-mcp/api.md), [page](https://verifymcp.io/servers/xyz-femtos-mcp/api)

## Channel facts

- Endpoint: `https://api.femtos.xyz/mcp`
- Transports: `streamable-http`
- Auth: `none`
- Version: `1.2.0`

## Trust breakdown

How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. Scores are 0–100 per category. Scoring method: https://verifymcp.io/docs/scoring (what has changed: https://verifymcp.io/docs/scoring/changelog)

Scored 2026-11-05.

- **Endpoint Security**: 57/100
  - The endpoint's TLS certificate is valid, in date, and uses a strong key.
  - Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (delete_webhook).
  - HTTPS is enforced; there's no plaintext access path.
  - HSTS check failed: the Strict-Transport-Security header is absent.
  - DNSSEC check failed: this domain isn't protected by DNSSEC.
- **Transport & Reachability**: 100/100
  - Verified streamable-http transport via a live MCP handshake.
- **Schema Quality & AI Usability**: 59/100
  - AI-judged instruction clarity (good).
  - Context-footprint check failed: tool/resource definitions use about 20492 tokens (~211/item across 97 items; 97 tools + 0 resources), over budget; trim descriptions and params.
  - Usage-examples check failed: none of the tools include examples.
- **Stability & Change Management**: 46/100
  - Stability check failed: schema churn in the 15 days we've observed: 0 tool removals, 2 breaking changes, 0 auth/transport breaks, 70 additions.
- **Tool Coverage**: 100/100
  - 100% of tools have a non-trivial description (not blank, and not just the tool's name).
  - 100% of tool parameters carry a description.
- **Tool Safety**: 95/100
  - No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.
  - 4 of 5 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "get_nft_transfers" implies "transfer" and declares readOnlyHint instead, contradicting what its own name says it does.
  - An AI judge read all 98 captured unit(s) of tool text and found none that tries to manipulate the model reading it.
- **Capabilities**: 100/100
  - Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.

## Install

### How do I install the Femtos MCP server?

Femtos is a hosted endpoint at https://api.femtos.xyz/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.

### Claude

```bash
claude mcp add --transport http xyz-femtos-mcp 'https://api.femtos.xyz/mcp'
```

### Cursor

```json
{
  "mcpServers": {
    "xyz-femtos-mcp": {
      "url": "https://api.femtos.xyz/mcp"
    }
  }
}
```

### VS Code

```json
{
  "servers": {
    "xyz-femtos-mcp": {
      "type": "http",
      "url": "https://api.femtos.xyz/mcp"
    }
  }
}
```

### Codex

```toml
[mcp_servers.xyz-femtos-mcp]
url = "https://api.femtos.xyz/mcp"
```

### opencode

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "xyz-femtos-mcp": {
      "type": "remote",
      "url": "https://api.femtos.xyz/mcp",
      "enabled": true
    }
  }
}
```

### OpenClaw

```bash
openclaw mcp add xyz-femtos-mcp --url 'https://api.femtos.xyz/mcp' --transport streamable-http
```

### Hermes

```yaml
mcp_servers:
  xyz-femtos-mcp:
    url: "https://api.femtos.xyz/mcp"
```

### Netclaw

```json
{
  "McpServers": {
    "xyz-femtos-mcp": {
      "Transport": "http",
      "Url": "https://api.femtos.xyz/mcp"
    }
  }
}
```

### Vellum

```bash
assistant mcp add xyz-femtos-mcp -t streamable-http -u 'https://api.femtos.xyz/mcp'
```

### Other

```json
{
  "mcpServers": {
    "xyz-femtos-mcp": {
      "type": "http",
      "url": "https://api.femtos.xyz/mcp"
    }
  }
}
```

The mcpServers block is a cross-client convention. Remote transports vary, so check your client's docs.

## Changelog

Every change recorded for this component, newest first. Days that predate change tracking, or that we cannot explain, say so: "we were watching and nothing happened" and "we were not watching" are different claims.

### 2026-11-05 (score 68, +1)

- [security] Tool “list_top_tokens” rewrote its description, which is the text the model reads
- [functional] New tool “get_deploys”
- [functional] New tool “get_twap_history”
- [functional] New tool “get_twaps”
- [cosmetic] “list_top_tokens” added an optional parameter “security”
- [cosmetic] “list_new_tokens” reworded the description of “security”
- [cosmetic] “list_top_tokens” reworded the description of “sort”

### 2026-11-04 (score 67, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “get_position_changes” rewrote its description, which is the text the model reads
- [functional] New tool “get_position_flow”
- [cosmetic] “list_top_tokens” reworded the description of “sort”

### 2026-11-03 (score 67, +1)

- [security] Tool “get_liquidation_map” rewrote its description, which is the text the model reads
- [security] Tool “get_open_interest” rewrote its description, which is the text the model reads
- [security] Tool “get_positions” rewrote its description, which is the text the model reads
- [cosmetic] “get_candles” reworded the description of “tf”
- [cosmetic] “get_open_interest_opens” reworded the description of “from”
- [cosmetic] “get_open_interest_opens” reworded the description of “to”

### 2026-11-01 (score 66, +1)

No change was recorded against any check on this day. Stability & Change Management went from 29 to 32.

### 2026-10-31 (score 65, 0)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “get_builder” rewrote its description, which is the text the model reads
- [security] Tool “get_builder_fills” rewrote its description, which is the text the model reads
- [security] Tool “get_builders” rewrote its description, which is the text the model reads
- [security] Tool “get_open_interest” rewrote its description, which is the text the model reads
- [security] Tool “get_open_interest_cohorts” rewrote its description, which is the text the model reads
- [security] Tool “get_open_interest_opens” rewrote its description, which is the text the model reads
- [security] Tool “list_open_interest” rewrote its description, which is the text the model reads
- [functional regression] Schema quality: 183 → 202
- [cosmetic] “elysium_rpc” added an optional parameter “network”
- [cosmetic] “get_balances” added an optional parameter “network”
- [cosmetic] “get_block” added an optional parameter “network”
- [cosmetic] “get_bridges” added an optional parameter “network”
- [cosmetic] “get_candles” added an optional parameter “network”
- [cosmetic] “get_coin” added an optional parameter “network”
- [cosmetic] “get_entity_graph” added an optional parameter “network”
- [cosmetic] “get_erc20_transfers” added an optional parameter “network”
- [cosmetic] “get_gas” added an optional parameter “network”
- [cosmetic] “get_holders” added an optional parameter “network”
- [cosmetic] “get_holders_history” added an optional parameter “network”
- [cosmetic] “get_launch” added an optional parameter “network”
- [cosmetic] “get_launch_timeline” added an optional parameter “network”
- [cosmetic] “get_nft_collection” added an optional parameter “network”
- [cosmetic] “get_nft_tokens” added an optional parameter “network”
- [cosmetic] “get_nft_transfers” added an optional parameter “network”
- [cosmetic] “get_nfts_owned” added an optional parameter “network”
- [cosmetic] “get_pool” added an optional parameter “network”
- [cosmetic] “get_price_history” added an optional parameter “network”
- [cosmetic] “get_prices” added an optional parameter “network”
- [cosmetic] “get_status” added an optional parameter “network”
- [cosmetic] “get_token_balance” added an optional parameter “network”
- [cosmetic] “get_token_lifecycle” added an optional parameter “network”
- [cosmetic] “get_token_overview” added an optional parameter “network”
- [cosmetic] “get_token_security” added an optional parameter “network”
- [cosmetic] “get_token_traders” added an optional parameter “network”
- [cosmetic] “get_token_volume” added an optional parameter “network”
- [cosmetic] “get_tokens” added an optional parameter “network”
- [cosmetic] “get_trades” added an optional parameter “network”
- [cosmetic] “get_transaction” added an optional parameter “network”
- [cosmetic] “get_wallet” added an optional parameter “network”
- [cosmetic] “kol_activity” added an optional parameter “network”
- [cosmetic] “kol_leaderboard” added an optional parameter “network”
- [cosmetic] “list_launches” added an optional parameter “network”
- [cosmetic] “list_markets” added an optional parameter “network”
- [cosmetic] “list_new_pools” added an optional parameter “network”
- [cosmetic] “list_new_tokens” added an optional parameter “network”
- [cosmetic] “list_nft_collections” added an optional parameter “network”
- [cosmetic] “list_top_tokens” added an optional parameter “network”
- [cosmetic] “search_coins” added an optional parameter “network”
- [cosmetic] “search_entities” added an optional parameter “network”
- [cosmetic] “get_builder” reworded the description of “window”
- [cosmetic] “get_builders” reworded the description of “window”

### 2026-10-30 (score 65, 0)

- [security] Tool “get_open_interest” rewrote its description, which is the text the model reads
- [security] Tool “get_usage” rewrote its description, which is the text the model reads
- [functional] New tool “get_open_interest_opens”

### 2026-10-29 (score 65, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] New tool “delete_account”, which the server declares destructive
- [security] New tool “freeze_key”, which the server declares destructive
- [security] New tool “recover_account”, which the server declares destructive
- [security] New tool “rotate_key”, which the server declares destructive
- [security] Tool “get_holders” rewrote its description, which is the text the model reads
- [security] Tool “get_pool” rewrote its description, which is the text the model reads
- [security] Tool “get_token_security” rewrote its description, which is the text the model reads
- [functional improvement] Destructive annotations: 67% → 80%
- [functional improvement] Schema quality: 207 → 183
- [functional] New tool “cancel_plan”
- [functional] New tool “enable_webhook”
- [functional] New tool “get_account”
- [functional] New tool “get_deposit_address”
- [functional] New tool “get_deposits”
- [functional] New tool “get_holders_history”
- [functional] New tool “get_ledger”
- [functional] New tool “get_open_interest”
- [functional] New tool “get_open_interest_cohorts”
- [functional] New tool “get_payment_options”
- [functional] New tool “get_plans”
- [functional] New tool “get_recovery_challenge”
- [functional] New tool “get_signup_challenge”
- [functional] New tool “get_usage”
- [functional] New tool “get_webhook”
- [functional] New tool “list_open_interest”
- [functional] New tool “list_top_tokens”
- [functional] New tool “pay_with_wallet”
- [functional] New tool “quote_wallet_payment”
- [functional] New tool “rotate_webhook_secret”
- [functional] New tool “set_spending_cap”
- [functional] New tool “signup”
- [functional] New tool “subscribe_plan”
- [functional] New tool “update_webhook”

### 2026-10-28 (score 64, +1)

- [security] The server rewrote its instructions, which are the text every model session reads
- [security] Tool “get_token_overview” rewrote its description, which is the text the model reads
- [security] Tool “get_wall_events” rewrote its description, which is the text the model reads
- [security] Tool “get_walls” rewrote its description, which is the text the model reads
- [security] Tool “list_new_pools” rewrote its description, which is the text the model reads
- [functional] New tool “get_block”
- [functional] New tool “get_entity_pnl”
- [functional] New tool “get_gas”
- [functional] New tool “get_token_traders”
- [functional] New tool “kol_positioning”
- [cosmetic] “list_new_tokens” reworded the description of “minLiquidityUsd”

## MCP tools (97)

### `get_status` (~108 tokens)

Layer status

State of each layer (HyperCore, HyperEVM, Elysium): indexed head block and time, lag behind the chain, live or syncing, Elysium network (mainnet), HyperCore <> HyperEVM bridge matching coverage. Check it when an answer looks stale. Free.

Input parameters:

- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)

### `list_markets` (~264 tokens)

Markets and pools

Tradable markets of a layer, most traded first (24 h USD volume). hypercore: perps, spot, HIP-3 dex perps (dex:COIN), outcome markets; `id` is the coin to pass to get_candles / get_trades (BTC, @107, xyz:TSLA). hyperevm / elysium: DEX pools with price, priceUsd, 24 h volume, mcapUsd (Elysium); `id` is the pool key to pass to get_candles / get_trades / get_pool. `total` = markets matching. Next page: pass `next_cursor` as cursor.

Input parameters:

- `cursor` (string): Next page: `next_cursor` of the previous answer
- `kind` (string): hypercore only: one kind of market
- `layer` (string, required): Layer
- `limit` (integer): Rows (default 50, max 200)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `q` (string): Substring of the symbol, base, quote, addresses or protocol

### `list_top_tokens` (~680 tokens)

Token screener (trending, gainers, new…)

The tokens of HyperEVM or Elysium, one row per token over all its pools (not one per pool like list_markets): price, windows 5m / 1h / 6h / 24h (change, volume, trades, buys / sells, distinct traders / buyers / sellers), liquidity, market cap, FDV, holders (daily snapshot and now) and top-10 share, first pool time, pool count, the most traded pool (topPool: the market for get_candles / get_trades), creator, launchpad and launch (progress, bonded, dev share, dev sold), the HyperCore price and gap of a Core-linked token, socials, named wallets trading it, a 24 h hourly spark and a 1 h five-minute spark. sort: trending (default; rows with a score of 0 left out), volume, gainers, losers, new, mcap, liquidity. Stablecoins and WHYPE left out unless includeStables, spam unless includeSpam, liquidity under minLiquidityUsd (default 1000) always. security=summary adds the cached get_token_security verdict to each row. Trending = last-hour volume (capped at 10 × liquidity) × its acceleration over the 24 h hourly average × √distinct wallets. Next page: pass next_cursor as cursor.

Input parameters:

- `cursor` (string): Next page: `next_cursor` of the previous answer
- `includeSpam` (boolean): Show spam tokens (tokens.spam: homoglyph, impostor, phishing name, fake transfers…) flagged spam / spamReason; left out of the list by default
- `includeStables` (boolean): USD stablecoins and the native / wrapped native quote assets (HYPE, WHYPE, backed wrappers), flagged `stable`; left out by default
- `layer` (string, required): EVM layer
- `limit` (integer): Rows (default 20)
- `minLiquidityUsd` (number): Minimum USD liquidity over its pools (default 1000)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `q` (string): Substring of the symbol, name or address
- `security` (string): summary: each row gets `security` = {verdict, reasons (3), asOf, height} of GET /v1/tokens/{address}/security from its last report (`asOf`: computed again in the background once older than 10 min, ke…
- `sort` (string): trending: trendScore, the rows whose score is 0 left out (they are in new / volume); volume: volume24hUsd; gainers / losers: change24h (rows without one left out); new: createdAt, newest first; mcap:…

### `get_candles` (~347 tokens)

OHLCV candles

OHLCV candles of one market, ascending, UTC-aligned. hypercore: market = coin (BTC, HYPE, @107 spot, xyz:TSLA), down to 1 s. hyperevm / elysium: market = pool key from list_markets; prices in quote plus `usd` and `mcap` OHLC (USD price and market cap). Or token instead of market: a token's candles in USD through its reference pool (most liquid; the answer names it), HyperCore: its USDC market. Without from: the `limit` candles ending now. Windows over 30 days are billed as heavy calls.

Input parameters:

- `from` (integer): Start, Unix ms (inclusive)
- `layer` (string, required): Layer
- `limit` (integer): Candles (default 50, 30 for 1d; max 1000)
- `market` (string): hypercore: coin; hyperevm / elysium: pool key (or give token)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `tf` (string, required): Candle unit (EVM layers: 1s to 1d, no 3m 30m 2h 8h 12h 3d 1w 1M)
- `to` (integer): End, Unix ms (exclusive; default now)
- `token` (string): Instead of market: a token (0x address; hypercore: name HYPE, PURR)

### `get_trades` (~400 tokens)

Trades / swaps, and swap history of a wallet, pool or token

Latest trades of a market, newest first. hypercore: fills of a coin (px, sz, side B = buyer aggressor / A, block time). hyperevm / elysium: DEX swaps of a pool (sender, amounts, px = pool price after the swap, USD value). History (hyperevm / elysium): pass trader (a wallet: every swap it sent), pool or token (more than 20 pools: its priced swaps only, `coverage: priced`), optionally side, minUsd (USD at the swap), from / to (Unix ms): newest first, each row with its pool and symbols; filtered pages may hold fewer rows than limit, keep paging with `next_cursor` (null = no more).

Input parameters:

- `cursor` (string): Next page: `next_cursor` of the previous answer
- `from`: Window start, Unix ms (inclusive)
- `includeSpam` (boolean): Swaps of spam tokens too (flagged)
- `layer` (string): Layer (default hypercore)
- `limit` (integer): Rows (default 50)
- `market` (string): Pair address (pool key) or coin; required without trader / pool / token
- `minUsd`: Smallest USD value (the indexer's, at the swap)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `pool` (string): History of a pool (alias: market)
- `side` (string): Buys or sells of the base
- `to`: Window end, Unix ms (exclusive)
- `token` (string): Swaps where this token is base or quote
- `trader` (string): History of a wallet (tx.from of the swaps); a named wallet's handle works too

### `search_coins` (~141 tokens)

Find tokens

Tokens by symbol, name or address, with their links across layers (Elysium <-> HyperEVM <-> HyperCore), decimals, supply and USD price. Without layer: every layer. An exact address always answers its token (spam flagged).

Input parameters:

- `layer` (string): One layer (default all)
- `limit` (integer): Rows (default 20, max 200)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `q` (string, required): Symbol, name or address

### `get_coin` (~158 tokens)

One token

One token: its links across layers, the markets it trades on (most traded first) and its 5 largest holders. hypercore: id = token name (HYPE), index or token id; hyperevm / elysium: id = 0x address. Price, FDV, liquidity and 5m–24h windows over all its pools: get_token_overview.

Input parameters:

- `id` (string, required): HyperCore name / index / token id, or 0x address
- `layer` (string, required): Layer
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)

### `get_holders` (~311 tokens)

Token holders

Largest holders of a token and its concentration (top-10 share…); system addresses (pools, bridges, launchpad, zero/dead) counted apart. hypercore: token = name (HYPE), kind = balances (spot) or positions (perp open interest of a coin); hyperevm / elysium: token = 0x address. Named wallets carry `entity`; EVM rows say what each address is (label, labelKind: pool, bridge, protocol, token, creator, multisig, contract, wallet; contract: has code).

Input parameters:

- `excludeSystem` (boolean): 1 / true: pools, PoolManager, hooks, gateways, bridge system addresses, LiquidLaunch curve, zero/dead counted apart; 0 / false: counted with the others (default true)
- `kind` (string): HyperCore: spot balances of a token, or perp positions (open interest by account) of a coin (spot / perp: the same). Default: positions for a perp coin, else balances
- `layer` (string): Layer (default hypercore)
- `limit` (integer): Rows (default 50)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `token` (string, required): Token address (Elysium, HyperEVM), token name or perp coin (HyperCore)

### `get_holders_history` (~174 tokens)

Holder count history

How the number of holders of a HyperEVM or Elysium ERC-20 evolved: one point a UTC day (holders at the indexed head just after 00:00 UTC, system addresses such as pools, bridges and zero / dead left out, as get_holders totalHolders) and the count now. History from the layer's first snapshot (`since`) on, up to 365 days.

Input parameters:

- `days` (integer): UTC days, today included (default 90)
- `layer` (string): EVM layer (default hyperevm)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `token` (string, required): Token address

### `list_launches` (~424 tokens)

Token launches

Latest token launches, newest first: Elysium launchpad Ascend (default) or HyperEVM LiquidLaunch (launchpad = liquidlaunch). Each: token, pool (pair), creator, priceUsd, mcapUsd, 24 h volume, holders, top-10 / dev share, dev sold, Ascend progress (Elysium). Next page (Elysium): pass `next_cursor` as cursor.

Input parameters:

- `creator` (string): Elysium: launched by this wallet (creator at launch or current creator)
- `cursor` (string): Next page: `next_cursor` of the previous answer
- `includeSpam` (boolean): Show spam tokens (tokens.spam: homoglyph, impostor, phishing name, fake transfers…) flagged spam / spamReason; left out of the list by default
- `launchpad` (string): Launchpad name: ascend (Elysium), liquidlaunch (HyperEVM)
- `layer` (string): hyperevm = LiquidLaunch
- `limit` (integer): Rows (default 20)
- `maxTop10Share` (number): Ascended criterion: maximum top-10 share of the supply
- `minHolders` (integer): Ascended criterion: minimum unique holders (system excluded)
- `minMcapUsd` (string): Ascended criterion: minimum market cap, USD (decimal string)
- `minVolumeUsd` (string): Ascended criterion: minimum volume since launch, USD
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `q` (string): Elysium: symbol or name contains (case ignored)
- `quote` (string): Elysium: quote token of the pool (USDC, an RWA token…)
- `since` (integer): Elysium: launched at or after (ms)
- `until` (integer): Elysium: launched before (ms)

### `list_new_tokens` (~511 tokens)

New tokens (chain-wide)

Every ERC-20 created on HyperEVM or Elysium, newest first (not only launchpad launches): creation block / tx / time, creator, the contract it was deployed through, launchpad (ascend, liquidlaunch… or null = direct), first pool (dex, quote, initial liquidity) and, once a pool exists, priceUsd, mcapUsd, liquidityUsd, 24 h volume, holders. Spam tokens left out. Filters: launchpad (name, none, any, 0x), hasPool, minLiquidityUsd, minHolders, creator, since (ms); security=summary adds the cached get_token_security verdict to each row. Filtered pages may hold fewer rows than limit: keep paging with `next_cursor` (null = no more). Live: WS <layer>.tokens.new.

Input parameters:

- `creator` (string): Created by this wallet (0x)
- `cursor` (string): Next page: `next_cursor` of the previous answer
- `hasPool` (boolean): true: tokens with a pool; false: without
- `includeSpam` (boolean): Show spam tokens (tokens.spam: homoglyph, impostor, phishing name, fake transfers…) flagged spam / spamReason; left out of the list by default
- `launchpad` (string): ascend, liquidlaunch (a launchpad name), none (no launchpad), any (a launchpad), or a launchpad 0x address
- `layer` (string, required): EVM layer
- `limit` (integer): Rows (default 20)
- `minHolders` (integer): Minimum holders
- `minLiquidityUsd` (number): Minimum USD liquidity of its pools (twice the smaller side)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `security` (string): summary: each row gets `security` = {verdict, reasons (3), asOf, height} of GET /v1/tokens/{address}/security from its last report (`asOf`: computed again in the background once older than 10 min, ke…
- `since` (integer): Created at or after (Unix ms)
- `sinceBlock` (integer): Created at or after this block

### `list_new_pools` (~462 tokens)

New pools (chain-wide)

Every new pair / pool of every DEX on HyperEVM or Elysium (V2, V3, V4, PancakeSwap Infinity, LiquidLaunch curves…), newest first: dex, factory, fee tier, hooks, both tokens with symbols and whether each was just created (newToken), creation block / tx / time, initial liquidity, current liquidity (V2 / V3 pools: token balances; V4 / Infinity: virtual reserves; USD = twice the smaller side), price, 24 h volume. Pools of a spam token left out. Filters: dex, token (either side), quote, minLiquidityUsd, newTokenOnly, since (ms). Filtered pages may hold fewer rows than limit: keep paging with `next_cursor` (null = no more). Live: WS <layer>.pools.new.

Input parameters:

- `cursor` (string): Next page: `next_cursor` of the previous answer
- `dex` (string): Protocol (hyperswap_v3, projectx_v3, uniswap_v4, pancake_infinity_cl, liquidlaunch…)
- `includeSpam` (boolean): Show spam tokens (tokens.spam: homoglyph, impostor, phishing name, fake transfers…) flagged spam / spamReason; left out of the list by default
- `layer` (string, required): EVM layer
- `limit` (integer): Rows (default 20)
- `minLiquidityUsd` (number): Minimum current USD liquidity
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `newTokenOnly` (boolean): Only pools with a new token (newToken not null)
- `newWithinMin` (integer): A side is new when created at most this many minutes before the pool (default 60)
- `quote` (string): Pools quoted in this token (0x), e.g. WHYPE
- `since` (integer): Created at or after (Unix ms)
- `sinceBlock` (integer): Created at or after this block
- `token` (string): Pools of this token, either side (0x)

### `get_launch` (~286 tokens)

One launch

The story of one launched token: launch event, market cap, volume, holders, dev wallet and its funding, early buyers with flags, coordination signals, fees (exact from the launchpad ledger when indexed), lifecycle stage across layers and, for Ascend, progress toward the "Ascended" criteria. Elysium first, then HyperEVM LiquidLaunch.

Input parameters:

- `earlyWindowSec` (integer): Early-buyer window after the launch block (default 60)
- `fundingLookbackSec` (integer): Funding lookback before the launch (default 86400)
- `layer` (string): Default: Elysium, then HyperEVM LiquidLaunch when Elysium has no launch for the token
- `maxTop10Share` (number): Ascended criterion: maximum top-10 share of the supply
- `minHolders` (integer): Ascended criterion: minimum unique holders (system excluded)
- `minMcapUsd` (string): Ascended criterion: minimum market cap, USD (decimal string)
- `minVolumeUsd` (string): Ascended criterion: minimum volume since launch, USD
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `token` (string, required): Launched token address

### `get_launch_timeline` (~129 tokens)

Launch timeline

Replayable life of a launch, oldest first: launch, swaps and transfers with the running holder count and market cap, graduation links (bridge to HyperEVM, HyperCore listing). Long histories are cut to fit (see `truncated`).

Input parameters:

- `layer` (string): Default: Elysium, then HyperEVM
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `token` (string, required): Launched token address

### `get_token_lifecycle` (~259 tokens)

Token across the 3 layers

One token from launch to perp across Elysium, HyperEVM and HyperCore: its address on each layer, the stages reached (Elysium launch, listing desk, HyperEVM mirror, HyperCore spot, perps) with chain evidence, and the links between them, each exact or inferred. address: an Elysium / HyperEVM address, core:<index>, a HyperCore token id or name, or a perp coin (dex:COIN).

Input parameters:

- `address` (string, required): Elysium / HyperEVM address, core:<index>, HyperCore token id, name or perp coin
- `maxTop10Share` (number): Ascended criterion: maximum top-10 share of the supply
- `minHolders` (integer): Ascended criterion: minimum unique holders (system excluded)
- `minMcapUsd` (string): Ascended criterion: minimum market cap, USD (decimal string)
- `minVolumeUsd` (string): Ascended criterion: minimum volume since launch, USD
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)

### `get_token_security` (~279 tokens)

Token security / honeypot check

Is this HyperEVM or Elysium ERC-20 safe to trade: a buy, a transfer and a sell simulated on our node through its most liquid pool (state overrides, nothing sent): canBuy, canSell, buy / sell / transfer tax, gas, revert reason; static checks of its code (owner and renounced, mintable, pausable, blacklist, max tx / wallet, cooldown, tax setters, upgradeable proxy, selfdestruct, ownership reclaim, verified source on Sourcify or the Blockscout bytecode database, of the implementation behind a proxy); holders (top 10 share and its part in EOAs, creator / owner share), liquidity and who holds it (LP burned / locked with the unlock time / free / in contracts, V2 LP tokens and V3 / V4 positions). Verdict ok / caution / danger / honeypot with reasons; each check has a severity (info, warn, danger). Cached 60 s per token. Medium call.

Input parameters:

- `layer` (string): EVM layer (default hyperevm)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `token` (string, required): Token address

### `get_prices` (~260 tokens)

Token prices (batch)

Current USD price of up to 100 tokens in one call, each with its source and provenance: hl_mid (HYPE / WHYPE: HyperCore spot mid; hl_oracle when no mid is recorded), hl_spot (HyperCore tokens and HyperEVM tokens linked to one: last trade of its USDC market), hl_perp, unit (USDC), pool (HyperEVM / Elysium: last swap of the token's reference pool, the most liquid one, with block / tx / logIndex). hypercore: tokens = names (HYPE, PURR) or perp coins (BTC).

Input parameters:

- `layer` (string): Layer: hyperevm / elysium (0x token addresses) or hypercore (token names HYPE, PURR, token ids, perp coins BTC). Absent: hypercore when every token is a name, else hyperevm
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `tokens` (array, required): 0x addresses (hyperevm, elysium) or HyperCore names / perp coins

### `get_price_history` (~289 tokens)

Token price history (batch)

USD prices in the past. With at (Unix ms): the price of up to 100 tokens at that time (last observation at or before it). With from / to / interval: USD closes per unit (1m 5m 15m 1h 4h 1d) of up to 25 tokens, gap-filled. Same sources as get_prices. Windows over 30 days are billed as heavy calls.

Input parameters:

- `at` (integer): Time (Unix ms): price at or before it
- `from` (integer): Series start (Unix ms, inclusive, aligned down to the unit)
- `interval` (string): Series unit
- `layer` (string): Layer: hyperevm / elysium (0x token addresses) or hypercore (token names HYPE, PURR, token ids, perp coins BTC). Absent: hypercore when every token is a name, else hyperevm
- `limit` (integer): Units per token at most (default 200)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `to` (integer): Series end (Unix ms, exclusive; default now)
- `tokens` (array, required): 0x addresses or HyperCore names

### `get_tokens` (~177 tokens)

Token metadata (batch)

Metadata of up to 100 tokens: symbol, name, decimals, total supply, creator and creation time, logo / description / socials when indexed (launchpad metadata), token family, cross-layer links, spam flag. Unknown addresses come back in `missing`.

Input parameters:

- `addresses` (array, required): 0x addresses (hypercore: names / token ids)
- `layer` (string): Layer: hyperevm / elysium (0x token addresses) or hypercore (token names HYPE, PURR, token ids, perp coins BTC). Absent: hypercore when every token is a name, else hyperevm
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)

### `get_token_overview` (~168 tokens)

Token overview (all pools)

One token across all its pools on HyperEVM or Elysium (DexScreener style): USD price and source, FDV, market cap, liquidity, volume / trades / buys / sells / unique buyers, sellers and traders / price change over 5m, 1h, 6h, 24h, holders and top-10 share, pool count, the 5 best pools and the reference one, creator and creation time.

Input parameters:

- `address` (string, required): Token address
- `layer` (string): EVM layer (default hyperevm)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)

### `get_token_traders` (~307 tokens)

Top traders of a token (PnL)

Who traded a HyperEVM or Elysium token over 1h, 6h or 24h and how they did: per wallet buys / sells, amounts and USD bought / sold, average buy and sell price, current balance, realized, unrealized and total PnL (average cost over the window: realized = min(bought, sold) × (avg sell − avg buy); unrealized = what it still holds of its net buy × (current price − avg buy)), first / last swap, named wallets with entity. sort = pnl, realized or volume; totals of the window (traders, buyers, sellers, swaps, volume). Priced swaps only, the token on either side of any pool; trader = tx.from. Medium call.

Input parameters:

- `layer` (string): EVM layer (default hyperevm)
- `limit` (integer): Traders (default 20)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `sort` (string): pnl (total, highest first), realized (realized PnL) or volume (USD bought + sold) (default pnl)
- `token` (string, required): Token address
- `window` (string): Window ending at the indexed head: 1h, 6h or 24h (default 24h)

### `get_bridges` (~239 tokens)

Bridge movements

Bridge movements, newest first, with 24 h stats. route core_evm: HyperCore <> HyperEVM transfers, both legs matched (status, latency, how they were paired); route evm_elysium: HyperEVM <> Elysium (Orbit) deposits and withdrawals. Filter by account to follow one wallet across layers. Medium call.

Input parameters:

- `account` (string): Sender or recipient
- `direction` (string): Direction
- `includeSpam` (boolean): evm_elysium: rows of spam parent tokens (HyperEVM tokens.spam), left out by default
- `limit` (integer): Rows (default 50)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `route` (string): Bridge (default core_evm)
- `system` (string): Kinetiq system retryables (evm_elysium) (default exclude)
- `token` (string): Token address (`hype` for native HYPE)

### `get_wallet` (~202 tokens)

Cross-layer wallet

One address on HyperCore, HyperEVM and Elysium at once: HyperCore perp account (value, positions with liquidation price) and spot balances, HyperEVM and Elysium token balances and NFTs with USD values, bridge legs in flight and journeys across the layers, latest events (fills, ledger, swaps, transfers, bridges), each section with its freshness. Medium call; balances alone: get_balances (a REST call).

Input parameters:

- `address` (string, required): 0x address, or a named wallet's handle <entityId>.<hex>
- `includeSpam` (boolean): Show spam tokens (tokens.spam: homoglyph, impostor, fake transfers…), flagged spam / spamReason; hidden from lists and USD totals by default
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)

### `get_balances` (~446 tokens)

Token balances

What an address holds, one flat list: HyperCore spot tokens (live), HyperEVM and Elysium ERC-20s and native HYPE (indexed head), each with raw units, amount, USD price and value, largest first; spam tokens left out; HyperCore perp accounts (account value, withdrawable) apart in `perp`; totals per layer and overall, each layer with its source, height and asOf. Past balances: block or at (Unix ms) on one layer (EVM: needs tokens, read on our archive node; HyperCore: the holder snapshot at or before it, 7 days kept). verify: EVM rows read again on the node at the same block (indexer drift shows as onchain.match false).

Input parameters:

- `address` (string, required): 0x address, or a named wallet's handle `<entityId>.<hex>`
- `at` (integer): Past balances at this time (Unix ms): the last block at or before it
- `block` (integer): Past balances at this block (one layer; EVM: tokens= required; HyperCore: the snapshot at or before this height)
- `includeSpam` (boolean): List spam tokens (flagged spam / spamReason); never in the totals
- `layer` (string): Layer(s) read (default all)
- `limit` (integer): Rows (default 50)
- `minUsd` (number): Leave out holdings worth less (and unpriced ones)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `sort` (string): Order (default usd)
- `tokens` (string): Comma list (at most 50; 20 with block / at): EVM token addresses (`native` = HYPE) and HyperCore coin names; every token asked is listed, held or not (0)
- `verify` (boolean): EVM layers: read the rows answered (at most 50 per layer) again on the node at the same block

### `get_token_balance` (~239 tokens)

One token balance

The balance of one token for one address: HyperCore coin name (USDC, HYPE…), or a HyperEVM / Elysium token address (`native` = HYPE; layer hyperevm unless elysium is given). 0 when not held. block / at for a past balance, verify to compare with the node.

Input parameters:

- `address` (string, required): 0x address, or a named wallet's handle `<entityId>.<hex>`
- `at` (integer): Past balance at this time (Unix ms)
- `block` (integer): Past balance at this block
- `layer` (string): Default: hypercore for a coin name, hyperevm for an address
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `token` (string, required): EVM token address, `native` (HYPE), or a HyperCore coin name
- `verify` (boolean): EVM layers: read it again on the node at the same block

### `get_token_volume` (~113 tokens)

Daily token volume

Daily USD swap volume of an EVM token (both sides of every priced swap), oldest first, up to the indexed head (the last day is partial).

Input parameters:

- `days` (integer): Days (default 30)
- `layer` (string, required): EVM layer
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `token` (string, required): Token address

### `get_erc20_transfers` (~323 tokens)

ERC-20 transfers (of a token, or from / to an address)

ERC-20 Transfer events, newest first (from, to, amount, block, tx). address: the transfers sent / received by a wallet (direction in, out or any), optionally of one token, in a window (from / to, Unix ms) or above minUsd (amount × current token price); each row with token, symbol, direction and USD value. Without address: the transfers of one token. Filtered pages may hold fewer rows than limit: keep paging with `next_cursor` (null = no more).

Input parameters:

- `address` (string): Transfers from / to this address (a named wallet's handle works too); token then optional
- `cursor` (string): Next page: `next_cursor` of the previous answer
- `direction` (string): With address: received, sent or both (default any)
- `from`: With address: window start, Unix ms (inclusive)
- `includeSpam` (boolean): With address: transfers of spam tokens too (flagged)
- `layer` (string, required): EVM layer
- `limit` (integer): Rows (default 50)
- `minUsd`: With address: smallest amount × current token price, USD
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `to`: With address: window end, Unix ms (exclusive)
- `token` (string): Token address (required without address)

### `get_pool` (~211 tokens)

One pool

One DEX pool of HyperEVM or Elysium: dex, factory, fee tier, hooks, tokens with USD prices, creation block / tx, price, liquidity with its USD value and how it is measured (pool balances for V2 / V3; virtual reserves of the in-range liquidity for V4 / Infinity pools: not TVL), depth to ±2 %, trades / buys / sells / USD volume / price change over 5m, 1h, 6h, 24h, for V2-style pools the largest LP holders, and how much of its liquidity is burned, locked (until when), free or in contracts.

Input parameters:

- `address` (string, required): Pool address, or <PoolManager>:<PoolId>
- `layer` (string, required): EVM layer
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)

### `get_transaction` (~189 tokens)

One transaction

One transaction by hash, HyperEVM then Elysium (or layer): status, block, from / to, value, gas and fee (HYPE and USD), decoded ERC-20 transfers, swaps, liquidity events, pools created and NFT transfers, the raw logs we do not decode (from our node), and when it is a bridge leg its legs, matched bridge rows and the cross-layer journey it belongs to. A transaction not indexed yet comes from the node (source: rpc, nothing decoded).

Input parameters:

- `hash` (string, required): Transaction hash (0x + 64 hex)
- `layer` (string): Only this layer (default: HyperEVM, then Elysium)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)

### `get_gas` (~287 tokens)

Gas tracker

HyperEVM or Elysium gas over 1h, 6h, 24h or 7d: each block's base fee, gas used and limit, transactions and priority fees (p50 / p90 tips), HyperEVM small and big blocks as two series (each has its own base fee). Stats per series (base fee min / median / p90 / p99 / max / mean, typical tips, utilization) and the latest block. Points are every block up to 25000 per series, else buckets with min / mean / max base fee; ask a coarse resolution (5m, 15m, 1h) for a short answer. Values in wei.

Input parameters:

- `layer` (string): EVM layer (default hyperevm)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `resolution` (string): block, 10s, 1m, 5m, 15m or 1h; default auto (every block up to 25000 per series) (default 15m)
- `window` (string): Window ending now: 1h, 6h, 24h or 7d (default 1h)

### `get_block` (~154 tokens)

One block

One HyperEVM or Elysium block (a number, or latest): hash, time, small or big block (HyperEVM), gas, base fee, tips, HYPE burnt and fees, and every transaction in order with sender, recipient (named wallets tagged), HYPE sent, function called, status, gas, tip, fee and its decoded swaps, transfers and liquidity changes.

Input parameters:

- `layer` (string): EVM layer (default hyperevm)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `number` (required): Block number, or latest

### `elysium_rpc` (~471 tokens)

Elysium JSON-RPC (read only)

One read-only JSON-RPC call on our Elysium mainnet (chain 99901) node, free: eth_chainId, eth_blockNumber, net_version, net_listening, web3_clientVersion, eth_syncing, eth_getBlockByNumber, eth_getBlockByHash, eth_getBlockTransactionCountByNumber, eth_getBlockTransactionCountByHash, eth_getTransactionByHash, eth_getTransactionByBlockNumberAndIndex, eth_getTransactionByBlockHashAndIndex, eth_getTransactionReceipt, eth_getBlockReceipts, eth_getBalance, eth_getCode, eth_getStorageAt, eth_getTransactionCount, eth_call, eth_estimateGas, eth_gasPrice, eth_maxPriorityFeePerGas, eth_feeHistory, eth_getLogs, eth_getProof. The answer is the node's {jsonrpc, id, result} or {error}. eth_getLogs over at most 1000 blocks; state (eth_call, eth_getBalance…) of the last 128 blocks only. No transaction sending. Limited per IP (5/s, 60/min): use the indexed tools for history.

Input parameters:

- `method` (string, required): A method served: eth_chainId, eth_blockNumber, net_version, net_listening, web3_clientVersion, eth_syncing, eth_getBlockByNumber, eth_getBlockByHash, eth_getBlockTransactionCountByNumber, eth_getBloc…
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `params` (array): Its parameters, as the method takes them (absent: none)

### `get_book` (~112 tokens)

Order book

Live L2 order book of one HyperCore market from our own node: bids and asks best first as [px, sz, n] (price, size, order count), and the block it was read at. coin: perp name (BTC), spot @index (@107) or HIP-3 dex:COIN.

Input parameters:

- `coin` (string, required): HyperCore coin: BTC, @107, xyz:TSLA
- `depth` (integer): Levels per side (default 20, max 100)

### `get_walls` (~342 tokens)

Order book wall reliability

Which HyperCore accounts' order book walls hold: per account, its large resting orders placed away from the price (≥ $25k, ≥ 20 bps away), how many the price came to, how many held (filled) and how many were pulled as the price came, with the hold rate. A low hold rate over many tested walls is liquidity that leaves as the price comes: requoting ladders, or spoofing (a record, not a verdict). Filter by market, account, side, wall size tier; window 24h, 7d or all (since 2026-10-13 15:50 UTC).

Input parameters:

- `coin` (string): Market (perp name, spot @index, HIP-3 dex:COIN); every market when absent
- `limit` (integer): Accounts (default 25)
- `minTested` (integer): Accounts with at least this many tested walls (default 5)
- `side` (string): B bids only, A asks only; both when absent
- `sort` (string): Order, largest first (holdRate: lowest first) (default pulled)
- `tier` (integer): Smallest wall counted: 1 = $25k and more, 2 = $100k and more, 3 = $1M and more (default 1)
- `user` (string): Only this account
- `window` (string): Window, whole hours ending with the current one: 24h, 7d, or all (since 2026-10-13 15:50 UTC) (default 7d)

### `get_wall_events` (~341 tokens)

Walls held or pulled on a market

One HyperCore market's large resting orders that the price came to, one by one, newest first: held (filled) or pulled (cancelled as the price came), with time, price, size, value, life and owner. A wall: a resting limit order (Gtc or Alo, not a trigger) worth at least $25k, placed on its passive side at least 20 bps from the last trade (a bid below, an ask above), resting 24 h at most. Tested: the price came to it before it ended. It held when it traded (a fill of the order), wholly or in part, however it ended; it was pulled when its owner cancelled it unfilled (a cancel or a scheduled cancel) with a trade within 10 bps of it, or through it, in the 60 s from its cancel on: as the price came, or just ahead of it (ladders that requote large orders a few seconds ahead of the price are pulled walls, the commonest kind). Up to 24 h per call.

Input parameters:

- `coin` (string, required): Market (perp name, spot @index, HIP-3 dex:COIN)
- `from` (integer): From (Unix ms); default `to` − 24 h
- `limit` (integer): Events (default 100)
- `tier` (integer): Smallest wall: 1 = $25k and more, 2 = $100k and more, 3 = $1M and more (default 2)
- `to` (integer): To (Unix ms); default now

### `get_open_interest` (~287 tokens)

Open interest history of a perp

Open interest of a HyperCore perp over time (bars of 1s to 1M since 2023-05-20, 1s and 15s since 2025-09-28): open / high / low / close of the open interest (size, Σ |position| of longs and shorts), its value at the last price, longs and shorts opened and closed in each bar, the part opened by aggressors, the size liquidated, accounts long and short, the hourly funding rate settled. Exact after every block since 2025-03-22 10:49 UTC, from every trade and Hyperliquid's own per-minute values (anchored on every hourly funding since 2025-09-28, where accounts start); before, Hyperliquid's per-minute values alone, moves and trades null. Hyperliquid's API serves only the current open interest.

Input parameters:

- `coin` (string, required): Perp market: BTC, xyz:TSLA (HIP-3: dex:COIN)
- `from` (integer): Start (ms, inclusive; aligned down to the unit). Without it: the `limit` bars ending at `to`
- `limit` (integer): Bars (default 100)
- `tf` (string, required): Bar unit
- `to` (integer): End (ms, exclusive; default now)

### `list_open_interest` (~133 tokens)

Open interest of every perp

Open interest of every HyperCore perp now (main dex and HIP-3): size and USD value, accounts long and short, change over 1 h, 24 h and 7 d, totals per perp dex. Sort by value, size, 24 h change or accounts. Exact, from every fill and hourly funding.

Input parameters:

- `dex` (string): Only this perp dex ("" = the main one); every dex when absent
- `limit` (integer): Markets (default 25)
- `sort` (string): Order, largest first (pct24h: largest increase first) (default usd)

### `get_open_interest_cohorts` (~224 tokens)

Open interest by position size

Who holds a HyperCore perp's open interest, every hour since 2025-09-28: long and short size and accounts by position size tier (0 = no trade price known, 1 = under $10k, 2 = $10k–100k, 3 = $100k–1M, 4 = $1M–10M, 5 = $10M and more), and the share of the 10 largest longs and shorts. Read whale vs retail positioning over time.

Input parameters:

- `coin` (string, required): Perp market: BTC, xyz:TSLA
- `every` (string): 1h: every hourly funding; 1d: the first of each day (default 1h)
- `from` (integer): Start (ms, inclusive). Without it: the `limit` points ending at `to`
- `limit` (integer): Points (744: a month of hours) (default 48)
- `to` (integer): End (ms, exclusive; default now)

### `get_open_interest_opens` (~193 tokens)

Largest orders that opened positions

Who opened positions on a HyperCore perp in a window of up to a day (since 2025-03-22 10:49 UTC): the orders that opened longs or shorts, largest value first, with the account and its named wallet, size and value opened, average price, taker or resting, position before and after; plus the window's longs / shorts opened in total and by aggressors. Use it to explain an open interest jump.

Input parameters:

- `coin` (string, required): Perp market: BTC, xyz:TSLA
- `from` (integer, required): Start (ms, inclusive; aligned down to the second)
- `limit` (integer): Orders (default 20)
- `side` (string): Only the orders that opened longs, or shorts
- `to` (integer, required): End (ms, exclusive; aligned up to the second; at most a day after `from`)

### `get_liquidations` (~168 tokens)

Liquidations

HyperCore perp liquidations, newest first: one row per account, coin and block (side of the liquidated position, market or backstop, size, notional, average and mark price). Default window: the last 24 h; `from` older than 7 days (30 with a coin) is clamped, the answer's `from` says where it starts. Named wallets carry `entity`.

Input parameters:

- `coin` (string): One coin
- `from` (integer): Window start (ms)
- `limit` (integer): Rows (default 50)
- `minNotional` (number): Smallest notional, USD
- `to` (integer): Window end (ms, exclusive)
- `user` (string): One liquidated account (0x)

### `get_liquidation_stats` (~97 tokens)

Liquidation stats

HyperCore liquidations over a window (1h, 24h, 7d, 30d), every perp or one coin: totals (notional, count, accounts, long / short, market / backstop), per coin, per time bucket, the most liquidated accounts and the largest events.

Input parameters:

- `coin` (string): One coin
- `window` (string): Window (default 24h)

### `get_positions` (~164 tokens)

Open positions

Open positions of one HyperCore perp, current to a few seconds (the node state rolled forward with every fill, funding payment, ledger update and accepted account action): account, size, side, entry price, notional, unrealized PnL at the mark, leverage, margin mode and liquidation price when known. Sort by notional (default), upnl or liqDistance (closest to liquidation first). Named wallets carry `entity`.

Input parameters:

- `coin` (string, required): Perp coin (BTC, xyz:TSLA)
- `limit` (integer): Rows (default 50)
- `order` (string): Order (default: desc, liqDistance asc)
- `side` (string): One side
- `sort` (string): Sort (default notional)

### `get_position_changes` (~209 tokens)

Large position changes

Past HyperCore perp position changes of one coin over a notional (at least 10000), one row per account and block (opens, closes, increases, reductions, flips, with size, average price and whether a liquidation moved it): the history of the WS hc.positions channel, the rows behind get_position_flow's bars. Window: the last 24 h by default, at most 30 days, anywhere since 2025-05-25. sort=notional for the largest of the window. Named wallets carry `entity`.

Input parameters:

- `coin` (string, required): Perp coin (BTC, xyz:TSLA)
- `from` (integer): Window start (ms)
- `limit` (integer): Rows (default 50)
- `minNotional` (number): Smallest notional, USD (default 100000)
- `sort` (string): Newest first, or largest first (default time)
- `to` (integer): Window end (ms, exclusive)

### `get_position_flow` (~264 tokens)

Large position moves per bar

Large HyperCore perp position moves and liquidations of one coin summed per bar of a unit (1m to 1d, 1w, 1M): buys, sells, longs liquidated, shorts liquidated, each with notional, count, volume-weighted price and the largest move (named wallet when known). The figures add up across units. Floors: minNotional for buys and sells, liqMinNotional for liquidations (at least 10000). History from 2025-05-25.

Input parameters:

- `coin` (string, required): Perp coin
- `from` (integer): Start (ms, inclusive; aligned down to the unit). Without it: the `limit` bars ending at `to`
- `limit` (integer): Bars at most from `from` (a window of at most 20,000 bars) (default 100)
- `liqMinNotional` (number): Smallest notional of a liquidation, USD (default: minNotional)
- `minNotional` (number): Smallest notional of a buy or sell, USD (default 100000)
- `tf` (string, required): Bar unit
- `to` (integer): End (ms, exclusive; default now)

### `get_stop_map` (~305 tokens)

Stop-loss / take-profit map

Open trigger orders (stop-loss and take-profit) of one HyperCore market bucketed by trigger price around the mark (default ±10 %, 20 round-width buckets): per bucket the count, size and notional (size × trigger price) of stops and take-profits, sell (closes longs) and buy (closes shorts), market and limit. Each order counts at what it would execute: a reduce-only order closes at most what is left of its wallet's position when it fires (positions a few seconds old); the size past it (wallets with no position, oversized or duplicate stops) is apart under `unbacked`. Position TP/SL that close the whole position (size 0) are counted apart under `whole`, sized the same way. `totals` cover every open trigger order of the coin, `below` / `above` those outside the grid. Cut at `height` (block) / `asOf`.

Input parameters:

- `buckets` (integer): Most buckets (default 20; the width is rounded up to 1, 2, 2.5 or 5 × 10^k)
- `coin` (string, required): HyperCore coin: BTC, ETH, xyz:TSLA
- `rangePct` (number): Half-width of the grid around the mark, percent (default 10)
- `step` (string): Bucket width in price units, instead of buckets (at most 400 buckets)

### `get_liquidation_map` (~257 tokens)

Liquidation price map

Liquidation prices of the open perp positions of one HyperCore market, bucketed by price around the mark: per bucket the longs (liquidated by a forced sell as price falls to them) and the shorts (forced buy), count, |size| and |size| × liquidation price. Real per-position prices: every account's positions a few seconds old (the node state rolled forward with every fill, funding payment, ledger update and accepted account action), each liquidation price from Hyperliquid's formula on the account state, not a leverage model; `coverage` gives the share of open interest that has one (portfolio-margin cross accounts have none). Same grid parameters as get_stop_map: the buckets line up.

Input parameters:

- `buckets` (integer): Most buckets (default 20; the width is rounded up to 1, 2, 2.5 or 5 × 10^k)
- `coin` (string, required): Perp coin: BTC, ETH, xyz:TSLA
- `rangePct` (number): Half-width of the grid around the mark, percent (default 10)
- `step` (string): Bucket width in price units, instead of buckets (at most 400 buckets)

### `get_forced_flow` (~300 tokens)

Forced flow map (stops + liquidations)

Open stop-loss / take-profit orders and the liquidation prices of open positions of one HyperCore market on the same price buckets: per bucket the stops by kind and side (each at what it would execute: a reduce-only order at most what is left of its wallet's position, the rest under stops.unbacked), the liquidations by side, the cascade (what fires with the move: sell = sell stop-losses + long liquidations, buy = buy stop-losses + short liquidations) and forced = cascade + take-profits (which fire against the move: sell ones above the mark, buy ones below), each with its running total from the mark outward (cumCascadeSell / cumSell downward, cumCascadeBuy / cumBuy upward); summary = cascade selling under the mark and buying over it, take-profits on the far side, and the forced totals, inside the grid. Same grid parameters as get_stop_map.

Input parameters:

- `buckets` (integer): Most buckets (default 20; the width is rounded up to 1, 2, 2.5 or 5 × 10^k)
- `coin` (string, required): Perp coin: BTC, ETH, xyz:TSLA
- `rangePct` (number): Half-width of the grid around the mark, percent (default 10)
- `step` (string): Bucket width in price units, instead of buckets (at most 400 buckets)

### `get_triggered_stops` (~196 tokens)

Triggered stops

Stop-loss and take-profit orders of one HyperCore market that fired, newest first: wallet, side, trigger and limit price, size (0 = whole position), the order the trigger placed (its status in the trigger block) and its fills there (size, average price, notional). Window: since / until, default the last hour, at most 24 h per call and 7 days back. Named wallets carry `entity`. Next page: pass `next_cursor` as cursor.

Input parameters:

- `coin` (string, required): HyperCore coin: BTC, ETH, xyz:TSLA
- `cursor` (string): Next page: `next_cursor` of the previous answer
- `limit` (integer): Rows (default 50)
- `since` (integer): Window start (Unix ms, default until − 1 h)
- `until` (integer): Window end (Unix ms, exclusive, default now)

### `get_wallet_stops` (~259 tokens)

A wallet's stops

A wallet's open HyperCore trigger orders (stop-loss / take-profit): coin, side, trigger and limit price, size (0 = whole position), reduce-only, placed at. history: true lists instead every status event of its trigger orders over the last 3 days at most (placed, triggered, canceled, rejected, and the fill or cancel of the order a trigger placed, `triggered: true`), newest first (a heavy call; next page: pass `next_cursor` as cursor).

Input parameters:

- `address` (string, required): 0x address, or a named wallet's handle <entityId>.<hex>
- `cursor` (string): Next page: `next_cursor` of the previous answer
- `history` (boolean): Past status events instead of the open orders (heavy call)
- `limit` (integer): history: events (default 100, max 1000)
- `since` (integer): history: window start (Unix ms, default until − 24 h, 3 days back at most)
- `status` (string): history: one status (open, triggered, canceled, filled…)
- `until` (integer): history: window end (Unix ms, exclusive, default now)

### `get_price_level` (~201 tokens)

Who sits at a price level

The wallets behind one price band of a HyperCore market (a bucket of get_forced_flow / get_stop_map / get_liquidation_map: px_lo = its pxLo, px_hi = its pxHi): the open stop-loss / take-profit orders triggering in it, each with what it would execute (a reduce-only order at most what is left of its wallet's position; the rest as unbackedSz) and the wallet's position, and the open positions liquidated in it (size, entry, leverage, liquidation price). Largest first. Named wallets carry `entity`.

Input parameters:

- `coin` (string, required): HyperCore perp coin: BTC, xyz:TSLA
- `limit` (integer): Orders, and positions, listed (largest first) (default 50)
- `px_hi` (string, required): Band high edge (exclusive), price, over px_lo
- `px_lo` (string, required): Band low edge (inclusive), price

### `get_twaps` (~207 tokens)

Running TWAPs and TWAP pressure

Running HyperCore TWAP orders of a market (coin) and / or an account (user), every market when neither is given: side, size, executed size and notional, average price, remaining size and notional at the last trade, progress, start and scheduled end, trigger, status; and per market the net TWAP pressure (remaining buys minus remaining sells, in quote units). sort=remaining (default), newest or ending. Named wallets carry `entity`. Ended TWAPs: get_twap_history.

Input parameters:

- `coin` (string): Market (perp name, spot @index, HIP-3 dex:COIN); every market when absent
- `limit` (integer): TWAPs (the pressure counts every one) (default 50)
- `sort` (string): remaining: largest remaining notional first; newest: latest started first; ending: soonest scheduled end first (default remaining)
- `user` (string): Only this account

### `get_twap_history` (~245 tokens)

Ended TWAPs

HyperCore TWAP orders that ended (finished, terminated, or error with its reason) in a window, newest first, by market (coin) and / or account (user): size, executed size and notional, average price, what was left undone, start, scheduled end, when and how it ended. Window from / to, default the last 24 h, at most 7 days per call, since 2026-10-13. Named wallets carry `entity`. Next page: pass `next_cursor` as cursor.

Input parameters:

- `coin` (string): Market (perp name, spot @index, HIP-3 dex:COIN); every market when absent
- `cursor` (string): Next page: `next_cursor` of the previous answer
- `from` (integer): Window start (Unix ms, default `to` − 24 h)
- `limit` (integer): TWAPs (default 50)
- `status` (string): One way of ending; every one when absent
- `to` (integer): Window end (Unix ms, exclusive, default now)
- `user` (string): Only this account

### `list_nft_collections` (~130 tokens)

NFT collections

Most active NFT collections of an EVM layer over the last 1 h or 24 h before the indexed head: transfers, mints, burns, with each collection's name, symbol, standard and logo.

Input parameters:

- `layer` (string, required): EVM layer
- `limit` (integer): Rows (default 50)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `window` (string): Window (default 24h)

### `get_nft_collection` (~112 tokens)

One NFT collection

One NFT collection of an EVM layer: metadata, standards, token ids seen (counted up to 1,000), transfers / mints / burns over the 24 h before the indexed head.

Input parameters:

- `address` (string, required): Collection contract
- `layer` (string, required): EVM layer
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)

### `get_nft_tokens` (~140 tokens)

NFT tokens

Tokens of one collection by token id, ascending: current ERC-721 owner (null for ERC-1155), metadata URI, image URL. Next page: pass `next_cursor` as cursor.

Input parameters:

- `collection` (string, required): Collection contract
- `cursor` (string): Next page: `next_cursor` of the previous answer
- `layer` (string, required): EVM layer
- `limit` (integer): Rows (default 50)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)

### `get_nfts_owned` (~119 tokens)

NFTs of a wallet

NFTs an address holds on an EVM layer at the indexed head: ERC-721 tokens and ERC-1155 balances, counted per collection, the tokens listed up to limit.

Input parameters:

- `layer` (string, required): EVM layer
- `limit` (integer): Tokens listed (default 50)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `owner` (string, required): Holder address

### `get_nft_transfers` (~173 tokens)

NFT transfers

Transfers (mints and burns included) of one collection or one of its tokens, newest first: from, to, token id, amount, block, tx. Next page: pass `next_cursor` as cursor.

Input parameters:

- `collection` (string, required): Collection contract
- `cursor` (string): Next page: `next_cursor` of the previous answer
- `layer` (string, required): EVM layer
- `limit` (integer): Rows (default 50)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `tokenId` (string): One token
- `window` (string): Window when scope is not all (default 24h)

### `search_entities` (~296 tokens)

Named wallets

Named wallets (KOLs, traders, funds, market makers) and their wallets, from public attribution lists (not verified identities). A named wallet's address is given as its handle <entityId>.<hex>, usable as an address in every tool. Use the entity id with kol_activity. Next page: pass `next_cursor` as cursor.

Input parameters:

- `confidence` (string): Entities with at least one wallet of this confidence
- `cursor` (string): Next page: `next_cursor` of the previous answer
- `kind` (string): Entities: named (people, funds, pseudonyms from public sources), cluster (anonymous smart-money clusters: HyperCore traders selected on their results), all, or a kind it contains (whale, market maker…
- `limit` (integer): Entities (default 20)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `q` (string): Name, X handle, alias, wallet address or handle
- `sort` (string): default: the registry order (our research first); wallets: most wallets first; name; pnl: smart-money net PnL first (default default)
- `via` (string): Entities with at least one wallet found this way (`via` of the wallets)

### `get_entity_graph` (~131 tokens)

How a named wallet was found

How each wallet of a named entity was attributed: the links (bridges, HyperCore sub-accounts, sends both ways, Farcaster self-declarations) back to the public source, with their proofs (source, time, USD value, chains), and the HyperCore metrics of smart-money wallets. Use it to judge an attribution before relying on it.

Input parameters:

- `id` (string, required): Entity id
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)

### `get_entity_pnl` (~167 tokens)

A named wallet's PnL curve

The HyperCore PnL curve of a named entity (id from search_entities): per hour or day, realized PnL, fees, funding, net and cumulative net, over 7d, 30d, 90d or all history. Realized only: open positions' unrealized PnL is in get_entity's answer.

Input parameters:

- `bucket` (string): Bucket: 1h (window 7d or 30d) or 1d. Default 1d (default 1d)
- `id` (string, required): Entity id
- `window` (string): UTC days ending today: 7d, 30d, 90d, or all (since `dataStart`). Default 30d (default 30d)

### `kol_leaderboard` (~240 tokens)

Named-wallet leaderboard

Named wallets ranked by their trading on a layer. hypercore: PnL, volume, fills, win rate, open notional (default 7d, sort netPnl). hyperevm / elysium: swaps, transfers, net buy, holdings, bridge legs (default 24h, sort volume).

Input parameters:

- `kind` (string): Entities: named (people, funds, pseudonyms from public sources), cluster (anonymous smart-money clusters: HyperCore traders selected on their results), all, or a kind it contains (whale, market maker…
- `layer` (string): Layer (default hypercore)
- `limit` (integer): Rows (default 25)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)
- `sort` (string): Sort (per layer, see above; default netPnl / volume)
- `window` (string): Window (hypercore: 7d by default, EVM layers: 24h)

### `kol_positioning` (~173 tokens)

Named-wallet positioning per market

How named wallets (KOLs, funds, market makers; or smart-money clusters with kind=cluster) are positioned on each HyperCore perp: long vs short notional and entity counts, net, average entry and unrealized PnL per side, the named position closest to liquidation, the largest entities per side, and the net change over 1 h and 24 h. One market with coin.

Input parameters:

- `coin` (string): One perp market only
- `kind` (string): Entities: named (people, funds, pseudonyms from public sources), cluster (anonymous smart-money clusters), all. Default: named (default named)
- `limit` (integer): Markets, largest gross notional first (default 20)
- `top` (integer): Largest entities listed per side (default 3)

### `kol_activity` (~188 tokens)

Named-wallet moves

Latest moves of named wallets, newest first: HyperCore fills (minNotional USD, default 1000), HyperEVM / Elysium swaps and transfers. Optionally one entity (id from search_entities). Next page: pass `next_cursor` as cursor.

Input parameters:

- `cursor` (string): Next page: `next_cursor` of the previous answer
- `entity` (string): One entity only
- `layer` (string): Layer (default hypercore)
- `limit` (integer): Rows (default 50)
- `minNotional` (string): Smallest USD value (hypercore: px × sz, default 1000; EVM: none by default)
- `network` (string): Elysium network: mainnet or testnet, same answers (testnet USD values null). HyperCore and HyperEVM are always mainnet (default mainnet)

### `get_builders` (~201 tokens)

Builder codes ranked

HyperCore builder codes ranked over a window (24h, 7d, 30d, 90d, all since 2025-07-19): builder fees earned (USD stablecoins at par, exact per token), volume, fills, distinct users, share of all builder fees, and order outcomes (distinct orders, filled, canceled, rejected; from 2026-10-13 15:50 UTC), and the app behind each code (Phantom, MetaMask…) when known. Sort by fees, volume, fills, users or orders.

Input parameters:

- `limit` (integer): Builders (default 25)
- `sort` (string): Order, largest first (default fees)
- `window` (string): Window, whole hours ending with the current one: 24h, 7d, 30d, 90d, or all (since 2025-07-19) (default 30d)

### `get_builder` (~163 tokens)

One builder code

One HyperCore builder code over a window (24h to all since 2025-07-19): fees (USD stablecoins at par, exact per token), volume, fills, users, rank; one row per day; its markets; its orders from 2026-10-13 15:50 UTC by status (fills, cancels, each rejection reason) and the fee rates they charged.

Input parameters:

- `builder` (string, required): Builder address (0x), as orders name it in `builder.b`
- `window` (string): Window, whole hours ending with the current one: 24h, 7d, 30d, 90d, or all (since 2025-07-19) (default 30d)

### `get_builder_orders` (~208 tokens)

Builder orders

Order statuses of one HyperCore builder code, newest first: open, filled, canceled, triggered and every rejection reason, with market, side, type, prices, sizes, account and the fee rate charged. From 2026-10-13 15:50 UTC; window from / to, default 24 h, at most 7 days per call. Next page: pass `next_cursor` as cursor.

Input parameters:

- `builder` (string, required): Builder address (0x), as orders name it in `builder.b`
- `coin` (string): One market
- `cursor` (string): Next page: `next_cursor` of the previous answer
- `from` (integer): Window start (Unix ms, default to − 24 h)
- `limit` (integer): Rows (default 50)
- `status` (string): One status
- `to` (integer): Window end (Unix ms, exclusive, default now)
- `user` (string): One account

### `get_builder_fills` (~194 tokens)

Builder fills

Fills of one HyperCore builder code, newest first, with the builder fee of each, account, market, price, size, direction, PnL, oid, tid and hash. From 2025-07-19; window from / to, default the last 24 h, at most 24 h per call. Next page: pass `next_cursor` as cursor.

Input parameters:

- `builder` (string, required): Builder address (0x), as orders name it in `builder.b`
- `coin` (string): One market
- `cursor` (string): Next page: `next_cursor` of the previous answer
- `from` (integer): Window start (Unix ms, default to − 24 h)
- `limit` (integer): Rows (default 50)
- `to` (integer): Window end (Unix ms, exclusive, default now)
- `user` (string): One account

### `get_deploys` (~616 tokens)

HyperCore deploy actions

HyperCore deploy actions, newest first: `perpDeploy` (HIP-3 perp dexs: market registrations, halts, funding rates, open interest caps, margin tables, sub-deployers…), `spotDeploy` (HIP-1 tokens and spot pairs), `outcomeDeploy` and `activateOutcomeDeployer` (HIP-4 outcomes), `VoteGlobalAction` (validator votes: `J` lists a main-dex perp), with account, signers, status and the exchange's answer; the action as the node wrote it, every digit (a named wallet's address: its handle). Filters: kind, variant, dex, coin, user, status; notable: true leaves out the routine actions (funding interest rates, outcomes registered from a template, every outcome settlement, the validators' votes registering and settling outcomes and questions). Window from / to, default the last 24 h, at most 31 days per call, since 2026-11-01. head: the newest block the history has read; pending: blocks of the window it does not hold yet. Named wallets carry `entity`. Next page: pass `next_cursor` as cursor (same window).

Input parameters:

- `coin` (string): One coin (BTC, xyz:TSLA)
- `cursor` (string): Next page: `next_cursor` of the previous answer
- `dex` (string): One perp dex or outcome venue
- `from` (integer): Window start (Unix ms, default `to` − 24 h)
- `kind` (string): One kind; every one when absent
- `limit` (integer): Deploy actions (default 50)
- `notable` (boolean): true: the notable actions only, the routine ones left out: `perpDeploy` `setFundingInterestRates` (each HIP-3 dex's funding interest rates), `outcomeDeploy` `registerStandaloneOutcomeFromTemplate` (e…
- `status` (string): ok or err; both when absent
- `to` (integer): Window end (Unix ms, exclusive, default now)
- `user` (string): Only this account
- `variant` (string): One variant, as written: the action's key (registerAsset2, haltTrading, setFundingInterestRates, J…), an outcome operation (settleOutcome…); several keys: sorted, joined by commas

### `create_webhook` (~239 tokens)

Create a webhook

Create an outgoing webhook: we POST the events of its subscriptions to your HTTPS URL (port 443 or 8443, public address), signed (Standard Webhooks: webhook-id, webhook-timestamp, webhook-signature = v1,<base64 HMAC-SHA256 of "id.timestamp.body" with the secret>). Channels (WebSocket vocabulary): bridge.transfers and elysium.bridge (matched bridge legs), wallet (filter.address: up to 100 addresses, filter.channel: event kinds), hc.liquidations and hc.positions (filter.min_notional; positions >= 10000), elysium.launches, hyperevm.launches. Your URL first gets a webhook.verification POST: answer {"challenge": "<data.challenge>"} within 10 s, nothing else is sent before. The answer carries the secret once. Free tier: 2 webhooks, 5 subscriptions, 10k deliveries a day.

Input parameters:

- `description`: Your label (<= 200 characters)
- `subscriptions` (array, required): What to deliver
- `url` (string, required): https, port 443 or 8443, a public address

### `list_webhooks` (~92 tokens)

Your webhooks

Your account's webhooks: URL, state (pending_verification, active, disabled with the reason and how to enable), failures in a row, subscriptions. A rotated key sees the same webhooks. Next page: pass `next_cursor` as cursor.

Input parameters:

- `cursor` (string): Next page: `next_cursor` of the previous answer
- `limit` (integer): Webhooks (default 50)

### `get_webhook` (~64 tokens)

One webhook

One of your webhooks: state (pending_verification, active, or disabled with the reason and how to turn it on), failures in a row, subscriptions with their seq, today's deliveries against your tier's daily limit.

Input parameters:

- `id` (string, required): Webhook id

### `update_webhook` (~96 tokens)

Change a webhook

Change a webhook: url (verified again by a webhook.verification challenge before anything else is sent), description, or subscriptions (the whole list: unchanged ones keep their seq).

Input parameters:

- `description`: Your label (<= 200 characters)
- `id` (string, required): Webhook id
- `subscriptions` (array): What to deliver
- `url` (string): https, port 443 or 8443, a public address

### `enable_webhook` (~62 tokens)

Turn a webhook on again

Turn a disabled webhook (410 Gone, or failing for 24 h) on again: your URL gets a new webhook.verification challenge, deliveries resume once it is answered; pending ones are kept 7 days.

Input parameters:

- `id` (string, required): Webhook id

### `rotate_webhook_secret` (~54 tokens)

Rotate a webhook secret

A new whsec_ signing secret, answered once; for 24 h every delivery carries two signatures (the new and the previous secret): accept either while you switch.

Input parameters:

- `id` (string, required): Webhook id

### `delete_webhook` (~34 tokens)

Delete a webhook

Delete one of your webhooks and its pending deliveries. Cannot be undone.

Input parameters:

- `id` (string, required): Webhook id

### `test_webhook` (~45 tokens)

Test a webhook

Queue a webhook.test delivery to a verified webhook (not billed); its result shows in get_webhook_deliveries within seconds.

Input parameters:

- `id` (string, required): Webhook id

### `get_webhook_deliveries` (~127 tokens)

Webhook deliveries

Deliveries of one webhook, newest first (kept 7 days): msgId (the webhook-id header), type, status pending / delivered / dead, and each attempt with its HTTP status, latency, error and the first 4 KiB of your answer. Next page: pass `next_cursor` as cursor.

Input parameters:

- `cursor` (string): Next page: `next_cursor` of the previous answer
- `id` (string, required): Webhook id
- `limit` (integer): Deliveries (default 20)
- `status` (string): Only these

### `replay_webhook` (~117 tokens)

Replay webhook deliveries

Send deliveries again, same webhook-id (dedupe on it): one (msgId, delivered or dead), or every dead one since a time (since, Unix ms within 7 days; status all: delivered ones too).

Input parameters:

- `id` (string, required): Webhook id
- `msgId` (string): One delivery (its msgId)
- `since` (integer): Unix ms, within the last 7 days
- `status` (string): dead: the dead deliveries; all: the delivered ones too (default dead)

### `get_account` (~76 tokens)

Your account

Your Femtos account: name, tier and limits in force, balance and debt (USD), credits used this month and free credits left, monthly cap, plan and renewal, how to pay (USDC deposit address, card, x402), how rotate/delete are confirmed (manageWith). Start here to manage the account. Free.

### `get_usage` (~54 tokens)

Your usage

Your usage per UTC day and call class (rest, medium, heavy, hl, ws_bytes, webhook): calls or bytes, credits, USD charged. Free.

Input parameters:

- `days` (integer): Days back (default 30)

### `get_ledger` (~111 tokens)

Your payments and charges

Your money movements, newest first: USDC deposits and x402 packs (with tx), card payments, credits by Femtos, plans paid from the balance, refunds; usage debits with usage=true. With the balance now. Next page: pass `next_cursor` as cursor. Free.

Input parameters:

- `cursor` (string): Next page: `next_cursor` of the previous answer
- `limit` (integer): Entries (default 50)
- `usage` (boolean): Include the usage debits

### `get_deposits` (~60 tokens)

Your USDC deposits

Your USDC deposit address on each chain (HyperCore, HyperEVM, Base, Arbitrum One), amounts waiting to reach the minimum, and its latest deposits: amount, tx, pending / credited / ignored with the reason. Free.

### `get_deposit_address` (~74 tokens)

Your USDC deposit address

Your USDC deposit address (created on the first call, then the same): send USDC on HyperCore (usdSend), HyperEVM, Base or Arbitrum One (ERC-20 transfer) and it is credited 1:1 to your balance. Answers how to pay on each chain. Free.

### `get_payment_options` (~77 tokens)

How to add credit

How to pay your account now: your USDC deposit address on each chain with exact instructions, x402 credit packs, a card checkout URL when cards are offered (give usd), and the credits an amount buys. Free.

Input parameters:

- `usd` (number): Amount to add (USD): a card session for it, the credits it buys

### `get_plans` (~54 tokens)

Plans and prices

The price list: credits per call class (and which calls are medium / heavy), pay-as-you-go bands, plans with their monthly and annual price and included credits, payment methods. Use it before subscribe_plan. Free.

### `subscribe_plan` (~132 tokens)

Subscribe to a plan

Subscribe to a plan (get_plans lists them): paid from your USDC balance now (interval month, or year = 12 months prepaid at a discount) and renewed from it, or by card (checkout URL). Spends money. 402 insufficient_balance says how much to deposit. Free.

Input parameters:

- `interval` (string): month (default) or year (12 months prepaid from the balance)
- `payWith` (string): Default: card when cards are offered and monthly, else balance
- `planId` (string, required): Plan id (GET /v1/account/plans `plans.list[].id`)

### `cancel_plan` (~44 tokens)

Cancel your plan

Stop your plan from renewing: it runs to its period end (no refund), then the key is back on pay as you go. subscribe_plan before then resumes it. Free.

### `quote_wallet_payment` (~202 tokens)

Pay from your wallet: quote

Step 1 of paying from an EVM wallet with USDC (Base, Arbitrum One or HyperEVM), no gas: the EIP-712 typed data of a USDC TransferWithAuthorization to sign with eth_signTypedData_v4, for a plan (planId, interval: what the balance lacks) or a top-up (usd). Then pay_with_wallet with the signature. Free.

Input parameters:

- `chain` (string, required): Network the USDC is paid on: base, arbitrum (Arbitrum One) or hyperevm
- `interval` (string): With planId: month (default) or year
- `payer` (string, required): The wallet that signs and pays
- `planId` (string): A plan to buy (GET /v1/account/plans `plans.list[].id`): the quote is what the balance lacks for it
- `usd` (number): A top-up: the amount (USD)

### `pay_with_wallet` (~230 tokens)

Pay from your wallet

Step 2: send chain, authorization (the quote typedData.message), signature, and the planId / interval or usd of the quote. Femtos settles it on chain (no gas for you) and credits the account or buys the plan. state pending: call again with the same body after retryAfter (never charged twice). Spends money. Free.

Input parameters:

- `authorization` (object, required): `typedData.message` of the quote: {from, to, value, validAfter, validBefore, nonce}
- `chain` (string, required): Network the USDC is paid on: base, arbitrum (Arbitrum One) or hyperevm
- `interval` (string): With planId: month (default) or year
- `planId` (string): A plan to buy (GET /v1/account/plans `plans.list[].id`): the quote is what the balance lacks for it
- `signature` (string, required): The wallet signature of `typedData` (65 bytes, EOA)
- `usd` (number): A top-up: the amount quoted

### `set_spending_cap` (~64 tokens)

Set your spending cap

Set your monthly spending cap in USD (null lifts it). Past it, heavy and medium calls answer 402 until next month. Answers the billing view. Free.

Input parameters:

- `capUsd` (required): Monthly cap in USD (at most 6 decimals); null: no cap

### `rotate_key` (~113 tokens)

Rotate your key

Replace your API key: the new one is answered once, the current one (the one this MCP connection uses) stops working at once: reconnect with the new key. Needs management_secret (agents); an account with an email gets a confirmation link instead. Free.

Input parameters:

- `management_secret` (string): Your management secret (fms_…, answered once at signup): runs the action at once. Also read from the X-Management-Secret header. An account with an email gets a confirmation link by email instead (20…

### `freeze_key` (~55 tokens)

Freeze your key

Emergency stop for a leaked key: it is refused everywhere at once, this MCP connection included. Unfreeze or rotate it after with your management secret (POST /v1/account/unfreeze, /v1/account/rotate). Free.

### `delete_account` (~133 tokens)

Delete your account

Delete your account: the key stops working for good. Refused while a plan runs or overage is due; a positive balance is lost only with forfeit_balance=true. Needs management_secret (agents); an account with an email gets a confirmation link. Cannot be undone.

Input parameters:

- `forfeit_balance` (boolean): Agree to lose the balance left (no refund)
- `management_secret` (string): Your management secret (fms_…, answered once at signup): runs the action at once. Also read from the X-Management-Secret header. An account with an email gets a confirmation link by email instead (20…

### `get_signup_challenge` (~85 tokens)

Get a key: challenge

No key needed. Step 1 of a free API key for an agent: a proof-of-work challenge. Find a nonce of 1-32 characters [0-9a-zA-Z] such that SHA-256 of "<salt>:<nonce>" starts with `difficulty` zero bits (run code: about 0.5 M hashes), then call signup.

### `signup` (~163 tokens)

Get a key

No key needed. Step 2: send agent_name with the solved salt and nonce; answers a free API key and a management secret, each once: save both (the secret rotates, unfreezes and deletes the account). Then connect with Authorization: Bearer <key>.

Input parameters:

- `agent_name` (string, required): Your agent name (1-64 printable characters, not unique)
- `nonce` (string, required): 1-32 characters [0-9a-zA-Z] such that SHA-256("<salt>:<nonce>") starts with `difficulty` zero bits
- `owner_email` (string): Its operator, for our records (never an account address, never written to)
- `salt` (string, required): `salt` of GET /v1/account/signup

### `get_recovery_challenge` (~64 tokens)

Recover an x402 account: message

No key needed. Lost the key of an account created by an x402 payment? Get the message its paying wallet must sign (personal_sign), then call recover_account. EOA wallets only.

Input parameters:

- `wallet` (string, required): The wallet that paid with x402

### `recover_account` (~85 tokens)

Recover an x402 account

No key needed. Send wallet, nonce and the signature of the recovery message: answers a new key and management secret (save both), the old ones stop working.

Input parameters:

- `nonce` (string, required): `nonce` of step 1
- `signature` (string, required): personal_sign of `message` (65 bytes)
- `wallet` (string, required): The wallet that paid with x402

## Diagnostics

Captured diagnostic sections: TLS, DNSSEC, Authorisation, Transports. The full working is on the page: https://verifymcp.io/servers/xyz-femtos-mcp/api#diagnostics

## Score history

- 2026-11-05: 68
- 2026-11-04: 67
- 2026-11-03: 67
- 2026-11-02: 66
- 2026-11-01: 66
- 2026-10-31: 65
- 2026-10-30: 65
- 2026-10-29: 65
- 2026-10-28: 64
- 2026-10-27: 63
- 2026-10-26: 63
- 2026-10-25: 62
- 2026-10-24: 62
- 2026-10-23: 61
- 2026-10-22: 62
- 2026-10-21: 61

## Common questions

### What is the Femtos MCP server?

Femtos is an MCP server listed in the public MCP registry as xyz.femtos/mcp. Hyperliquid data on HyperCore, HyperEVM, Elysium: balances, prices, trades, token security, bridges. This page covers its hosted endpoint (https://api.femtos.xyz/mcp).

### Is the Femtos MCP server safe to use?

Femtos scores 68 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.

### What tools does the Femtos MCP server expose?

Femtos exposes 97 tools: get_status, list_markets, list_top_tokens, get_candles, get_trades, and 92 more. Their descriptions and schemas cost roughly 19,569 tokens of context every time the server is loaded.

### Does the Femtos MCP server require authentication?

No. We connected to Femtos without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.

### Is the Femtos MCP server still maintained?

Femtos is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.

## Links

- Remote endpoint: https://api.femtos.xyz/mcp
- Authorisation metadata: https://api.femtos.xyz/.well-known/oauth-protected-resource/mcp
- Website: https://femtos.xyz/mcp
- Changelog RSS feed: https://verifymcp.io/servers/xyz-femtos-mcp/api.xml
- Changelog JSON feed: https://verifymcp.io/servers/xyz-femtos-mcp/api.json
- HTML version of this page: https://verifymcp.io/servers/xyz-femtos-mcp/api
