Skip to main content
Glama

Macro & Commodities Desk

Server Details

Kalshi macro: Fed rate odds, gold, silver, oil and bitcoin edges, 15-min markets, Kelly sizing.

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 26 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
predictionmarketspicks/mcp
GitHub Stars
0
Server Listing
PredictionMarketsPicks Quant

TDQS

A4/5.0

Scored across 10 tools

Disambiguation4/5

Most tools target clearly distinct resources (Fed odds, macro pulse, perps, 15-min board, conversion), making selection straightforward. However, calculate_ev, kelly_size, and commodity_edge all circle the same 'edge/sizing' concept, and commodity_edge partially duplicates both, which could cause misselection when an agent just wants generic EV or sizing.

Naming Consistency4/5

All names are lowercase snake_case with no style mixing, so the set reads predictably. The only inconsistency is verb ordering: calculate_ev and convert_probability are verb_noun while the rest are noun_noun (base_rate_gap, perps_board), but this is a minor deviation.

Tool Count5/5

Ten tools is well within the sweet spot and each appears to serve a distinct workflow (edge analysis, sizing, macro, rates, perps, short-horizon markets, conversion). No obvious filler or redundancy at the count level.

Completeness4/5

The desk covers a coherent lifecycle: price-vs-history (base_rate_gap), edge detection (calculate_ev, commodity_edge), sizing (kelly_size), venue checks (fed_rate_odds, fifteen_min_board, perps_board), and macro context (market_pulse). Coverage is strong, though position/portfolio management and explicit historical data retrieval are missing gaps an agent could encounter.

Available Tools

10 tools
base_rate_gapBase Rate GapA
Read-only
Inspect

Use for "how does this price compare to history" and "is the market ignoring the base rate". Compares a market price with the historical base rate for a class of events: the gap in pp, a signal, and sample-size quality. Pass a known baseRateId (the parameter lists them) or your own baseRateValue.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseRateIdNoKnown base-rate id to look up (includes sample size + source). One of: incumbent_reelected · fed_hold_unemp_below_4 · fed_cut_cpi_above_3 · recession_called_12mo · sp500_positive_year · bitcoin_above_100k_eoy · gdp_growth_above_2 · cpi_above_3 · senate_incumbent_wins_primary · vix_below_20_eoy · interest_rate_cut_next_meeting · major_sports_upset.
marketPriceNoCurrent market price in cents / implied probability % (0–100). Needed for a real answer. Accepts 55, "55%", "55¢", "$0.55", 0.55 or American odds (+120 / -150) — all read as 55%.
baseRateValueNoYour own base rate in % (0–100), used when no baseRateId is given.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false, and openWorldHint=false, so the safety profile is covered. The description adds value by disclosing the return payload — gap in percentage points, a signal, and sample-size quality — which matters since no output schema exists.

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?

Two sentences, front-loaded with the triggering questions before the mechanics, with no filler. The nested quotation marks are slightly awkward but don't impede parsing.

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?

For a read-only compute tool with no output schema, the description adequately covers inputs, the identifier-or-value choice, and the shape of the result. It doesn't clarify what happens when marketPrice is omitted despite zero required parameters, a minor gap.

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 baseline is 3; the schema already documents baseRateId enums, marketPrice input formats, and baseRateValue ranges in more detail than the description. The only added meaning is the either/or relationship between baseRateId and baseRateValue.

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: 'Compares a market price with the historical base rate for a class of events,' and enumerates the outputs (gap in pp, signal, sample-size quality). That scope is clearly distinguishable from siblings like calculate_ev, kelly_size, or convert_probability, which handle different computations.

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 explicit user-phrasing triggers ('how does this price compare to history', 'is the market ignoring the base rate') that map a real question to this tool. It stops short of naming alternatives or stating when-not to use it, e.g. versus calculate_ev.

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

calculate_evCalculate EV EdgeA
Read-only
Inspect

Use for "is this contract mispriced" and "what is my edge". Give a Kalshi or Polymarket price in cents and your own probability; returns the % expected-value edge and a BUY / SELL / SKIP read.

