Skip to main content
Glama

KalshiSpy

Server Details

What Kalshi's top-earning traders won and hold: settled wins free, live markets with an API key.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 21 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.4/5.0

Scored across 5 tools

Disambiguation3/5

get_settled_win, get_stats, and list_categories are clearly distinct, but search_markets and search_settled_wins overlap heavily: without an API key search_markets returns exactly the same settled-wins archive that search_settled_wins searches. The lengthy descriptions offer guidance (title-word search vs. series/category search, 'call this first' hints), but an agent can plausibly reach for the wrong one.

Naming Consistency5/5

All five tools follow a consistent snake_case verb_noun pattern (get_settled_win, get_stats, list_categories, search_markets, search_settled_wins). No mixed conventions or vague standalone verbs.

Tool Count5/5

Five tools is well within the sensible range and each one earns its place for a read-only settled-wins archive: point lookup, aggregate stats, category enumeration, and two search entry points. Nothing feels redundant or padded.

Completeness4/5

Read coverage is solid — search, single-win detail, stats, and category facets all exist, plus a 404 hint path. The main gap is that traders are central to the product yet there is no direct trader lookup or filter (e.g., by trader or profit), forcing agents to work through search/stats indirectly.

Available Tools

5 tools
get_settled_winGet one settled win by tickerA
Read-only
Inspect

Full record of one settled Kalshi market this roster won: outcome, consensus, every roster trader on the winning side with their realized profit and picture, close and expiration times, keywords, and hints.similar — comparable wins in the same series to judge it against. Returns 404 when the ticker is not an archived win (the roster was not on it, or was on the losing side); the 404 carries a hint to search the series instead. No API key needed.

NameRequiredDescriptionDefault
tickerYesKalshi market ticker.

TDQS

A4.4/5.0
Behavior5/5

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

Beyond the readOnlyHint annotation, the description adds substantial behavioral context: exactly what the response contains (hints.similar, per-trader realized profit, close/expiration times), the 404 trigger condition, and the fact that the 404 payload carries a fallback search hint. It also states no API key is needed — a non-obvious operational fact.

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 description is front-loaded with the returned record and capped by the 404 behavior, with no redundant sentences. The one long enumeration of fields is dense but earns its place for an open-world record tool.

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

Completeness5/5

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

For a single-resource read with no output schema, the description fully covers what is returned, the failure mode, and the fallback path, leaving no meaningful gap for correct invocation.

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% (the ticker param already documents 'Kalshi market ticker'), so the baseline is 3. The description does not add syntax or format constraints beyond what the schema pattern provides.

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?

The description states a precise verb and resource ('Full record of one settled Kalshi market this roster won') and enumerates the returned fields. It is clearly distinguishable from the sibling search_settled_wins, which searches rather than returns a single record.

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?

The 404 semantics act as implicit usage guidance: if the ticker is not an archived win, the agent is told to fall back to searching the series. However, it does not explicitly contrast this tool with search_settled_wins for the case when the agent only has a series-level question.

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

get_statsGet archive statsA
Read-only
Inspect

Aggregate figures for the settled-wins archive: markets won, net and winners' realized profit, first and last settlement, a per-category breakdown and the highest-profit traders in the archive. Use it for "how has this roster done overall" context, always with the wins-only caveat. available:false means the archive has not been published yet. No API key needed.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the readOnly/openWorld annotations it discloses three non-obvious traits: the data is wins-only (a semantic limitation that changes interpretation), `available:false` signals the archive is unpublished, and no API key is required. These are exactly the facts an agent cannot infer from annotations or an empty schema.

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

Conciseness5/5

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

Three tight sentences, front-loaded with the returned aggregate, then usage, then error/auth notes. Every clause carries information; nothing is redundant.

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

Completeness5/5

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

With no output schema, the description enumerates the returned figures and the sentinel value for the unpublished case, so an agent knows both what it gets back and how to interpret failure. Nothing needed to call or interpret this tool is missing.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4 and there is nothing further for the description to disambiguate. No parameter guidance is needed or missing.

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 specific resource (the settled-wins archive) and enumerates exactly what the aggregate contains: markets won, net and winners' realized profit, first/last settlement, per-category breakdown, top traders. This clearly separates it from the listing/search siblings get_settled_win, search_settled_wins, and list_categories.

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?

Gives an explicit use context ('how has this roster done overall') plus a mandatory caveat (wins-only) that conditions how the result should be interpreted. It stops short of naming an alternative tool for the non-aggregate case, so it is clear but not fully routing.

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

