How often Kalshi BTC/ETH/XRP contracts settled YES, counted not forecast, with a public record
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Would this rule have made money? Replays recorded Kalshi quotes, second by second. Describe a rule for Kalshi's 15-minute crypto up/down contracts: which side to buy, when (minutes left), at what prices (cents), and optionally only when Sardine's history beats Kalshi's ask plus fee by `min_gap_cents` (side BEST picks whichever side has the larger gap). Sardine replays its per-second recordings of Kalshi's order book: one trade per window, a limit order at the ask landing after `latency_seconds`, filled only up to the size resting there, Kalshi's real fee, and Kalshi's official settlement. Returns profit per contract after fees with a 95% interval, win rate, fill behaviour, a zero-latency comparison (exposes stale-quote illusions), a first-half/second-half stability check, breakdowns by minutes left and price, and warnings. Results only; no raw data. Dates are UTC YYYY-MM-DD. Present results as what happened historically, never as a forecast.
Would this rule have made money? Replays recorded Kalshi quotes, second by second. Describe a rule for Kalshi's 15-minute crypto up/down contracts: which side to buy, when (minutes left), at what prices (cents), and optionally only when Sardine's history beats Kalshi's ask plus fee by `min_gap_cents` (side BEST picks whichever side has the larger gap). Sardine replays its per-second recordings of Kalshi's order book: one trade per window, a limit order at the ask landing after `latency_seconds`, filled only up to the size resting there, Kalshi's real fee, and Kalshi's official settlement. Returns profit per contract after fees with a 95% interval, win rate, fill behaviour, a zero-latency comparison (exposes stale-quote illusions), a first-half/second-half stability check, breakdowns by minutes left and price, and warnings. Results only; no raw data. Dates are UTC YYYY-MM-DD. Present results as what happened historically, never as a forecast.
| Argument | Type | Description |
|---|---|---|
| side | string | |
| market | string | |
| end_date | any | |
| contracts | integer | |
| start_date | any | |
| max_gap_cents | any | |
| min_gap_cents | any | |
| latency_seconds | integer | |
| max_price_cents | number | |
| min_price_cents | number | |
| max_minutes_left | number | |
| min_minutes_left | number |
{
"type": "object",
"title": "backtest_ruleArguments",
"properties": {
"side": {
"enum": [
"YES",
"NO",
"BEST"
],
"type": "string",
"title": "Side",
"default": "YES"
},
"market": {
"enum": [
"BTC-15M",
"ETH-15M",
"XRP-15M"
],
"type": "string",
"title": "Market",
"default": "BTC-15M"
},
"end_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "End Date",
"default": null
},
"contracts": {
"type": "integer",
"title": "Contracts",
"default": 100
},
"start_date": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Start Date",
"default": null
},
"max_gap_cents": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Max Gap Cents",
"default": 25
},
"min_gap_cents": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Min Gap Cents",
"default": null
},
"latency_seconds": {
"type": "integer",
"title": "Latency Seconds",
"default": 2
},
"max_price_cents": {
"type": "number",
"title": "Max Price Cents",
"default": 99
},
"min_price_cents": {
"type": "number",
"title": "Min Price Cents",
"default": 1
},
"max_minutes_left": {
"type": "number",
"title": "Max Minutes Left",
"default": 14
},
"min_minutes_left": {
"type": "number",
"title": "Min Minutes Left",
"default": 2
}
}
}Open Kalshi contracts right now, each with Kalshi's price beside Sardine's count. Optionally filter to one market. Each row has the contract, Kalshi's ask and fee, the historical settlement rate with its interval and sample size, and a plain-English sentence describing the comparison.
| Argument | Type | Description |
|---|---|---|
| limit | integer | |
| market | any |
{
"type": "object",
"title": "get_live_boardArguments",
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 10
},
"market": {
"anyOf": [
{
"enum": [
"BTC-15M",
"ETH-15M",
"BTC-1H"
],
"type": "string"
},
{
"type": "null"
}
],
"title": "Market",
"default": null
}
}
}The full lookup table behind every Sardine number for one series. Each row is a (distance-from-strike, time-left) bucket: distance in volatility units, seconds left, the share that settled YES, its 95% interval, and the number of independent windows counted.
| Argument | Type | Description |
|---|---|---|
| asset | string | |
| window_minutes | integer |
{
"type": "object",
"title": "get_rate_tableArguments",
"properties": {
"asset": {
"enum": [
"BTC",
"ETH",
"XRP"
],
"type": "string",
"title": "Asset",
"default": "BTC"
},
"window_minutes": {
"enum": [
15,
60
],
"type": "integer",
"title": "Window Minutes",
"default": 15
}
}
}How often has a contract like this one settled in favour of `side`? Uses the asset's live spot price. Give the contract's strike (target price), the minutes left until it settles, and optionally Kalshi's ask in dollars (0.01-0.99) to get Kalshi's fee and all-in price on the same line. Returns the historical settlement rate, its 95% interval and the number of past windows counted. A small `windows_counted` means a weak answer.
| Argument | Type | Description |
|---|---|---|
| side | string | |
| asset* | string | |
| strike* | number | |
| kalshi_ask | any | |
| minutes_left* | number | |
| window_minutes* | integer |
{
"type": "object",
"title": "get_settlement_rateArguments",
"required": [
"asset",
"window_minutes",
"strike",
"minutes_left"
],
"properties": {
"side": {
"enum": [
"YES",
"NO"
],
"type": "string",
"title": "Side",
"default": "YES"
},
"asset": {
"enum": [
"BTC",
"ETH",
"XRP"
],
"type": "string",
"title": "Asset"
},
"strike": {
"type": "number",
"title": "Strike"
},
"kalshi_ask": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"title": "Kalshi Ask",
"default": null
},
"minutes_left": {
"type": "number",
"title": "Minutes Left"
},
"window_minutes": {
"enum": [
15,
60
],
"type": "integer",
"title": "Window Minutes"
}
}
}How accurate Sardine's published numbers have been, scored against settlements. For each series and probability bucket: what Sardine said, what actually settled, and the miss in points. Use this before relying on any number.
No arguments.
{
"type": "object",
"title": "get_track_recordArguments",
"properties": {}
}Downloadable CSV history files, with row counts, date ranges and URLs. Files open directly in Excel, pandas or any CSV reader. Credit "Sardine (sardine.info)" when you use them.
No arguments.
{
"type": "object",
"title": "list_datasetsArguments",
"properties": {}
}List the Kalshi series Sardine covers, and whether each is currently served. Each entry gives the Sardine key (e.g. "BTC-15M"), the Kalshi series ticker, the window length, and the latest calibration check: the largest gap, in probability points, between what Sardine published and what then settled.
No arguments.
{
"type": "object",
"title": "list_marketsArguments",
"properties": {}
}