ParametersJSON Schema
NameRequiredDescriptionDefault
marketPriceNoCurrent contract price in cents (1–99), equal to the implied probability in %. Required for a real answer. Accepts 55, "55%", "55¢", "$0.55", 0.55 or American odds (+120 / -150) — all read as 55%.
yourProbabilityNoYour own estimate of the true probability the contract resolves YES, in % (0–100). Required for a real answer. Accepts 55, "55%", "55¢", "$0.55", 0.55 or American odds (+120 / -150) — all read as 55%.

Output Schema

ParametersJSON Schema
NameRequiredDescription
signalNoBUY / SELL / SKIP.
edge_ppNoYour probability minus the price, pp.
sourcesNo
edge_pctNoExpected-value edge, %.
tell_userNoShow this sentence to the user first.
timestampNo
needs_inputNo
example_callNo
data_freshnessNo
interpretationNoPlain-English read.
market_price_centsNoPrice used, cents.
your_probability_pctNoProbability used, %.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safe, side-effect-free nature is covered structurally. The description adds useful domain scope by tying the tool to Kalshi and Polymarket prices and previews the verdict output, but says nothing about rate limits, accuracy assumptions, or edge cases (e.g. price at 0/100).

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?

Two tight sentences: the trigger/question framing is front-loaded, followed by the inputs and the returned outputs. No filler, no repetition of the schema.

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 the description need not explain the return payload, and with 100% schema coverage it need not document parameters. It covers purpose, trigger, and output shape. The remaining gap is cluster-level: no pointer to kelly_size for follow-on position sizing.

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 coverage is 100% and the schema descriptions already enumerate every accepted input format (55, "55%", "55¢", "$0.55", 0.55, American odds). The description only paraphrases this as "in cents and your own probability", which is actually narrower than the schema. Baseline 3 is correct when the schema carries the semantics.

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 states a specific function: take a market price plus the user's own probability and return the % EV edge and a BUY/SELL/SKIP read. That is a clear verb+resource with an output preview. It does not distinguish itself from the related sibling kelly_size, which an agent might reasonably confuse it with.

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?

"Use for 'is this contract mispriced' and 'what is my edge'" gives an explicit when-to-use trigger in the user's own vocabulary. It offers no exclusions and never names the obvious downstream alternative (kelly_size for sizing once edge is known), so sibling routing is left to inference.

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

commodity_edgeCommodity Edge (Gold / Silver / Oil / Bitcoin)A
Read-only
Inspect

Use for "gold edge today" and "oil or bitcoin trade signal". The Kalshi daily gold, silver or WTI strike, or hourly bitcoin strike, with the largest PMP model edge, as a ticket: side, entry price, resolve criterion, model probability, edge, tier and quarter-Kelly size. Pass tickers[] to check a watchlist. Pro — sign in with PredictionMarketsPicks, or a Pro API key.

ParametersJSON Schema
NameRequiredDescriptionDefault
tickersNoOptional Kalshi ticker watchlist (up to 25) — e.g. paste the tickers from your Kalshi Pro screener or Canvas to get PMP's edge on exactly those markets. Full market or 3-segment event tickers both work. Tickers PMP doesn't model are returned as not_covered (never a fabricated edge).
commodityNoWhich commodity edge to read (needed for a real answer). One of: silver · bitcoin · gold · oil.

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already establish readOnly/destructive=false and openWorld, so those add nothing here. The description goes beyond them by disclosing the Pro auth requirement (sign in with PredictionMarketsPicks or a Pro API key) and the not_covered fallback ('never a fabricated edge'), which are meaningful behavioral facts.

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 trigger phrasings and commodity list are front-loaded, and the auth caveat is placed last. It is slightly verbose in enumerating the ticket fields, but each clause carries useful 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?

With no output schema, the description carries the return-value burden and does so by listing the ticket fields (side, entry price, resolve criterion, probability, edge, tier, Kelly size). Auth and watchlist behavior are covered; only deeper edge/model detail is left out, which is acceptable.

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 both parameters are already fully documented in the schema, including the watchlist semantics and not_covered behavior. The description's restatement that commodity is 'needed for a real answer' adds little beyond what the schema provides, so the baseline 3 applies.

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 states a specific resource (the Kalshi gold/silver/WTI/bitcoin strike with the largest PMP model edge) and enumerates the returned ticket fields, so an agent knows what it retrieves. It does not, however, name or differentiate from siblings like calculate_ev or kelly_size, leaving that to inference.

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