list_categoriesList categories with settled winsA
Read-only
Inspect

Every category that has at least one archived win, with win count, net profit and the last settlement time. Use the key value as the category filter of searchSettledWins. No API key needed.

NameRequiredDescriptionDefault

No parameters

TDQS

A4.5/5.0
Behavior4/5

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

Annotations cover the safety profile (readOnlyHint=true) and open-world scope, so the description doesn't need to restate that. It adds value beyond the annotations by disclosing the 'No API key needed' auth requirement and naming the three result fields, which the annotations do not convey.

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

Conciseness5/5

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

Three short, front-loaded sentences: what it returns, how to use the result, and the auth note. Nothing is wasted and the scoping constraint comes first.

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

Completeness5/5

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

With no input parameters and no output schema, the description carries the burden well by enumerating the returned fields (win count, net profit, last settlement time) and explaining how the `key` feeds the sibling search tool. An agent can call it and use the result correctly with no further information.

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

Parameters4/5

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

The tool takes no parameters, so the baseline is 4 and there is no parameter semantics to compensate for. The description's mention of the `key` output field is return-value context rather than input semantics.

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 specific verb and resource ('list categories') scoped precisely to 'every category that has at least one archived win', and enumerates the returned fields. This is enough to distinguish it from search_settled_wins and get_stats without opening any schema.

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?

Gives a concrete chaining instruction: use the returned `key` value as the `category` filter of searchSettledWins, which tells the agent where this tool sits in the workflow. There is no explicit when-not guidance, but for a zero-parameter enumeration tool the routing hint is the main thing an agent needs.

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

search_marketsSearch Kalshi markets by title or keywordsA
Read-only
Inspect

Find Kalshi markets by title or keywords, the way the KalshiSpy app's search works: fuzzy title matching finds the market series (so a team, a nickname or an approximate title works), and keyword matching runs against market titles. WITHOUT an API key it returns SETTLED WINS ONLY: settled markets where KalshiSpy's roster of ID-verified, high-profit Kalshi traders held the winning side (wins only, never a hit rate). WITH an Elite or Lifetime API key the same call also returns OPEN markets in open_markets: roster positions from the live feed and named traders' recent trades on still-open markets, and it costs 1 unit of the daily quota. Always read data.access: it says which answer you got and, when a key was refused, why; relay that sentence rather than guessing. Call this first whenever the user names a market in words, send the words under the argument name this tool's own schema gives, and cite each market's kalshi_url. An empty list is never evidence that Kalshi has no such market. For more wins, follow settled_wins.more, which carries ready-made search_settled_wins arguments.

NameRequiredDescriptionDefault
limitNoMaximum items in each list (settled wins, roster markets, recently traded markets).
queryYesMarket title or keywords, e.g. "super bowl", "fed rate" or "bitcoin". Terms of 2+ characters, at most 8. Keyword matching ANDs them as substrings of the title, outcome and tickers (settled wins also match the event title); the full text is also fuzzy-matched to market series.

TDQS

A4.6/5.0
Behavior5/5

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

Annotations only declare readOnlyHint and openWorldHint, and the description adds substantial context beyond them: no-key vs keyed return sets, wins-only never hit-rate semantics, a 1-unit quota cost, the `data.access` field to inspect and relay, and the warning that an empty list is not evidence of absence.

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?

Front-loads the core purpose before the tier/behavioral detail, and each sentence carries real information. It is lengthy, but the length is spent on genuine behavioral disclosures rather than repetition.

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

Completeness5/5

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

