API

no key

The same readings the rest of this site is drawn from, served from https://api.jinx.capital. Nine endpoints, no authentication, and a cache in front of each one matched to how long the reading behind it lasts. The same readings are served to models as MCP tools, below.

MCP

no key either

The same readings as tools a model can call, at https://api.jinx.capital/mcp. Point any MCP client at that url; there is nothing to install and nothing to sign.

{
  "mcpServers": {
    "jinx-capital": {
      "url": "https://api.jinx.capital/mcp"
    }
  }
}
Transport
Streamable HTTP. JSON-RPC 2.0 over POST, one message a request.
Versions
2026-07-28, which carries the version and the client's capabilities on every request rather than negotiating them once. Clients that still open with an initialize handshake are answered on 2025-11-25, 2025-06-18 and 2025-03-26.
Auth
None, the same as the rest of this api.
Rate limit
The same 30 a minute per caller. One tool call is one request however many venues it reads.
Streaming
Every result is a single JSON object. There is no SSE stream to hold open, no session to keep and no GET: the current revision dropped all three, and a tool here answers in one round trip anyway.
Coins
Every argument naming a coin is fuzzy matched, so btc, bitcoin and bitcon all reach the same one. A pair is spelled with a colon, BTC:USDT or ETH:BTC, which goes straight to the venue and reaches coins outside the top hundred.
Results
Both at once: the reading as structuredContent, and the same json serialised into a text block for a client that does not read it. A bad argument or an upstream that fell over comes back as a readable result with isError, not a protocol error, so the model can see it and correct itself.

Tools

ten of them
search_coins
Coins matching a partial, misspelled or alternative name, id or ticker
list_coins
The top hundred, ranked by market cap, the day's move or volume
get_coin
One coin in full, with every venue's perpetual on it and a link to its chart
get_global_market
What the whole market is worth, and bitcoin and ether dominance
get_candles
Hourly candles for a coin or a pair, up to a fortnight of them
get_depth
How much is resting near the touch, across the nine venues that publish a book
get_funding_rates
Who is paying to hold a position, ranked by distance from flat
get_open_interest
Notional open on a coin's perpetual, and which way it moved
get_liquidations
What got liquidated across the market, and which side wore it
get_exchange_flows
What is sitting on each exchange, and which way it moved
get_tradfi
The indices, futures, commodities and yields crypto trades against

Every one is a read. Ask the server itself with tools/list for the arguments each takes, which is the list a client works from rather than this one.

Conventions

Auth
None. There is no key, and nothing to sign up for.
Units
A field says its unit in its name. Anything ending Percent is a percent, so 1.5 means 1.5%. A rate is a fraction, the way every venue publishes one and the number you multiply a position by. Everything else in dollars.
Times
ISO 8601, always UTC.
Pairs
BASE-QUOTE, like BTC-USD or ETH-BTC. Case insensitive.
Shape
JSON under data. A failure carries error instead, and nothing else.
Caching
Every answer is held for exactly as long as the reading behind it: fifteen seconds for an order book, an hour for a listing. An error is never held.
CORS
Open to any origin, GET only.
Rate limit
30 requests a minute per caller. Every answer carries ratelimit-limit, ratelimit-remaining and ratelimit-reset, so a client can pace itself rather than discover the limit by hitting it.
Conditional
Every answer is tagged. Send it back as if-none-match and an unchanged reading costs a 304 rather than the body.
Compression
gzip on request. The coin list is 23 kB of json and 6 kB compressed.
Errors
RFC 9457 problem documents under application/problem+json: type, title, status and detail. 400 when a request is malformed, 404 when it is well formed and nothing answers it, 429 over the limit, 500 if an upstream fails.

