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 — with window status, YES price, close time, target price, what it settles on and the up rate over the last 96 windows, plus the same window on Polymarket (international) for BTC, ETH, SOL and XRP with each venue's settlement index, and our Bitcoin top-of-hour rule (WATCH mode). Pass series ("eth", "KXBTC15M") or asset_class.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
limitNoMax rows (default 30). Values above 40 are clamped to 40.
seriesNoOne series: ticker (KXETH15M) or asset ("eth", "gold", "euro").
open_onlyNoOnly series with a window open right now (default false).
asset_classNocrypto · commodity · currency · all (default all).

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
rowsNoKalshi 15-minute series: window status, YES price, close time, target, settlement source, up rate.
as_ofNoWhen the board was read.
sourcesNo
our_modelNoBitcoin 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).
tell_userNoShow this sentence to the user first.
timestampNo
needs_inputNo
example_callNo
data_freshnessNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. 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"
      +]
  2. 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)."
      +}
  3. 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"
  4. 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"
      +}
  5. First observed

TDQS

A4/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true and destructiveHint=false, so the safety profile is covered; the description adds real behavioral scope beyond that — window status, close time, settlement index, the 96-window up rate, a Polymarket comparison, and a WATCH-mode rule. It does not mention freshness/latency, rate limits, or auth, which keeps it below a 5.

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

Conciseness3/5

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

Front-loaded with usage examples, which is good, but the middle of the description is a single run-on sentence enumerating return fields that an output schema already covers. That list costs length without adding decision-relevant information.

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?

An output schema exists, so return values needn't be explained, and the description still covers scope, venue comparison and the special rule. Enough for an agent to call it correctly, though unexplained references like 'WATCH mode' and the 96-window up rate are left for the agent to interpret from the payload.

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 the schema already documents limit, series, open_only and asset_class, including examples ('eth', 'gold', 'euro'). The description's 'Pass series ("eth", "KXBTC15M") or asset_class' mostly restates the schema, though it usefully shows the ticker form; baseline 3 applies.

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

Purpose5/5

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

States a precise resource — live Kalshi 15-minute up-or-down series across crypto, metals, energy and FX — with an implied read verb and clear scope. The '15-minute' qualifier plus cross-venue Polymarket detail cleanly separates it from siblings like perps_board and commodity_edge, which cover different instrument sets.

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?

Front-loads two concrete triggering questions ('what is the ETH 15-minute market doing', 'which Kalshi 15-minute markets are open') that map directly to the series/open_only params. It gives clear context for when to reach for it, but never names an alternative tool or states when not to use it.

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.