Skip to main content
Glama

Macro & Commodities Desk

Kalshi 15-Minute Markets — every series, live

fifteen_min_board
Read-only

Use for "what is the ETH 15-minute market doing" and "which Kalshi 15-minute markets are open". Every Kalshi 15-minute up-or-down series (crypto, metals, energy, FX): window status, YES price, close time, target, settlement source and the up rate over the last 96 windows; the same window on Polymarket international for BTC/ETH/SOL/XRP; and our live Bitcoin top-of-hour strategy with its record.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "fifteen_min_board"
  }
}

Input Schema

NameRequiredDescriptionDefault
limitNoMax rows (default 30; 4 when the call has no arguments).
seriesNoOne series: ticker (KXETH15M) or asset ("eth", "gold", "euro").
horizonNo15m (Kalshi, default) or 5m (Polymarket US BTC/ETH/SOL/XRP; Kalshi lists none). One of: 15m · 5m.
open_onlyNoOnly series with a window open right now (default false).
asset_classNocrypto · commodity · currency · all (default all).

Output Schema

NameRequiredDescriptionDefault
rowsNoKalshi 15-minute series: window status, YES price, close time, target, settlement source, up rate; for BTC/ETH/SOL/XRP the same window on Polymarket (international, live book: price_source, as_of), and on the Bitcoin row venue_record — the two venues graded on the same windows.
as_ofNoWhen the board was read.
sourcesNo
our_modelNoBitcoin only: our published top-of-hour strategy — version and status ("current version": it stays until it breaks), live_record (our own Kalshi account, after fees), paper record, last_call (the bot's newest decision for a closed window; source bot or paper), next decision time, and current_call: the bot's own :55 decision for the open window (PLAY = live, WATCH = paper).
tell_userNoShow this sentence to the user first.
timestampNo
needs_inputNo
example_callNo
data_freshnessNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedInput schema / properties / limit / description
      Previous value: -"Max rows (default 30)."New value: +"Max rows (default 30; 4 when the call has no arguments)."
  2. Changed1 schema field changed
    • addedInput schema / properties / horizon
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "enum": [
      +        "15m",
      +        "5m"
      +      ],
      +      "type": "string"
      +    }
      +  ],
      +  "description": "15m (Kalshi, default) or 5m (Polymarket US BTC/ETH/SOL/XRP; Kalshi lists none). One of: 15m · 5m."
      +}
  3. Changed3 schema fields changed
    • removedInput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
    • changedInput schema / properties / limit / description
      Previous value: -"Max rows (default 30). Values above 40 are clamped to 40."New value: +"Max rows (default 30)."
    • removedOutput schema / $schema
      Removed value: -"https://json-schema.org/draft/2020-12/schema"
  4. Changed2 schema fields changed
    • changedOutput schema / properties / our_model / description
      Previous value: -"Bitcoin only: our published top-of-hour rule — status (WATCH until it passes), paper record, last graded call, next decision time, and current_call: the bot's own :55 decision for the open window (PLAY = live, WATCH = paper)."New value: +"Bitcoin only: our published top-of-hour strategy — version and status (\"current version\": it stays until it breaks), live_record (our own Kalshi account, after fees), paper record, last_call (the bot's newest decision for a closed window; source bot or paper), next decision time, and current_call: the bot's own :55 decision for the open window (PLAY = live, WATCH = paper)."
    • changedOutput schema / properties / rows / description
      Previous value: -"Kalshi 15-minute series: window status, YES price, close time, target, settlement source, up rate."New value: +"Kalshi 15-minute series: window status, YES price, close time, target, settlement source, up rate; for BTC/ETH/SOL/XRP the same window on Polymarket (international, live book: price_source, as_of), and on the Bitcoin row venue_record — the two venues graded on the same windows."
  5. Changed2 schema fields changed
    • removedInput schema / properties / limit / anyOf
      Removed value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "type": "number"
      -      },
      -      {
      -        "type": "string"
      -      }
      -    ]
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / limit / type
      Added value: +[
      +  "number",
      +  "string",
      +  "null"
      +]
  6. Changed1 schema field changed
    • addedOutput schema / properties / our_model
      Added value: +{
      +  "description": "Bitcoin only: our published top-of-hour rule — status (WATCH until it passes), paper record, last graded call, next decision time, and current_call: the bot's own :55 decision for the open window (PLAY = live, WATCH = paper)."
      +}
  7. Changed6 schema fields changed
    • addedInput schema / properties / limit / anyOf
      Added value: +[
      +  {
      +    "anyOf": [
      +      {
      +        "type": "number"
      +      },
      +      {
      +        "type": "string"
      +      }
      +    ]
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • removedInput schema / properties / limit / default
      Removed value: -30
    • changedInput schema / properties / limit / description
      Previous value: -"Max rows (default 30)."New value: +"Max rows (default 30). Values above 40 are clamped to 40."
    • removedInput schema / properties / limit / maximum
      Removed value: -40
    • removedInput schema / properties / limit / minimum
      Removed value: -1
    • removedInput schema / properties / limit / type
      Removed value: -"integer"
  8. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": {},
      +  "properties": {
      +    "as_of": {
      +      "description": "When the board was read."
      +    },
      +    "data_freshness": {},
      +    "example_call": {},
      +    "needs_input": {},
      +    "rows": {
      +      "description": "Kalshi 15-minute series: window status, YES price, close time, target, settlement source, up rate."
      +    },
      +    "sources": {},
      +    "tell_user": {
      +      "description": "Show this sentence to the user first.",
      +      "type": "string"
      +    },
      +    "timestamp": {
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
  9. First observed

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint and openWorldHint, so the safety profile is covered; the description adds substantive scope beyond that — that it spans Kalshi plus Polymarket international, includes a proprietary live strategy and its record, and computes up rates over a 96-window lookback. It does not state refresh cadence or latency for 'live' data, which leaves a small gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The triggering use cases are front-loaded in the first sentence and the second sentence is a dense but purposeful inventory of returned fields. It is a single long comma-spliced sentence carrying a lot, but nearly every clause adds distinct information rather than filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and annotations cover safety; the description supplies the data-scope context an agent needs to pick this tool. Minor omissions remain: no mention of what the 5m horizon yields or how fresh the 'live' figures are.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented, and the baseline is 3. The description adds only incidental mapping — asset classes (crypto, metals, energy, FX) correspond to asset_class, and BTC/ETH/SOL/XRP to the Polymarket scope — while the 5m horizon option and open_only are not illuminated at all.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names the resource precisely (every Kalshi 15-minute up-or-down series) and enumerates what is returned: window status, YES price, close time, target, settlement source, up rate over 96 windows, plus Polymarket international and a Bitcoin top-of-hour strategy. It doesn't explicitly differentiate itself from the sibling board tool perps_board, but the domain is unmistakable.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is anchored with two concrete example questions ('what is the ETH 15-minute market doing', 'which Kalshi 15-minute markets are open'), which tells an agent the triggering context clearly. There are no explicit exclusions or named alternatives (e.g., when to prefer perps_board or commodity_edge instead), so it stops short of a 5.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.