API
no keyThe 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 eitherThe 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 themsearch_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
- get
https://api.jinx.capital/coinsThe top hundred by market cap, ranked.
Query
filter- an exact name or symbol, case insensitive
https://api.jinx.capital/coins ↗Returns
An array of coin objects. The price series is dropped here.
- get
https://api.jinx.capital/coins/:idOne coin, addressed by either its id or its symbol.
https://api.jinx.capital/coins/bitcoin ↗Returns
A coin object carrying two things the list does not send: the price series, and every venue's perpetual on it.
- get
https://api.jinx.capital/coins/:id/chart.pngThe last 72 hours as a candlestick chart, one candle an hour.
https://api.jinx.capital/coins/bitcoin/chart.png ↗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.
- get
https://api.jinx.capital/markets/:pair/candlesHourly candles for a pair, up to a fortnight of them.
Query
limit- how many of the most recent to send, 1 to 336
https://api.jinx.capital/markets/BTC-USD/candles?limit=3 ↗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.
- get
https://api.jinx.capital/markets/:pair/depthHow much is resting near the touch, across nine venues.
https://api.jinx.capital/markets/BTC-USD/depth ↗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.
- get
https://api.jinx.capital/perpetualsEvery 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
https://api.jinx.capital/perpetuals?minVolume=1000000000&limit=5 ↗Returns
An array of contracts, deepest book first. meta carries how many matched before the page.
- get
https://api.jinx.capital/perpetuals/:coinEvery venue's contract for one coin.
https://api.jinx.capital/perpetuals/btc ↗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.
- get
https://api.jinx.capital/exchangesWhat is sitting on each venue, and which way it moved.
https://api.jinx.capital/exchanges ↗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.
- get
https://api.jinx.capital/liquidationsWhat got liquidated across the market, and which side wore it.
https://api.jinx.capital/liquidations ↗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.
- get
https://api.jinx.capital/tradfiThe board outside crypto: indices, futures, commodities, yields and crosses.
https://api.jinx.capital/tradfi ↗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.
- get
https://api.jinx.capital/tradfi/:blockOne block of that board: us, europe, asia, futures, commodities, yields or fx.
https://api.jinx.capital/tradfi/yields ↗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.
- get
https://api.jinx.capital/openapi.jsonThe whole api as a machine readable document.
https://api.jinx.capital/openapi.json ↗Returns
OpenAPI 3.1. A test walks the router against it, so an endpoint cannot be added or renamed without this following.
- get
https://api.jinx.capital/globalWhat the whole market is worth.
https://api.jinx.capital/global ↗Returns
Market cap, 24h volume and change, bitcoin and ether dominance, and the asset count.
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 listedcoin- 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.