Endpoints

  • gethttps://api.jinx.capital/coins

    The top hundred by market cap, ranked.

    Query

    filter
    an exact name or symbol, case insensitive

    Returns

    An array of coin objects. The price series is dropped here.

    https://api.jinx.capital/coins ↗
  • gethttps://api.jinx.capital/coins/:id

    One coin, addressed by either its id or its symbol.

    Returns

    A coin object carrying two things the list does not send: the price series, and every venue's perpetual on it.

    https://api.jinx.capital/coins/bitcoin ↗
  • gethttps://api.jinx.capital/coins/:id/chart.png

    The last 72 hours as a candlestick chart, one candle an hour.

    Returns

    A 1280×720 png, titled with the venue and pair it was drawn from. A coin no venue lists a pair for falls back to a line of closes.

    https://api.jinx.capital/coins/bitcoin/chart.png ↗
  • gethttps://api.jinx.capital/markets/:pair/candles

    Hourly candles for a pair, up to a fortnight of them.

    Query

    limit
    how many of the most recent to send, 1 to 336

    Returns

    An array of candles, oldest first. meta carries the venue that answered and the pair it actually quoted, which is not always the one asked for: a dollar request filled from a tether book says BTC-USDT.

    https://api.jinx.capital/markets/BTC-USD/candles?limit=3 ↗
  • gethttps://api.jinx.capital/markets/:pair/depth

    How much is resting near the touch, across nine venues.

    Returns

    The bands added up, and each venue on its own. A venue whose book stops short of a band is left out of it rather than counted as nothing, so every band says how many venues could see it.

    https://api.jinx.capital/markets/BTC-USD/depth ↗
  • gethttps://api.jinx.capital/perpetuals

    Every perpetual we read, across Binance and Bybit.

    Query

    coin
    one coin, by symbol
    venue
    one venue, by name
    minVolume
    dollars of 24h volume to qualify
    limit
    page size, up to 1000. Default 100
    offset
    where the page starts

    Returns

    An array of contracts, deepest book first. meta carries how many matched before the page.

    https://api.jinx.capital/perpetuals?minVolume=1000000000&limit=5 ↗
  • gethttps://api.jinx.capital/perpetuals/:coin

    Every venue's contract for one coin.

    Returns

    An array rather than a single contract, because the same coin funds differently on each venue and the gap between them is the reading.

    https://api.jinx.capital/perpetuals/btc ↗
  • gethttps://api.jinx.capital/exchanges

    What is sitting on each venue, and which way it moved.

    Returns

    An array of venues by reserves, each with the share held in the token it issues itself. meta carries the totals and how many venues report balances at all.

    https://api.jinx.capital/exchanges ↗
  • gethttps://api.jinx.capital/liquidations

    What got liquidated across the market, and which side wore it.

    Returns

    The rolling 24 hour figure, the most recent day split into longs and shorts, and a month of daily rows. The window and the rows are different measurements of different periods and do not add up.

    https://api.jinx.capital/liquidations ↗
  • gethttps://api.jinx.capital/tradfi

    The board outside crypto: indices, futures, commodities, yields and crosses.

    Returns

    Seven blocks, a level and four windows each, and whether that venue is trading right now. Every window carries a percent and an absolute, because a yield moves in basis points and the block says which of the two to read.

    https://api.jinx.capital/tradfi ↗
  • gethttps://api.jinx.capital/tradfi/:block

    One block of that board: us, europe, asia, futures, commodities, yields or fx.

    Returns

    The same shape holding one block. One call is a reading per symbol upstream, so asking for the corner wanted is cheaper than the lot.

    https://api.jinx.capital/tradfi/yields ↗
  • gethttps://api.jinx.capital/openapi.json

    The whole api as a machine readable document.

    Returns

    OpenAPI 3.1. A test walks the router against it, so an endpoint cannot be added or renamed without this following.

    https://api.jinx.capital/openapi.json ↗
  • gethttps://api.jinx.capital/global

    What the whole market is worth.

    Returns

    Market cap, 24h volume and change, bitcoin and ether dominance, and the asset count.

    https://api.jinx.capital/global ↗

The coin object

id
the identifier /coins/:id takes
name
as listed
symbol
ticker, lower case
rank
by market cap
price
dollars
priceChange24h
dollars moved over 24 hours
priceChangePercent24h
the same move as a percentage
marketCap
dollars
volume24h
dollars traded over 24 hours
ath
all-time high, in dollars
athChangePercent
how far under that high it sits, negative
sparkline
72 hourly closes, oldest first. /coins/:id only
perpetuals
every venue's contract on the coin, the object below. /coins/:id only

The perpetual object

an array, empty where none is listed
coin
the coin it is a contract on
venue
which exchange lists it
contract
what that venue calls it, which is not always the coin's ticker
fundingRate
a fraction of the notional charged this interval, as every venue publishes it
fundingIntervalHours
how often it settles, which is not eight everywhere
fundingAnnualisedPercent
the rate over a year, the only one comparable between venues
markPrice
dollars
volume24h
dollars traded over 24 hours
openInterest
contracts open. Null on the board, where binance does not publish it
openInterestValue
the same in dollars
longAccountsPercent
share of accounts positioned long, where the venue says
shortAccountsPercent
and short

The same coin funds differently on each venue, so this is always a list rather than one contract. The board at /perpetuals leaves the last four off: binance publishes open interest per contract rather than market wide, which one coin can afford to ask for and eight hundred cannot.