Skip to main content
Glama

TradingCalc MCP: Options, Forex, Risk Stats, Prediction Markets, On-Chain & Crypto Futures

Odds Converter

workflow.run_odds_converter
Read-only

Converts one probability into decimal odds, American odds, and breakeven win rate: either from a manually supplied probability, or from one market read live from Kalshi, Polymarket, ADI Predictstreet, Limitless, or Myriad (five independent crypto-price prediction market venues, all public keyless market data). One market on one venue per call; it does not compare prices across venues (to compare the same bet on two or more venues, see workflow.run_spread_reader). When a Kalshi, Polymarket, Limitless, or Myriad source is supplied, also returns the vig (the exchange's built-in edge), computed from the market's own YES+NO prices, not estimated; ADI Predictstreet's crypto contracts currently have no live trading volume on any venue, so this returns available:false with an explanation rather than a fake price (use workflow.run_window_fair_value for a theoretical price on those instead). Use when user asks "what odds does a 35% probability work out to?" or "what's the vig on this Kalshi/Polymarket/Limitless/Myriad market?". Provide exactly one of probability/kalshiTicker/polymarketSlug/adiSymbol/limitlessSlug/myriadSlug. Returns: probability, decimalOdds, americanOdds, breakevenWinRatePct, vigPct (null unless a live two-sided source was used), source (manual/kalshi/polymarket/adi/limitless/myriad), identifier, label.

Input Schema

NameRequiredDescriptionDefault
adiSymbolNoAn ADI Predictstreet market symbol (e.g. BTC1D-20260920T0000). Currently always returns available:false; these contracts have no live trading volume yet.
myriadSlugNoA Myriad Markets market slug, from the market URL (e.g. eth-at-three-digits-when-bitcoin-goes-below-50k), to fetch a live price from. On-chain (Abstract L2); not every market has a Yes/No outcome, some are multi-outcome ladders.
probabilityNoProbability as a decimal 0-1 (e.g. 0.35). Use this OR one of the live sources below, not both.
kalshiTickerNoA Kalshi market ticker (e.g. KXBTCY-27JAN0100-T149999.99) to fetch a live price from. One market only; for the same bet on several venues use workflow.run_spread_reader.
limitlessSlugNoA Limitless Exchange market slug, from the market URL (e.g. btc-up-or-down-5-min-1790249100), to fetch a live price from. On-chain (Base), mostly short-duration (5min/15min/daily) crypto up/down contracts.
polymarketSlugNoA Polymarket market slug, from the market URL (e.g. will-bitcoin-reach-100k-in-september-2026), to fetch a live price from. One market only; for the same bet on several venues use workflow.run_spread_reader.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • changedInput schema / properties / kalshiTicker / description
      Previous value: -"A Kalshi market ticker (e.g. KXBTCY-27JAN0100-T149999.99) to fetch a live price from."New value: +"A Kalshi market ticker (e.g. KXBTCY-27JAN0100-T149999.99) to fetch a live price from. One market only; for the same bet on several venues use workflow.run_spread_reader."
    • changedInput schema / properties / polymarketSlug / description
      Previous value: -"A Polymarket market slug, from the market URL (e.g. will-bitcoin-reach-100k-in-september-2026), to fetch a live price from."New value: +"A Polymarket market slug, from the market URL (e.g. will-bitcoin-reach-100k-in-september-2026), to fetch a live price from. One market only; for the same bet on several venues use workflow.run_spread_reader."
  2. Changed2 schema fields changed
    • addedInput schema / properties / limitlessSlug
      Added value: +{
      +  "description": "A Limitless Exchange market slug, from the market URL (e.g. btc-up-or-down-5-min-1790249100), to fetch a live price from. On-chain (Base), mostly short-duration (5min/15min/daily) crypto up/down contracts.",
      +  "type": "string"
      +}
    • addedInput schema / properties / myriadSlug
      Added value: +{
      +  "description": "A Myriad Markets market slug, from the market URL (e.g. eth-at-three-digits-when-bitcoin-goes-below-50k), to fetch a live price from. On-chain (Abstract L2); not every market has a Yes/No outcome, some are multi-outcome ladders.",
      +  "type": "string"
      +}
  3. Changed1 schema field changed
    • changedInput schema / properties / adiSymbol / description
      Previous value: -"An ADI Predictstreet market symbol (e.g. BTC1D-20260920T0000). Currently always returns available:false — these contracts have no live trading volume yet."New value: +"An ADI Predictstreet market symbol (e.g. BTC1D-20260920T0000). Currently always returns available:false; these contracts have no live trading volume yet."
  4. Changed4 schema fields changed
    • addedInput schema / properties / adiSymbol
      Added value: +{
      +  "description": "An ADI Predictstreet market symbol (e.g. BTC1D-20260920T0000). Currently always returns available:false — these contracts have no live trading volume yet.",
      +  "type": "string"
      +}
    • changedInput schema / properties / kalshiTicker / description
      Previous value: -"A Kalshi market ticker (e.g. KXBTCY-27JAN0100-T149999.99) to fetch a live price from instead of a manual probability."New value: +"A Kalshi market ticker (e.g. KXBTCY-27JAN0100-T149999.99) to fetch a live price from."
    • addedInput schema / properties / polymarketSlug
      Added value: +{
      +  "description": "A Polymarket market slug, from the market URL (e.g. will-bitcoin-reach-100k-in-september-2026), to fetch a live price from.",
      +  "type": "string"
      +}
    • changedInput schema / properties / probability / description
      Previous value: -"Probability as a decimal 0-1 (e.g. 0.35). Use this OR kalshiTicker, not both."New value: +"Probability as a decimal 0-1 (e.g. 0.35). Use this OR one of the live sources below, not both."
  5. Added

TDQS

A4.8/5.0
Behavior5/5

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

Annotations already mark this readOnly and non-destructive, and the description goes well beyond them: it discloses that vig is computed from the market's own YES+NO prices (not estimated), that NULL vig results when no live two-sided source is used, and that ADI Predictstreet returns available:false with an explanation rather than a fabricated price. That last point is exactly the kind of honesty an agent needs to interpret a null result correctly.

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-loaded with the core action, then alternatives, then exceptions, then return shape – a sensible order. It is dense and long for a single call, but nearly every clause carries distinct information; only the venue-chain details for Myriad/Limitless edge toward redundancy with the schema descriptions.

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?

No output schema exists, so the description compensates by enumerating every returned field (probability, decimalOdds, americanOdds, breakevenWinRatePct, vigPct, source, identifier, label) and their null conditions. For a six-input tool with a degenerate-mode caveat, nothing an agent needs 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 is 3, but the description adds the mutually-exclusive selection rule across the six parameters and characterizes the five venues by data source (public keyless, on-chain chains). It stops short of describing format details per parameter, which the schema already carries.

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 (converts) and a specific, three-part output (decimal odds, American odds, breakeven win rate), with two input modes spelled out. It also explicitly scopes itself against workflow.run_spread_reader for cross-venue comparison, so an agent can distinguish it from that sibling.

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 concrete trigger phrasings ('what odds does a 35% probability work out to?', 'what's the vig on this Kalshi market?'), states the one-market-one-venue limit, and names the alternative for multi-venue comparison. The 'provide exactly one of ...' constraint is stated outright rather than left to inference.

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.