What it sells
There are five paid tools and two free ones. Every paid tool reads public data, adds Cashboard's own computation where the tool says so, and returns the same kind of answer: the data, the time it was observed, the sources it came from, and whether you were charged. No tool trades, signs or reads anything from a Cashboard board.
| Tool | What it returns | Price | Cached for | Sources |
|---|---|---|---|---|
cashboard_perp_scan | Hyperliquid perps that meet one to three conditions at once: annualized funding, open interest change over 15 minutes, 1 hour or 4 hours, and basis against Solana spot for Solana assets. Each match carries its readings, funding APR, open interest and volume. | 0.02 | 15 seconds, 30 seconds with a basis condition | Hyperliquid, Cashboard OI history, DexScreener (only the computed basis is returned) |
cashboard_oi_movers | Hyperliquid perps ranked by open interest change over 15 minutes, 1 hour or 4 hours, in percent and USD, with the mark price change and funding APR alongside. | 0.02 | 15 seconds (open interest changes come from one stored snapshot a minute) | Hyperliquid, Cashboard OI history |
cashboard_funding_extremes | The highest and lowest annualized funding on Hyperliquid perps, with premium, open interest and 24 hour volume. Hyperliquid's own funding only. | 0.01 | 15 seconds | Hyperliquid |
cashboard_wallet_swaps | Recent swaps of up to ten Solana wallets you name, newest first, valued in USD where one leg is USDC, USDT or SOL, plus the tokens that two or more of those wallets traded. | 0.03 | 30 seconds (token names: 24 hours) | Solana (read through Cashboard's RPC), Hyperliquid for the SOL price |
cashboard_chain_pulse | Block time, live TPS, base fee, block utilization and the USD cost of a transfer and a swap for Base, Robinhood Chain, Arbitrum One or HyperEVM, plus daily transactions and active addresses for Base and Arbitrum. | 0.01 | 30 seconds (daily activity: 1 hour) | The chain's own RPC, Hyperliquid for the native price, growthepie for daily activity |
| Tool | What it does |
|---|---|
cashboard_catalog | Lists the paid tools with their price, freshness, sources and HTTP route, the networks that accept payment, and how many free samples your address has left today. It is never charged and does not use up a sample. |
cashboard_sample | Runs one paid tool for free. It takes tool (a name from the catalog) and arguments (that tool's input) and returns the same result with charged: false. cashboard_wallet_swaps has no sample, because you choose the wallets and Cashboard cannot bound what reading them costs. |
Arguments
| Tool | Arguments |
|---|---|
cashboard_perp_scan | conditions: one to three, all of which must hold. Each has a metric (funding-apr, oi-change or basis), a direction (above or below), a threshold in percent as a decimal string such as "50", and for oi-change a windowMinutes of 15, 60 or 240 (default 60). basis works for these Hyperliquid markets only: SOL, JUP, WIF, kBONK (BONK trades as kBONK), JTO, POPCAT, FARTCOIN, RENDER, W, MOODENG, ME, USELESS. markets: up to 50 Hyperliquid market names, default every live main-dex perp. Names that are not live main-dex perps (or, for basis, not on that list) are named in a note, and a scan where none of the names can be scanned is not charged. limit: 1 to 50, default 20. |
cashboard_oi_movers | window: 15, 60 or 240 minutes, required. direction: up, down or both (default). minOiUsd: the smallest open interest to rank, default 1,000,000. limit: 1 to 50, default 20. |
cashboard_funding_extremes | side: high, low or both (default). minOiUsd: default 1,000,000. limit: markets per side, 1 to 50, default 20. |
cashboard_wallet_swaps | chain: solana, the only value. wallets: one to ten Solana addresses. sinceMinutes: 1 to 360, default 60. limit: swaps to return, 1 to 50, default 50. The overlap summary always covers every swap found. |
cashboard_chain_pulse | chain: base, robinhood, arbitrum or hyperevm. |
What a result looks like
| `tool` | The tool name. |
|---|---|
| `observedAt` and `ageSeconds` | The time of the oldest data point behind the result, and how many seconds old that is. For cashboard_chain_pulse it dates the chain vitals; the daily activity carries its own date. A cached value keeps its true age, so a value that was read 12 seconds ago says 12, not 0. A value older than twice its cache time is never served: the call fails and is not charged. |
| `data` | The tool's answer. Numbers that need exact precision are decimal strings. |
| `notes` | Plain sentences about gaps: a wallet that could not be read, history that is too short, an asset with no value. When a result is not charged, the last note starts with Not charged: and gives the reason. |
| `sources` | Each source with its link, and the attribution text where the source requires one. |
| `charged` | true when the call was settled or its settlement is pending (see Receipts), false for a sample or an incomplete result. |
Token names, symbols and market names in a result are data from the chain or a venue, and can hold any text. The tool descriptions tell the agent to treat them as data, not instructions. Whether the agent obeys is up to the agent.
The free sample
Add the MCP server to Claude Code with one command. It needs no wallet and no key, and it gives the agent cashboard_catalog and cashboard_sample next to the five paid tools.
claude mcp add --transport http cashboard-signals https://cashboard.live/mcp- Each address gets 25 free samples per UTC day, and all addresses together get 1,000 a day. The counter resets at 00:00 UTC, and the catalog shows how many you have left.
- A sample is served from the same cache as a paid call, with the same freshness, so it is a fair preview of what you would pay for.
- Samples use the same per-minute limits as paid calls, and a sample of an incomplete result is returned with its note like any other result.
- The paid tools themselves always ask for payment when called without one. A sample is only reachable through
cashboard_sample.
Other MCP clients connect the same way: point them at https://cashboard.live/mcp as a remote server over HTTP. Nothing is stored between calls, so the server keeps no session.
How to pay
Payment uses x402, which turns an HTTP 402 Payment Required answer into a USDC payment your agent signs and sends with its next request. You need a wallet with USDC on Base or on Solana. You sign a transfer authorization and the payment facilitator submits it, so the wallet needs USDC but no ETH or SOL for fees.
- 1
Give the agent an x402 wallet
Use an MCP server or client that can pay x402 requests, such as Coinbase payments-mcp or agentcash. Fund its wallet with USDC on Base or Solana.
- 2
Call the HTTP route of a tool
The wallet requests
https://cashboard.live/x402/<tool>with the arguments in the query string, receives the price, signs a payment and repeats the request with aPAYMENT-SIGNATUREheader. The routes areperp-scan,oi-movers,funding-extremes,wallet-swapsandchain-pulse. - 3
Read the result and the receipt
A complete result comes back with a
PAYMENT-RESPONSEheader that holds the receipt. See Receipts below.
The MCP tools answer a call that has no payment with an error result that carries the same payment requirements, a line that says the price, and the HTTP route to pay at. A client that supports the x402 MCP transport can attach its payment to the tool call in _meta["x402/payment"] instead, and gets its receipt back in _meta["x402/payment-response"].
The HTTP routes
The routes accept GET only. They set no cross-origin headers, so a web page cannot call them from a browser, and an MCP request carrying another web origin is refused. Arguments go in the query string. A list is comma-separated, and the conditions of perp-scan is a JSON string, URL-encoded. wallet-swaps needs chain=solana.
https://cashboard.live/x402/funding-extremes?side=both&minOiUsd=5000000&limit=10
https://cashboard.live/x402/chain-pulse?chain=base
https://cashboard.live/x402/wallet-swaps?chain=solana&wallets=FKQ443z3YMbfgCu2EUmBezALsKEV8225qv9k7xej4vS1,FSYKJo8zwVX2CHwjKk2rChi9Vsg2nNvaR6SRH1u2edBs&sinceMinutes=60
https://cashboard.live/x402/perp-scan?markets=HYPE,SOL&limit=10&conditions=%5B%7B%22metric%22%3A%22funding-apr%22%2C%22direction%22%3A%22above%22%2C%22threshold%22%3A%2250%22%7D%5DTo see the price and the payment requirements without paying, request a route with its arguments and no payment header. A request with no arguments at all is treated as a probe: it gets the 402 for a built-in example call instead of an error about missing arguments, which is what registries and crawlers need to read the requirements.
curl -i "https://cashboard.live/x402/oi-movers?window=60&direction=up&limit=10"| Status | Meaning | Charged |
|---|---|---|
200 | The result. A charged call carries the PAYMENT-RESPONSE header with its receipt, settled or pending. A result with charged: false carries none. | Only if the header is present |
400 | Invalid arguments, or a PAYMENT-SIGNATURE header longer than 16,384 characters. | No |
402 | Payment required. The PAYMENT-REQUIRED header and the body hold the requirements. The same status comes back when a payment did not match, did not verify or could not be settled, with the reason in error. | No |
403 | Not available in your region. | No |
409 | This payment is already in use by another call. Send each payment once. | No |
429 | A limit was reached. Retry-After gives the seconds to wait. | No |
502 | The upstream data was unavailable or unreadable, payment verification was unavailable, the result was larger than 256 KB, or the service was too busy to finish the call in time. | No |
503 | Paid tools are not enabled, or this tool cannot be served right now. | No |
| Other codes | 404 for an unknown tool, 405 for a method other than GET, 500 for an unexpected error. | No |
Discovery documents
Two documents describe the paid routes for tools that read them: https://cashboard.live/openapi.json, an OpenAPI description with the price of each route, and https://cashboard.live/.well-known/x402, a list of the five paid resources. Each 402 also carries an input example and the input and output schema of the tool.
Networks and payout addresses
Payments are in USDC, which has 6 decimals, so 0.02 is 20000 in the atomic amount a 402 shows. Every requirement says scheme: "exact", the network, the USDC asset, the payout address and a maxTimeoutSeconds of 60. Base is listed first.
| Network | Asset | Payout address |
|---|---|---|
Base, eip155:8453 | USDC, 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 | 0x83C68Dbf0E79f934FcCCd3Ca015103A768C21E83 |
Solana mainnet, solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp | USDC, mint EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v | As6s7SvX5uh28yYqt42PzYFvkmyiv9wYQSeEHE57Q3ZF |
Payments are verified and settled by the Coinbase Developer Platform facilitator. The Solana entry needs the fee payer address the facilitator publishes. If Cashboard cannot read it, the 402 offers Base only and never a Solana entry without it. Check the payout address in the 402 you receive against this page before you sign.
Receipts
A settled call returns its receipt with the result: the PAYMENT-RESPONSE header on the HTTP routes, and _meta["x402/payment-response"] on an MCP call. It names the settlement transaction, the network and the payer, so you can find the transfer on any explorer for that network.
- A receipt marked
pendingmeans the facilitator has not yet confirmed the transfer, and the transaction may still land. You get the result, and nothing asks you to pay again for that call. Cashboard re-checks pending payments against the chain every minute. - If settlement fails, you get a
402with the errorSettlement failedand no data. The tool ran, but its content is withheld until the payment goes through. - Each signed payment can be used once. The same payment sent twice at once gets
409or an error that says it is already in use, and only one call runs.
When you are not charged
Cashboard runs the tool before it settles, and settles only a complete result. A failed or partial call never reaches the settlement step, so the signed payment is left unused and it lapses on its own. There is nothing to refund in the normal case.
| Tool | Charged when | Not charged, result still returned with a note |
|---|---|---|
cashboard_perp_scan | The market snapshot was read. For an oi-change condition the stored history covers its window, has a recent snapshot and gives at least one scanned market a baseline. For a basis condition Solana spot was read. No matches is a complete answer. | The history is shorter than a window, unavailable, or has no recent snapshot or no baseline yet, Solana spot is unavailable, or none of the named markets can be scanned. |
cashboard_oi_movers | The market snapshot was read, the stored history covers the window and has a snapshot from the last two minutes, and at least one market has a baseline for the window. | The history is shorter than the window, has no recent snapshot, or has no baseline for any market yet. Right after a deployment it can take up to four hours to cover the 4 hour window. |
cashboard_funding_extremes | The market snapshot was read. | No snapshot means an error, not a partial result. |
cashboard_wallet_swaps | Every named wallet was read. No swaps is a complete answer. A missing token name or SOL price is a note, and the call is still charged. | One or more wallets could not be read. |
cashboard_chain_pulse | The chain's vitals (block time, fees and TPS) were read from its RPC. Missing daily activity is a note, and the call is still charged. | The chain's RPC could not be read. |
- An error with no usable result says
you were not charged: the upstream data could not be read, the tool took longer than its 8 second budget, the payment could not be verified, the result was larger than 256 KB, or the service was too busy to finish the call in time. - A payment that does not match the requirements, or that fails verification, gets the
402again with the reason, and nothing is spent. - A call refused for a limit, a region or a switched-off tool is never charged. All of these checks run before any payment is settled.
- A sample is never charged.
If you believe you were charged for a call that should not have been, write to the support address on the Refunds page with the transaction hash from the receipt. A settled call is refunded only on request, as a manual USDC transfer from Cashboard's wallet.
Limits
| Limit | Value |
|---|---|
| Calls per address | 60 a minute |
| Calls per paying wallet | 120 a minute, counted only for payments that verified |
| Calls in total | 1,200 a minute |
tools/list, initialize, the catalog and the discovery documents | 120 a minute per address |
cashboard_wallet_swaps | 10 a minute per address and per paying wallet, 60 a minute in total |
| Free samples | 25 per address per UTC day, 1,000 a day in total |
| Request body (MCP) | 64 KB |
| Result | 256 KB, otherwise the call fails and is not charged |
| Time to run a tool | 8 seconds |
| Time to pay | maxTimeoutSeconds 60 |
cashboard_wallet_swaps reach | Up to 10 wallets, up to 360 minutes back, and the newest 25 transactions of each wallet. A note says when a wallet had more. |
- A limit answer is an error with the seconds to wait:
429withRetry-Afteron the HTTP routes, andretryAfterSecondson an MCP call. - Callers in Cuba, Iran, North Korea and Syria are refused on every path, free or paid, and so are callers in Crimea, Sevastopol, Donetsk and Luhansk wherever the region of the connection can be read.
- Open interest changes are computed from Cashboard's own history, which stores one snapshot of every live Hyperliquid main-dex perp each minute for a little over four hours. That is why the windows are 15 minutes, 1 hour and 4 hours.
- Prices and the cache times above can change. The catalog and the
402always show the current price.
What it never exposes
- No boards. The service has no access to any board, widget, note, alert or address in a Cashboard app, on the web or on desktop. It is a separate server from the one inside Cashboard Desktop.
- No account. There is nothing to sign up for, and no API key or email address is asked for.
- No IP address in the ledger. The ledger records, among other things, the tool, the amount, the network, the payer address, the transaction, the status, the time and whether the answer came from cache. It keeps these for 13 months. Payer addresses are public on the chain anyway.
- Rate limits and free samples use a salted hash of the IP address that changes every day, never the address itself.
- The wallets you pass to
cashboard_wallet_swapsare used to read those wallets, and their results are cached for 30 seconds. Nothing else is kept about them. - Cashboard never holds your keys. You sign each payment in your own wallet.
Sources and attribution
Each result lists its sources in sources, with a link, and the attribution text where a source requires it. Cashboard does not pass on a source's raw feed. It returns its own computed values and, for Hyperliquid, the public per-market fields listed in the table.
| Source | Used for | Attribution |
|---|---|---|
| Hyperliquid | Perp market data: funding, premium, open interest, mark price, 24 hour volume, and the SOL price that values swaps and fees. | Named in sources. |
| Cashboard OI history | The open interest history that cashboard_oi_movers and oi-change conditions are built on, kept by Cashboard from Hyperliquid's public data. | Named in sources. |
| DexScreener | Solana spot prices for the basis condition. Only the computed basis is returned, never a spot price or pair data. | Named in sources. |
| Solana | Wallet transactions and token names, read from the chain through Cashboard's RPC. | Named in sources. |
| Chain RPCs and explorers | Block time, fees, TPS and utilization for Base, Robinhood Chain, Arbitrum One and HyperEVM. | The chain and its explorer are named in sources. |
| growthepie | Daily transactions and active addresses for Base and Arbitrum. | Source: growthepie, https://www.growthepie.com (CC BY 4.0). It appears in sources whenever its numbers are in a result. |
Many of the same providers feed the widgets on a board. Data sources and freshness explains how Cashboard treats provider outages, and what each widget shows when one is down.
Frequently asked questions
Do I need a Cashboard account or an API key?
No. The free MCP server and the paid HTTP routes need neither. A paid call is authorized by a signed USDC payment, and the free sample is limited by address.
What does a call cost?
From 0.01 to 0.03 USDC. Funding extremes and chain pulse are 0.01, perp scan and open interest movers are 0.02, and wallet swaps is 0.03. The catalog and the 402 answer always show the current price.
Which networks can I pay on?
USDC on Base, and USDC on Solana mainnet. The payout addresses are listed on this page, and the payment requirements in each 402 name the same ones.
What if the data is incomplete or a source is down?
You are not charged. A partial result is returned with charged set to false and a note that says what was missing, and an upstream failure is an error that says you were not charged. Cashboard settles the payment only after a complete result.
Is the output financial advice?
No. Results are market data and computed readings for information only. Cashboard is not a broker, exchange or financial adviser, and the Terms say so.
How is this different from the MCP server in Cashboard Desktop?
The desktop server runs on your computer, is free, and lets an agent read your own boards. The Signals API runs on cashboard.live, charges per call, and reads only public market data. It never sees a board.
Last checked against the code on . Found something out of date? Write to contact@cashboard.live. Market data comes from the providers named on each widget and may be delayed. Nothing here is financial advice.
Cashboard