Usage Guidelines3/5

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

It supplies trigger phrasing ('gold edge today', 'oil or bitcoin trade signal') and notes tickers[] for a watchlist, giving implied usage context. But it offers no when-not guidance and never names an alternative sibling tool, so routing is left implicit.

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

convert_probabilityConvert Probability / OddsA
Read-only
Inspect

Convert between implied probability, American odds, and decimal odds. Give one value and its format and get all three back (American odds carry no commas, e.g. +441 or -200). Use for "what is +150 as a probability", "convert 62% to American odds", "decimal to implied odds".

ParametersJSON Schema
NameRequiredDescriptionDefault
valueNoThe numeric value to convert. Needed for a real answer, with format. Accepts a number or a numeric string ("+150", "62%", "2.5").
formatNoFormat of `value`: probability (0–100 %), american (e.g. -200 / +150), or decimal (e.g. 2.5). One of: probability · american · decimal.

Output Schema

ParametersJSON Schema
NameRequiredDescription
sourcesNo
tell_userNoShow this sentence to the user first.
timestampNo
needs_inputNo
decimal_oddsNoDecimal odds.
example_callNo
american_oddsNoAmerican odds, no commas.
data_freshnessNo
probability_pctNoImplied probability, %.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, openWorldHint=false and destructiveHint=false, so the bar is low. The description still adds real behavioral context beyond them: the output always contains all three representations, and American odds use the no-comma convention (+441 or -200). It does not restate return format in detail, but an output schema exists so that is not required.

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?

Three sentences, front-loaded with purpose, then output convention, then trigger examples. No filler, and the critical formatting caveat is parenthetical rather than buried. The quoted example phrases are slightly redundant with the purpose sentence, keeping this just below a 5.

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?

A pure two-parameter, read-only converter with an output schema, full schema description coverage and safety annotations. The description covers what it does, what comes back, the input convention quirk, and when to reach for it — nothing an agent needs in order to call it correctly 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?

Schema coverage is 100%, so the baseline would be 3. The description earns above baseline by explaining the no-comma American convention and illustrating accepted input strings ('+150', '62%', '2.5'), which clarifies the number-or-string typing in the schema. It does not, however, add anything not already implied about the range or enum semantics of `format`.

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 names a specific verb (Convert) and the exact resources (implied probability, American odds, decimal odds), and states the round-trip behavior (give one, get all three). An agent can immediately distinguish this from calculate_ev or kelly_size, which compute value or stake rather than reformat an odds figure.

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?

It gives concrete trigger phrasings ('what is +150 as a probability', 'convert 62% to American odds', 'decimal to implied odds'), which is strong positive routing. It stops short of naming a sibling as the alternative or stating when-not to use it (e.g. if you want expected value, use calculate_ev), so it is clear context rather than full when/when-not guidance.

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

fed_rate_oddsFed Rate Odds (FOMC)A
Read-only
Inspect

Use for "will the Fed cut, hold or hike" and "next FOMC meeting odds". Live Kalshi odds for each remaining 2026 FOMC meeting: the next meeting's full strike breakdown and days-until, the rate path, the current fed funds rate, and a next-meeting cross-venue check against Polymarket and CME futures, with the gap in pp.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
sourcesNo
by_venueNoNext-meeting odds by venue (Kalshi, Polymarket, CME futures).
tell_userNoShow this sentence to the user first.
timestampNo
needs_inputNo
example_callNo
next_meetingNoNext FOMC meeting: date, days until, strike breakdown.
divergence_ppNoHeadline cross-venue gap for the next meeting, pp.
data_freshnessNo
rate_path_2026NoImplied outcome at each remaining 2026 meeting.
current_target_rangeNoCurrent fed funds target range.

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so safety is covered. The description adds behavioral context beyond that: the data is live, the scope is remaining 2026 meetings, and it includes a cross-venue comparison against Polymarket and CME futures with a gap measured in pp. No auth, freshness, or staleness caveats are given.

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?