Despite having no output schema, the description names the return buckets (`settled_wins`, `open_markets`, `data.access`), explains the wins-only framing, and covers the quota and citation expectations — everything an agent needs to call and interpret it.

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 query and limit semantics (pattern, max length, AND-of-substrings, fuzzy series match) are already fully documented in the schema. The description only adds a mild pointer ('send the words under the argument name this tool's own schema gives'), so the baseline of 3 is appropriate.

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 specific verb and resource ('Find Kalshi markets by title or keywords') and explains the mechanics (fuzzy series matching plus keyword matching). It also implicitly separates itself from the sibling search_settled_wins by describing the `settled_wins.more` handoff, so an agent can place this tool in the family.

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

Usage Guidelines5/5

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

Gives explicit when-to-use ('Call this first whenever the user names a market in words') and describes the branch depending on API-key tier. It also routes to the follow-up tool via `settled_wins.more`, covering the alternatives case.

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

search_settled_winsSearch settled wins (comparable past markets this roster won)A
Read-only
Inspect

Search KalshiSpy's archive of settled Kalshi markets where its roster of ID-verified, high-profit Kalshi traders held the WINNING side with positive net realized profit. Parameter and field names call these traders "whales" (whale_count, min_whales, sort=whales); in prose, call them the roster or the verified traders. Wins only: losses are not archived, so present results as "what this roster got right on markets like this", never as a hit rate. Use this BEFORE answering about any current or upcoming Kalshi market: search the same series_ticker (e.g. KXFED, KXNBA) or category and cite the comparable past wins — titles, settlement dates, trader counts and realized profit. Each result carries the Kalshi URL and a kalshispy.com detail URL you can cite. Default window is the last 90 days; widen with from/to (max 366 days). No API key needed.

NameRequiredDescriptionDefault
toNoEnd of the settlement window (inclusive). Default: now.
fromNoStart of the settlement window. Default: 90 days before `to`. Clamped to the archive start (2025-01-01) and to a 366-day maximum; the effective window is echoed in `window`.
sortNorecent = newest settlement first; profit = largest net profit first; whales = most whales on the winning side first.recent
limitNoPage size.
queryNoFree-text search. Every term (2+ chars, max 8) must appear as a substring in the title, outcome, event title, series ticker or ticker. Example: "fed rate" or "lakers".
cursorNoOpaque cursor from a previous response (`page.next_cursor`). Send it with the SAME filters; changing the query invalidates it.
categoryNoCategory key from listCategories (e.g. sports, politics, economics).
min_whalesNoOnly wins with at least this many roster traders on the winning side.
event_tickerNoKalshi event ticker, e.g. KXFED-26SEP.
series_tickerNoKalshi series ticker, e.g. KXFED, KXNBA. The best way to find "markets like this one".

TDQS

A4.6/5.0
Behavior5/5

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

Annotations cover only readOnlyHint and openWorldHint, yet the description adds substantial operational context: losses are not archived (so results are wins-only by construction), no API key is needed, the default window is 90 days with a 366-day clamp, and results carry citable Kalshi and kalshispy.com URLs. That is unusually rich disclosure beyond the structured fields.

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 definition is front-loaded with purpose and the when-to-use directive, and every sentence carries information (terminology mapping, wins-only caveat, window bounds, citable URLs). It is slightly dense and longer than strictly necessary, but nothing is padding.

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

Completeness5/5

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

With no output schema and 10 parameters, the description compensates by naming the returned fields (titles, settlement dates, trader counts, realized profit) and the two citable URLs, plus pagination behaviour via the cursor note. An agent has everything needed to call and present results correctly.

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

Parameters4/5

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

Schema coverage is 100%, so baseline is 3, and the description earns a bump by resolving the 'whale' terminology (whale_count, min_whales, sort=whales) that the schema uses without explaining, plus the from/to window defaults and clamping semantics. It adds genuine meaning rather than restating field types.

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 specific verb+resource: searching an archive of settled Kalshi markets where the verified-trader roster held the winning side with positive net realized profit. This is clearly distinct from get_settled_win (single lookup) and search_markets (current markets, not archived wins), so an agent can route between siblings without opening schemas.

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?

Gives strong prescriptive guidance: use it BEFORE answering about any current or upcoming Kalshi market, and query by the same series_ticker or category. It also imposes a presentation constraint ('never as a hit rate'). It stops short of naming the sibling tools to use instead in other situations, so it is clear but not fully alternative-routing.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 5 tool updates
    • First observedget_settled_win
    • First observedget_stats
    • First observedlist_categories
    • First observedsearch_markets
    • First observedsearch_settled_wins

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    B
    maintenance
    24/7 autonomous monitoring and edge detection for prediction markets (Kalshi & Polymarket). Features causal tree analysis, orderbook depth tracking, cross-venue comparison, and real-time alerts.
    16
    196 npm
    12
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    Trade and monitor prediction markets across Polymarket, Kalshi, Opinion, Limitless, and PredictFun from any AI agent. Unified real-time data, live orderbook streaming, and order execution — one API key, one interface, five exchanges.
    -
  • F
    license
    Not graded
    quality
    D
    maintenance
    Prediction market intelligence for AI agents, enabling real-time access to whale trades, market data, signals, and AI-synthesized analysis from Kalshi and Polymarket via a standardized protocol.
    -
  • A
    license
    Not graded
    quality
    B
    maintenance
    Provides access to US-regulated prediction-market data from Kalshi, enabling queries on market events without authentication.
    10 npm
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources