Skip to main content
Glama

Prediction Markets Quant

Combo Edge Verdict

combo_edge
Read-only

Use for "price a same-game NFL combo" and "is this combo worth it". Pass nflGame ("NYG-LAR", "Giants vs Rams") to list that game's Kalshi legs — moneyline, spreads, totals, player props — then legIds to price your pick with the correlation done for you. Or pass legPrices + trueWinProbability for a fair band; add offeredOdds for EV and a verdict. Free.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
kindNoWith nflGame: "game" = all game lines, "prop" = props only. One of: game · prop.
statNoWith nflGame: props of one stat (e.g. "rec_yds").
limitNoWith nflGame: max props listed (default 40, max 200).
legIdsNo2–6 leg ids from a previous nflGame call (an array, or one comma-separated string). We compute the correlation-aware joint for exactly these legs.
playerNoWith nflGame: every strike for a player whose name contains this (e.g. "Mariota").
nflGameNoAn NFL game on the live board, as "AWAY-HOME" (e.g. "NYG-LAR"). Alone: lists its legs with ids, trimmed (narrow with player/stat/kind/limit). With legIds: prices that exact combo.
legPricesNoEach leg's YES price in cents (1–99). Used only for the theoretical assemble ceiling. Omit when using nflGame + legIds — we read the real prices.
offeredOddsNoThe combo price your platform actually quotes — American odds (e.g. -150, 988) or a decimal payout multiplier (e.g. 10.7). Grades EV + verdict against fair value. Omit to get fair value + band only.
offeredAmericanNoAlias for offeredOdds (the response reports the quote as offered_american, so this name is accepted on input too). American odds or a decimal multiplier, same parsing. If both are given, offeredOdds wins.
trueWinProbabilityNoYour correlation-aware estimate of the true joint probability all legs hit, in % (0–100). Omit when using nflGame + legIds — we compute it from the scoreline model.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed2 schema fields changed
    • removedInput schema / properties / limit / anyOf
      Removed value: -[
      -  {
      -    "anyOf": [
      -      {
      -        "type": "number"
      -      },
      -      {
      -        "type": "string"
      -      }
      -    ]
      -  },
      -  {
      -    "type": "null"
      -  }
      -]
    • addedInput schema / properties / limit / type
      Added value: +[
      +  "number",
      +  "string",
      +  "null"
      +]
  2. Changed5 schema fields changed
    • addedInput schema / properties / kind
      Added value: +{
      +  "anyOf": [
      +    {
      +      "type": "string"
      +    },
      +    {
      +      "enum": [
      +        "game",
      +        "prop"
      +      ],
      +      "type": "string"
      +    }
      +  ],
      +  "description": "With nflGame: \"game\" = all game lines, \"prop\" = props only. One of: game · prop."
      +}
    • addedInput schema / properties / limit
      Added value: +{
      +  "anyOf": [
      +    {
      +      "anyOf": [
      +        {
      +          "type": "number"
      +        },
      +        {
      +          "type": "string"
      +        }
      +      ]
      +    },
      +    {
      +      "type": "null"
      +    }
      +  ],
      +  "description": "With nflGame: max props listed (default 40, max 200)."
      +}
    • changedInput schema / properties / nflGame / description
      Previous value: -"An NFL game on the live board, as \"AWAY-HOME\" (e.g. \"NYG-LAR\"). Alone: lists that game's selectable legs with their ids. With legIds: prices that exact combo."New value: +"An NFL game on the live board, as \"AWAY-HOME\" (e.g. \"NYG-LAR\"). Alone: lists its legs with ids, trimmed (narrow with player/stat/kind/limit). With legIds: prices that exact combo."
    • addedInput schema / properties / player
      Added value: +{
      +  "description": "With nflGame: every strike for a player whose name contains this (e.g. \"Mariota\").",
      +  "type": "string"
      +}
    • addedInput schema / properties / stat
      Added value: +{
      +  "description": "With nflGame: props of one stat (e.g. \"rec_yds\").",
      +  "type": "string"
      +}
  3. Changed6 schema fields changed
    • addedInput schema / properties / legIds / anyOf
      Added value: +[
      +  {
      +    "items": {
      +      "type": "string"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "string"
      +  }
      +]
    • changedInput schema / properties / legIds / description
      Previous value: -"2–6 leg ids from a previous nflGame call. We compute the correlation-aware joint for exactly these legs."New value: +"2–6 leg ids from a previous nflGame call (an array, or one comma-separated string). We compute the correlation-aware joint for exactly these legs."
    • removedInput schema / properties / legIds / items
      Removed value: -{
      -  "type": "string"
      -}
    • removedInput schema / properties / legIds / maxItems
      Removed value: -6
    • removedInput schema / properties / legIds / minItems
      Removed value: -2
    • removedInput schema / properties / legIds / type
      Removed value: -"array"
  4. Changed1 schema field changed
    • changedInput schema / properties / nflGame / description
      Previous value: -"An NFL game on the live board, as \"AWAY-HOME\" (e.g. \"NE-SEA\"). Alone: lists that game's selectable legs with their ids. With legIds: prices that exact combo."New value: +"An NFL game on the live board, as \"AWAY-HOME\" (e.g. \"NYG-LAR\"). Alone: lists that game's selectable legs with their ids. With legIds: prices that exact combo."
  5. Changed1 schema field changed
    • addedInput schema / properties / offeredAmerican
      Added value: +{
      +  "description": "Alias for offeredOdds (the response reports the quote as offered_american, so this name is accepted on input too). American odds or a decimal multiplier, same parsing. If both are given, offeredOdds wins.",
      +  "type": "number"
      +}
  6. Changed5 schema fields changed
    • addedInput schema / properties / legIds
      Added value: +{
      +  "description": "2–6 leg ids from a previous nflGame call. We compute the correlation-aware joint for exactly these legs.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "maxItems": 6,
      +  "minItems": 2,
      +  "type": "array"
      +}
    • changedInput schema / properties / legPrices / description
      Previous value: -"Each leg's YES price in cents (1–99). Used only for the theoretical assemble ceiling."New value: +"Each leg's YES price in cents (1–99). Used only for the theoretical assemble ceiling. Omit when using nflGame + legIds — we read the real prices."
    • addedInput schema / properties / nflGame
      Added value: +{
      +  "description": "An NFL game on the live board, as \"AWAY-HOME\" (e.g. \"NE-SEA\"). Alone: lists that game's selectable legs with their ids. With legIds: prices that exact combo.",
      +  "type": "string"
      +}
    • changedInput schema / properties / trueWinProbability / description
      Previous value: -"Your correlation-aware estimate of the true joint probability all legs hit, in % (0–100)."New value: +"Your correlation-aware estimate of the true joint probability all legs hit, in % (0–100). Omit when using nflGame + legIds — we compute it from the scoreline model."
    • removedInput schema / required
      Removed value: -[
      -  "legPrices",
      -  "trueWinProbability"
      -]
  7. First observed

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint/openWorldHint=false, so the bar is lower; the description still adds real behavior — automatic correlation of the joint, EV/verdict grading when offeredOdds is supplied, and the note that it's free. It doesn't disclose error behavior or leg-count limits beyond the schema, but the workflow outcomes are well conveyed.

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 two trigger phrases and then the two invocation paths in three dense sentences with examples. Slightly packed but every clause carries routing or format information; no filler.

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

Completeness4/5

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

For a complex 10-parameter, zero-required, no-output-schema tool, the description covers both input modes, their mutual exclusivity, and the graded outputs (fair band, EV, verdict). It leaves the exact response shape and failure modes unstated, but that's a minor gap for an exploratory pricing tool.

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?

With 100% schema coverage the baseline is 3, but the description adds genuine meaning: nflGame accepts 'NYG-LAR' or 'Giants vs Rams', legPrices is 'used only for the theoretical assemble ceiling', and both legPrices and trueWinProbability should be omitted when using nflGame+legIds. That sequencing context is not in the schema.

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 ('price a same-game NFL combo') and immediately names the value proposition ('with the correlation done for you'). This cleanly separates it from generic siblings like calculate_ev or ladder_arb, which don't do correlation-aware same-game joint pricing.

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?

Explicitly routes two workflows: (a) pass nflGame to list legs, then legIds to price, or (b) pass legPrices + trueWinProbability for a fair band and add offeredOdds for EV. It stops short of naming sibling alternatives (e.g. when to prefer calculate_ev or nfl_prop_edge), but the conditional branches are clearly stated.

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.