Two sentences, zero filler: the usage trigger is front-loaded, followed by a dense enumeration of returned content. Every clause earns its place and nothing is repeated from structured fields.

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, the return shape needn't be explained, and the description correctly focuses on scope and coverage instead. It is nearly complete for a no-arg tool; the only minor gap is no indication of behavior when data is unavailable (e.g., between meetings or markets closed).

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 there is nothing for the description to disambiguate beyond what the empty schema already conveys. The baseline of 4 applies; no additional parameter meaning 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 verb and resource: it returns live Kalshi odds for each remaining 2026 FOMC meeting, with an explicit inventory of what it covers (strike breakdown, days-until, rate path, current fed funds rate, cross-venue check). This is precise enough that an agent can distinguish it from generic market tools like market_pulse or base_rate_gap without opening the 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?

The opening clause gives concrete query intents that select this tool: "will the Fed cut, hold or hike" and "next FOMC meeting odds". That is clear when-to-use guidance, but it names no alternatives and gives no exclusions, so an agent must infer its boundary against sibling rate/market tools.

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

fifteen_min_boardKalshi 15-Minute Markets — every series, liveA
Read-only
Inspect

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.

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription
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

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.

kelly_sizeKelly Position SizeA
Read-only
Inspect

Compute the optimal Kelly position size for a prediction-market contract. Given your win probability, the market price (which sets the payout), your bankroll, and a Kelly fraction (full / half / quarter / eighth), returns the dollar stake and a risk rating. Use for "how much should I stake", "what is my position size", "Kelly sizing for this trade".

ParametersJSON Schema
NameRequiredDescriptionDefault
bankrollNoTotal bankroll in dollars (e.g. 1000). Optional — omit it and the result is the % of bankroll to stake, without a dollar figure. Accepts a number or a numeric string ("1000", "$1,000").
fractionNoKelly fraction to apply. Half-Kelly is the common sharp-money default. One of: full · half · quarter · eighth.
marketPriceYesContract price in cents (1–99). Sets the payout ratio. Accepts 55, "55%", "55¢", "$0.55", 0.55 or American odds (+120 / -150) — all read as 55%.
winProbabilityYesYour probability the contract resolves YES, in % (0–100). Accepts 55, "55%", "55¢", "$0.55", 0.55 or American odds (+120 / -150) — all read as 55%.

Output Schema

ParametersJSON Schema
NameRequiredDescription
ratingNoQualitative read of the sizing.
sourcesNo
tell_userNoShow this sentence to the user first.
timestampNo
needs_inputNo
example_callNo
stake_dollarsNoSuggested stake in dollars (when a bankroll was given).
data_freshnessNo
full_kelly_pctNoFull-Kelly fraction of bankroll, %.
applied_fraction_pctNoThe fraction applied, %.

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description usefully adds that the tool is a pure computation returning a stake amount and a risk rating, which tells the agent there are no side effects. It doesn't discuss edge cases such as invalid probabilities or the meaning of the risk rating, keeping it short of 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.

Conciseness4/5

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

Three compact sentences, front-loaded with the core action and its inputs/outputs before the example triggers. Every sentence earns its place, though the trailing quoted-phrase list is slightly listy and could be trimmed.

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?

An output schema exists, yet the description still concisely previews the return ('dollar stake and a risk rating'), and it names all four inputs with the optional bankroll implication clear via the schema. For a stateless calculator this is fully sufficient to call correctly.

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 each parameter in detail (bankroll optionality, accepted price/probability formats, fraction values). The description restates the same inputs — 'win probability, market price (which sets the payout), your bankroll, a Kelly fraction (full / half / quarter / eighth)' — adding only the note that market price sets the payout. Baseline 3 is appropriate when the schema does the heavy lifting.

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 ('Compute the optimal Kelly position size for a prediction-market contract') and goes on to name the exact inputs and outputs, so it is clearly separable from siblings like calculate_ev and convert_probability. An agent knows immediately what this tool returns (dollar stake + risk rating).

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?

Provides concrete triggering phrases — "how much should I stake", "what is my position size", "Kelly sizing for this trade" — which give clear context for when to reach for this tool. It stops short of naming when NOT to use it or pointing to alternative siblings (e.g. calculate_ev for edge, not sizing).

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

