Skip to content

Femtos

by femtos.xyz · remote · no sign-in to list tools · v1.1.0 · published by xyz.femtos

Hyperliquid data for agents: HyperCore, HyperEVM, Elysium trades, candles, bridges, wallets.

Final · 1Changes · 3

27 tools: 1 do something that can't be undone, 3 change things and 23 only read.

Scanned Oct 21, 2026

2 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.

claude mcp add --transport http femtos https://api.femtos.xyz/mcp --header 'Authorization: <your-authorization>'

Findings

Matches of fixed checks, with the text they matched.

2 warn
  • The server marks "get_positions" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

    Matched text

    annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The name "get_positions" says "get": a word for reading.

    What this check looks for
  • The server marks "get_nft_transfers" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

    Matched text

    annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The name "get_nft_transfers" says "get": a word for reading.

    What this check looks for

Tools

Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.

27 tools

Can't be undone 1Claude Code: ask
  • get_nft_transfersTransfers (mints and burns included) of one collection or one of its tokens, newest first: from, to, token id, amount, block, tx.1 finding

    Why it is in this group

    • The name "get_nft_transfers" says "get": a word for reading.
    • The description's first verb is "transfer": a word for a change that another call does not undo.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "get_nft_transfers" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".

      Matched text

      annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The name "get_nft_transfers" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: NFT transfers
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
Changes things 3Claude Code: ask
  • get_positionsOpen positions of one HyperCore perp at the latest holders snapshot: account, size, side, entry price, notional, unrealized PnL at the mark, leverage, margin mode and liquidation p…1 finding

    Why it is in this group

    • The name "get_positions" says "get": a word for reading.
    • The description's first verb is "open": a word for a change.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.

    Findings

    • Warn

      The server marks "get_positions" read-only (readOnlyHint: true), and its own name, description or input give the class "write".

      Matched text

      annotations: {"readOnlyHint":true,"idempotentHint":true,"openWorldHint":false}; The name "get_positions" says "get": a word for reading.

      What this check looks for
    Description, as the server wrote it
    Open positions of one HyperCore perp at the latest holders snapshot: 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`.

    Annotations the server declares

    • title: Open positions
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • kol_activityLatest moves of named wallets, newest first: HyperCore fills (minNotional USD, default 1000), HyperEVM / Elysium swaps and transfers.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Named-wallet moves
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • kol_leaderboardNamed wallets ranked by their trading on a layer.No findings

    Why it is in this group

    • Nothing in its name or description says what it does, so it is counted as a write.
    • The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • title: Named-wallet leaderboard
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
Only reads 23Claude Code: allow
  • get_bookLive 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.No findings

    Why it is in this group

    • The name "get_book" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Order book
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_bridgesBridge movements, newest first, with 24 h stats.No findings

    Why it is in this group

    • The name "get_bridges" says "get": a word for reading.
    Description, as the server wrote it
    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. Heavy call.

    Annotations the server declares

    • title: Bridge movements
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_candlesOHLCV candles of one market, ascending, UTC-aligned.No findings

    Why it is in this group

    • The name "get_candles" says "get": a word for reading.
    Description, as the server wrote it
    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). Without from: the `limit` candles ending now. Windows over 30 days are billed as heavy calls.

    Annotations the server declares

    • title: OHLCV candles
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_coinOne token: its links across layers, the markets it trades on (most traded first) and its 5 largest holders.No findings

    Why it is in this group

    • The name "get_coin" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: One token
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_erc20_transfersERC-20 Transfer events of a token, newest first (from, to, amount, block, tx).No findings

    Why it is in this group

    • The name "get_erc20_transfers" says "get": a word for reading.
    Description, as the server wrote it
    ERC-20 Transfer events of a token, newest first (from, to, amount, block, tx). Next page: pass `next_cursor` as cursor.

    Annotations the server declares

    • title: ERC-20 transfers
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_holdersLargest holders of a token and its concentration (top-10 share…); system addresses (pools, bridges, launchpad, zero/dead) counted apart.No findings

    Why it is in this group

    • The name "get_holders" says "get": a word for reading.
    Description, as the server wrote it
    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`.

    Annotations the server declares

    • title: Token holders
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_launchThe 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 launchpa…No findings

    Why it is in this group

    • The name "get_launch" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: One launch
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_launch_timelineReplayable 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).No findings

    Why it is in this group

    • The name "get_launch_timeline" says "get": a word for reading.
    Description, as the server wrote it
    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`).

    Annotations the server declares

    • title: Launch timeline
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_liquidation_statsHyperCore 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…No findings

    Why it is in this group

    • The name "get_liquidation_stats" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Liquidation stats
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_liquidationsHyperCore 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).No findings

    Why it is in this group

    • The name "get_liquidations" says "get": a word for reading.
    Description, as the server wrote it
    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 `userEntity`.

    Annotations the server declares

    • title: Liquidations
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_nft_collectionOne 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.No findings

    Why it is in this group

    • The name "get_nft_collection" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: One NFT collection
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_nft_tokensTokens of one collection by token id, ascending: current ERC-721 owner (null for ERC-1155), metadata URI.No findings

    Why it is in this group

    • The name "get_nft_tokens" says "get": a word for reading.
    Description, as the server wrote it
    Tokens of one collection by token id, ascending: current ERC-721 owner (null for ERC-1155), metadata URI. Next page: pass `next_cursor` as cursor.

    Annotations the server declares

    • title: NFT tokens
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_nfts_ownedNFTs 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.No findings

    Why it is in this group

    • The name "get_nfts_owned" says "get": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: NFTs of a wallet
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_statusState of each layer (HyperCore, HyperEVM, Elysium): indexed head block and time, lag behind the chain, live or syncing, Elysium network (testnet / mainnet), HyperCore <> HyperEVM b…No findings

    Why it is in this group

    • The name "get_status" says "get": a word for reading.
    Description, as the server wrote it
    State of each layer (HyperCore, HyperEVM, Elysium): indexed head block and time, lag behind the chain, live or syncing, Elysium network (testnet / mainnet), HyperCore <> HyperEVM bridge matching coverage. Check it when an answer looks stale. Free.

    Annotations the server declares

    • title: Layer status
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_token_lifecycleOne 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, …No findings

    Why it is in this group

    • The name "get_token_lifecycle" says "get": a word for reading.
    Description, as the server wrote it
    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. id: an Elysium / HyperEVM address, core:<index>, a HyperCore token id or name, or a perp coin (dex:COIN).

    Annotations the server declares

    • title: Token across the 3 layers
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_token_volumeDaily 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).No findings

    Why it is in this group

    • The name "get_token_volume" says "get": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • title: Daily token volume
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_tradesLatest trades of a market, newest first.No findings

    Why it is in this group

    • The name "get_trades" says "get": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • title: Latest trades / swaps
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • get_walletOne 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 …No findings

    Why it is in this group

    • The name "get_wallet" says "get": a word for reading.
    Description, as the server wrote it
    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. Heavy call.

    Annotations the server declares

    • title: Cross-layer wallet
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • list_launchesLatest token launches, newest first: Elysium launchpad Ascend (default) or HyperEVM LiquidLaunch (launchpad = liquidlaunch).No findings

    Why it is in this group

    • The name "list_launches" says "list": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Token launches
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • list_marketsTradable markets of a layer, most traded first (24 h USD volume).No findings

    Why it is in this group

    • The name "list_markets" says "list": a word for reading.
    Description, as the server wrote it
    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. `total` = markets matching. Next page: pass `next_cursor` as cursor.

    Annotations the server declares

    • title: Markets and pools
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • list_nft_collectionsMost 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 and standard.No findings

    Why it is in this group

    • The name "list_nft_collections" says "list": a word for reading.
    Description, as the server wrote it
    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 and standard.

    Annotations the server declares

    • title: NFT collections
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • search_coinsTokens by symbol, name or address, with their links across layers (Elysium <-> HyperEVM <-> HyperCore), decimals, supply and USD price.No findings

    Why it is in this group

    • The name "search_coins" says "search": a word for reading.
    Description, as the server wrote it
    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).

    Annotations the server declares

    • title: Find tokens
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false
  • search_entitiesNamed wallets (KOLs, traders, funds, market makers) and their wallets, from public attribution lists (not verified identities).No findings

    Why it is in this group

    • The name "search_entities" says "search": a word for reading.
    Description, as the server wrote it
    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.

    Annotations the server declares

    • title: Named wallets
    • readOnlyHint: true
    • idempotentHint: true
    • openWorldHint: false

This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.

Install

Pinned to version 1.1.0. Values in angle brackets are yours to fill in.

claude mcp add --transport http femtos https://api.femtos.xyz/mcp --header 'Authorization: <your-authorization>'

Run in a terminal.

Claude Code permissions

Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.

.claude/settings.json
{
  "permissions": {
    "allow": [
      "mcp__femtos__get_status",
      "mcp__femtos__list_markets",
      "mcp__femtos__get_candles",
      "mcp__femtos__get_trades",
      "mcp__femtos__search_coins",
      "mcp__femtos__get_coin",
      "mcp__femtos__get_holders",
      "mcp__femtos__list_launches",
      "mcp__femtos__get_launch",
      "mcp__femtos__get_launch_timeline",
      "mcp__femtos__get_token_lifecycle",
      "mcp__femtos__get_bridges",
      "mcp__femtos__get_wallet",
      "mcp__femtos__get_token_volume",
      "mcp__femtos__get_erc20_transfers",
      "mcp__femtos__get_book",
      "mcp__femtos__get_liquidations",
      "mcp__femtos__get_liquidation_stats",
      "mcp__femtos__list_nft_collections",
      "mcp__femtos__get_nft_collection",
      "mcp__femtos__get_nft_tokens",
      "mcp__femtos__get_nfts_owned",
      "mcp__femtos__search_entities"
    ],
    "ask": [
      "mcp__femtos__get_positions",
      "mcp__femtos__get_nft_transfers",
      "mcp__femtos__kol_leaderboard",
      "mcp__femtos__kol_activity"
    ],
    "deny": []
  }
}

Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as femtos. Review it before you use it.