market_pulseMarket Pulse — MacroA
Read-only
Inspect

The US macro-health composite (0–100) and regime plus the six category scores (growth, labor, inflation, rates, liquidity, sentiment). Returns the composite, the regime call and 2 category scores without an account, 4 to a signed-in account, and all six with Pro. Use for "how is the US economy", "macro regime", "risk-on or risk-off".

ParametersJSON Schema
NameRequiredDescriptionDefault
topicNomacro = the US macro-health composite (the only topic). One of: macro.

TDQS

A4.5/5.0
Behavior5/5

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

Annotations cover the safety profile (readOnly, non-destructive, openWorld), and the description adds the crucial behavioral detail annotations cannot: tiered access gating — composite/regime/2 categories unauthenticated, 4 signed in, all six with Pro. That is exactly the auth/permission context an agent needs before calling.

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 sentences, each carrying distinct load: what it returns, what access tier yields what, and when to use it. Front-loaded with the resource and no filler.

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 correctly spells out the return payload (composite, regime call, category scores) and qualifies it by tier. Nothing an agent needs to invoke or interpret the result is missing.

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?

Only one optional parameter, and schema coverage is 100% — the schema already documents that 'macro' is the sole topic. The description restates the composite concept but adds no syntax or format meaning beyond the schema, so the 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 specific resource (US macro-health composite, regime, six category scores) with a clear scope (0-100 composite, regime call). An agent can immediately tell this apart from the sibling odds/political tools, none of which touch macro data.

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?

Provides explicit trigger phrases — "how is the US economy", "macro regime", "risk-on or risk-off" — so the agent knows the intent this tool serves. It names no alternative tools or when-not-to-use conditions, but the siblings are unrelated domains, so the gap is minor.

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

perp_liquidationKalshi Perp Liquidation — where a leveraged position gets closed outA
Read-only
Inspect

Use for "where does a 5x bitcoin long liquidate on Kalshi". Estimates a Kalshi perp's liquidation price and the % move to it from Kalshi's risk parameters (a 5x BTC long is about 8% away, not the 20% the 100÷leverage rule implies), plus fees and expected funding. An estimate; Kalshi's app shows the exact one. Assets: btc, eth, sol, xrp, doge, hype, link, gold, silver, platinum, palladium. Free.

ParametersJSON Schema
NameRequiredDescriptionDefault
sideNoDirection. One of: long · short.
assetNoThe perp. One of: btc · eth · sol · xrp · doge · hype · link · gold · silver · platinum · palladium.
entryNoEntry price (default: the live price). Accepts a number or a numeric string ("+150", "62%", "2.5").
marginNoMargin in dollars (default 1000). Accepts a number or a numeric string ("+150", "62%", "2.5").
leverageNoLeverage, e.g. 5 or "5x". Capped at Kalshi’s maximum for the size and side.
hold_daysNoDays held, for the funding estimate (default 7).

TDQS

A4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and destructiveHint=false, so the safety profile is covered. The description adds genuine context beyond that: this is an estimate with a stated error characteristic (Kalshi's app shows the exact value), it incorporates fees and expected funding, and it is free. That is useful disclosure, though return-level detail is left implicit.

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 trigger phrase and the core explanation are front-loaded and the whole thing reads as one efficient block. The 11-asset enumeration duplicates the schema enum, which is mild waste, but the example and the estimate caveat earn their place.

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 carries the return-value burden and does so — it names the liquidation price, the percent move, fees, and expected funding. Combined with annotations covering safety and a 100%-documented input schema, an agent has everything needed to call this correctly.

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 every parameter (side, asset, entry, margin, leverage, hold_days) is already documented with defaults and accepted formats. The description restates the asset list and frames leverage semantics in prose but adds no parameter syntax or format meaning beyond the schema; baseline 3 is appropriate.

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 states a specific verb and resource — it estimates a Kalshi perp's liquidation price and the percent move to it — with a concrete example (5x BTC long ~8% away). It is unambiguous about what the tool does, but it never distinguishes itself from the closely related sibling perps_board, so it stops short of a 5.

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?

"Use for 'where does a 5x bitcoin long liquidate on Kalshi'" gives a clear, concrete triggering context so the agent knows when to reach for it. However, there are no when-not conditions and no explicit routing against alternatives like perps_board or kelly_size.

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

perps_boardKalshi Perps Board — price, leverage and funding for every perpA
Read-only
Inspect

Use for "Kalshi perps funding rate" and "how much leverage on Kalshi gold perps". Every Kalshi perpetual future: price, 24h volume, open interest, max leverage long and short, funding cadence, and what funding has cost a long since launch. Pass asset ("btc", "gold") for one.

ParametersJSON Schema
NameRequiredDescriptionDefault
assetNoOne perp: symbol or name ("btc", "gold", "XAG").
limitNoMax rows (default 25). Values above 30 are clamped to 30.

Output Schema

ParametersJSON Schema
NameRequiredDescription
rowsNoKalshi perps: price, 24h volume, open interest, max leverage, funding.
as_ofNoWhen the board was read.
sourcesNo
tell_userNoShow this sentence to the user first.
timestampNo
needs_inputNo
example_callNo
data_freshnessNo

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already establish readOnlyHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds real value beyond that by disclosing the return payload's shape, including a derived metric (cumulative funding paid by a long since launch) and the fact that all perps are returned by default.

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?

Three sentences, front-loaded with usage triggers before the field inventory, with no filler sentences. The field enumeration is long but each item earns its place by telling the agent what data comes back.

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, the return values need not be described, and the read-only/open-world annotations cover safety. The description still supplies enough context (default full-board behavior, asset narrowing, funding-cadence framing) that an agent can invoke it confidently; only an explicit sibling tie-breaker is missing.

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 both parameters are fully documented in the schema, including the limit clamp at 30. The description repeats the asset examples ("btc", "gold") but adds no syntax or format detail the schema lacks, making the baseline 3 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 resource and enumerates exactly what the board contains: price, 24h volume, open interest, max leverage long/short, funding cadence, and cumulative funding cost for longs. An agent can distinguish this from siblings like perp_liquidation (liquidation events) or calculate_ev without opening a 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?

Opens with concrete user-phrasing triggers ("Kalshi perps funding rate", "how much leverage on Kalshi gold perps") and tells the agent how to narrow the result by passing an asset. It stops short of naming an alternative or stating when-not-to-use (e.g., versus perp_liquidation), so it is clear context without exclusions.

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. 7 tool updates
    • Changedbase_rate_gap2 fields changed
      • removedInput schema / properties / marketPrice / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / marketPrice / type
        Added value: +[
        +  "number",
        +  "string"
        +]
    • Changedcalculate_ev4 fields changed
      • removedInput schema / properties / marketPrice / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / marketPrice / type
        Added value: +[
        +  "number",
        +  "string"
        +]
      • removedInput schema / properties / yourProbability / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / yourProbability / type
        Added value: +[
        +  "number",
        +  "string"
        +]
    • Changedconvert_probability2 fields changed
      • removedInput schema / properties / value / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / value / type
        Added value: +[
        +  "number",
        +  "string"
        +]
    • Changedfifteen_min_board2 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"
        +]
    • Changedkelly_size6 fields changed
      • removedInput schema / properties / bankroll / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / bankroll / type
        Added value: +[
        +  "number",
        +  "string"
        +]
      • removedInput schema / properties / marketPrice / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / marketPrice / type
        Added value: +[
        +  "number",
        +  "string"
        +]
      • removedInput schema / properties / winProbability / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / winProbability / type
        Added value: +[
        +  "number",
        +  "string"
        +]
    • Changedperp_liquidation6 fields changed
      • removedInput schema / properties / entry / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / entry / type
        Added value: +[
        +  "number",
        +  "string"
        +]
      • removedInput schema / properties / leverage / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / leverage / type
        Added value: +[
        +  "number",
        +  "string"
        +]
      • removedInput schema / properties / margin / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "string"
        -  }
        -]
      • addedInput schema / properties / margin / type
        Added value: +[
        +  "number",
        +  "string"
        +]
    • Changedperps_board2 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. 1 tool update
    • Changedfifteen_min_board1 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. 2 tool updates
    • Addedbase_rate_gap
    • Addedfed_rate_odds
  4. 2 tool updates
    • Changedkelly_size5 fields changed
      • addedInput schema / properties / fraction / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "enum": [
        +      "full",
        +      "half",
        +      "quarter",
        +      "eighth"
        +    ],
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / fraction / default
        Removed value: -"half"
      • changedInput schema / properties / fraction / description
        Previous value: -"Kelly fraction to apply. Half-Kelly is the common sharp-money default."New value: +"Kelly fraction to apply. Half-Kelly is the common sharp-money default. One of: full · half · quarter · eighth."
      • removedInput schema / properties / fraction / enum
        Removed value: -[
        -  "full",
        -  "half",
        -  "quarter",
        -  "eighth"
        -]
      • removedInput schema / properties / fraction / type
        Removed value: -"string"
    • Changedmarket_pulse5 fields changed
      • addedInput schema / properties / topic / anyOf
        Added value: +[
        +  {
        +    "type": "string"
        +  },
        +  {
        +    "enum": [
        +      "macro"
        +    ],
        +    "type": "string"
        +  }
        +]
      • removedInput schema / properties / topic / default
        Removed value: -"macro"
      • changedInput schema / properties / topic / description
        Previous value: -"macro = the US macro-health composite (the only topic)."New value: +"macro = the US macro-health composite (the only topic). One of: macro."
      • removedInput schema / properties / topic / enum
        Removed value: -[
        -  "macro"
        -]
      • removedInput schema / properties / topic / type
        Removed value: -"string"
  5. 1 tool update
    • Changedperp_liquidation1 field changed
      • removedInput schema / required
        Removed value: -[
        -  "asset",
        -  "side",
        -  "leverage"
        -]
  6. 1 tool update
    • Changedmarket_pulse1 field changed
      • changedInput schema / properties / topic / description
        Previous value: -"macro = US macro-health composite (the only topic — NFL is now the nfl_edge tool)."New value: +"macro = the US macro-health composite (the only topic)."
  7. 3 tool updates
    • Changedcalculate_ev3 fields changed
      • changedInput schema / properties / marketPrice / description
        Previous value: -"Current contract price in cents (1–99), equal to the implied probability in %. Accepts 55, \"55%\", \"55¢\", \"$0.55\", 0.55 or American odds (+120 / -150) — all read as 55%."New value: +"Current contract price in cents (1–99), equal to the implied probability in %. Required for a real answer. Accepts 55, \"55%\", \"55¢\", \"$0.55\", 0.55 or American odds (+120 / -150) — all read as 55%."
      • changedInput schema / properties / yourProbability / description
        Previous value: -"Your own estimate of the true probability the contract resolves YES, in % (0–100). Accepts 55, \"55%\", \"55¢\", \"$0.55\", 0.55 or American odds (+120 / -150) — all read as 55%."New value: +"Your own estimate of the true probability the contract resolves YES, in % (0–100). Required for a real answer. Accepts 55, \"55%\", \"55¢\", \"$0.55\", 0.55 or American odds (+120 / -150) — all read as 55%."
      • removedInput schema / required
        Removed value: -[
        -  "marketPrice",
        -  "yourProbability"
        -]
    • Changedfifteen_min_board6 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"
    • Changedperps_board6 fields changed
      • addedInput schema / properties / limit / anyOf
        Added value: +[
        +  {
        +    "anyOf": [
        +      {
        +        "type": "number"
        +      },
        +      {
        +        "type": "string"
        +      }
        +    ]
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedInput schema / properties / limit / default
        Removed value: -25
      • changedInput schema / properties / limit / description
        Previous value: -"Max rows (default 25)."New value: +"Max rows (default 25). Values above 30 are clamped to 30."
      • removedInput schema / properties / limit / maximum
        Removed value: -30
      • removedInput schema / properties / limit / minimum
        Removed value: -1
      • removedInput schema / properties / limit / type
        Removed value: -"integer"
  8. 1 tool update
    • Changedcommodity_edge2 fields changed
      • changedInput schema / properties / commodity / description
        Previous value: -"Which commodity edge to read. One of: silver · bitcoin · gold · oil."New value: +"Which commodity edge to read (needed for a real answer). One of: silver · bitcoin · gold · oil."
      • removedInput schema / required
        Removed value: -[
        -  "commodity"
        -]
  9. 5 tool updates
    • Changedcalculate_ev1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "data_freshness": {},
        +    "edge_pct": {
        +      "description": "Expected-value edge, %."
        +    },
        +    "edge_pp": {
        +      "description": "Your probability minus the price, pp."
        +    },
        +    "example_call": {},
        +    "interpretation": {
        +      "description": "Plain-English read."
        +    },
        +    "market_price_cents": {
        +      "description": "Price used, cents."
        +    },
        +    "needs_input": {},
        +    "signal": {
        +      "description": "BUY / SELL / SKIP."
        +    },
        +    "sources": {},
        +    "tell_user": {
        +      "description": "Show this sentence to the user first.",
        +      "type": "string"
        +    },
        +    "timestamp": {
        +      "type": "string"
        +    },
        +    "your_probability_pct": {
        +      "description": "Probability used, %."
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedconvert_probability1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "american_odds": {
        +      "description": "American odds, no commas."
        +    },
        +    "data_freshness": {},
        +    "decimal_odds": {
        +      "description": "Decimal odds."
        +    },
        +    "example_call": {},
        +    "needs_input": {},
        +    "probability_pct": {
        +      "description": "Implied probability, %."
        +    },
        +    "sources": {},
        +    "tell_user": {
        +      "description": "Show this sentence to the user first.",
        +      "type": "string"
        +    },
        +    "timestamp": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedfifteen_min_board1 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"
        +}
    • Changedkelly_size1 field changed
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": {},
        +  "properties": {
        +    "applied_fraction_pct": {
        +      "description": "The fraction applied, %."
        +    },
        +    "data_freshness": {},
        +    "example_call": {},
        +    "full_kelly_pct": {
        +      "description": "Full-Kelly fraction of bankroll, %."
        +    },
        +    "needs_input": {},
        +    "rating": {
        +      "description": "Qualitative read of the sizing."
        +    },
        +    "sources": {},
        +    "stake_dollars": {
        +      "description": "Suggested stake in dollars (when a bankroll was given)."
        +    },
        +    "tell_user": {
        +      "description": "Show this sentence to the user first.",
        +      "type": "string"
        +    },
        +    "timestamp": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
    • Changedperps_board1 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 perps: price, 24h volume, open interest, max leverage, funding."
        +    },
        +    "sources": {},
        +    "tell_user": {
        +      "description": "Show this sentence to the user first.",
        +      "type": "string"
        +    },
        +    "timestamp": {
        +      "type": "string"
        +    }
        +  },
        +  "type": "object"
        +}
  10. 1 tool update
    • Changedconvert_probability2 fields changed
      • changedInput schema / properties / value / description
        Previous value: -"The numeric value to convert. Accepts a number or a numeric string (\"+150\", \"62%\", \"2.5\")."New value: +"The numeric value to convert. Needed for a real answer, with format. Accepts a number or a numeric string (\"+150\", \"62%\", \"2.5\")."
      • removedInput schema / required
        Removed value: -[
        -  "value",
        -  "format"
        -]
  11. 8 tool updates
    • First observedcalculate_ev
    • First observedcommodity_edge
    • First observedconvert_probability
    • First observedfifteen_min_board
    • First observedkelly_size
    • First observedmarket_pulse
    • First observedperp_liquidation
    • First observedperps_board

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Prediction market probability oracle for AI agents. 26 tools across 500+ live markets from Kalshi and Polymarket. Cross-source arbitrage detection, structured TPF signals, Kelly Criterion sizing, agent performance tracking, and webhook alerts.
    9
    22 npm
    1
    MIT
  • 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
  • A
    license
    A
    quality
    C
    maintenance
    Provides calibrated weather probability signals for Kalshi prediction markets by combining dual-model forecasting (NWS + GFS ensemble) to identify mispriced temperature markets. Enables AI agents to access bias-corrected forecasts and edge signals for weather prediction market intelligence.
    5
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.