addrbookFor publishers
← The evidence ledger

Evidence row 565507

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint e5885d85-a2d8-4761-bc69-325a792dc4a2
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
2f0cb538d64ab98be81616ca54e7c1a3c687f71e87f5b03594d59c7ae65b4500
Leaf
0xbbcba7fe52f73b3f4614cf5062c13ad26d6a8867b7d03ac64b101cdd363c7a7b

What was observed

{
  "count": 17,
  "tools": [
    {
      "description": "Compare one market across all bookmakers for a match.\n\n    Returns each book's quote line-by-line, the consensus line, the best price per outcome, each\n    book's overround, and de-vigged fair odds from the sharpest (lowest-margin) book.\n\n    Args:\n        event_id: event id (e.g. \"evt_…\").\n        market_type: \"1x2\", \"asian_handicap\" (default) or \"totals\".\n        period: \"full_time\" (default) or \"half_time\".\n        format: display odds format (analytics are computed in decimal regardless).\n        verbosity: \"full\" (default) or \"terse\". \"terse\" drops the per-book ``books`` array (the bulk\n            of the payload) and returns only the worked answer (best_prices / consensus_line /\n            fair_odds / summary).\n    ",
      "inputSchema": {
        "properties": {
          "event_id": {
            "title": "Event Id",
            "type": "string"
          },
          "format": {
            "default": "decimal",
            "title": "Format",
            "type": "string"
          },
          "market_type": {
            "default": "asian_handicap",
            "title": "Market Type",
            "type": "string"
          },
          "period": {
            "default": "full_time",
            "title": "Period",
            "type": "string"
          },
          "verbosity": {
            "default": "full",
            "title": "Verbosity",
            "type": "string"
          }
        },
        "required": [
          "event_id"
        ],
        "title": "compare_linesArguments",
        "type": "object"
      },
      "name": "compare_lines"
    },
    {
      "description": "Judge an external probability (e.g. a Polymarket/Kalshi price) against our sharp fair line — ONE call.\n\n    Resolves the fixture, de-vigs the sharp book to a fair probability (power de-vig for 3-way 1x2),\n    and reports the edge ``fair_prob − external_prob`` in percentage points, the ROI, and a verdict\n    (good / marginal / no_edge). DETECTION ONLY: InferSports never ingests prediction-market data,\n    sizes a stake, or picks — it gives you the sharp reference and the gap; the call is yours.\n\n    Args:\n        query: natural-language fixture, e.g. \"France vs Argentina\" or a single team.\n        external_prob: the external implied probability for ``outcome``, in (0,1). Pre-net it for the\n            venue's fee/spread (e.g. a Polymarket YES ask of 0.55 → 0.55).\n        market_type: \"1x2\" (default; the prediction-market-comparable moneyline), \"asian_handicap\"\n            (only ±0.5 maps cleanly to a binary), or \"totals\".\n        period: \"full_time\" (default) or \"half_time\".\n        outcome: which leg the probability is for — home/draw/away (1x2), home/away (AH), over/under.\n        external_label: optional source label echoed back, e.g. \"polymarket\" | \"kalshi\".\n        sport: optional filter — \"football\" or \"basketball\".\n        date: optional UTC date \"YYYY-MM-DD\" to disambiguate same-name fixtures.\n\n    Read ``caveats`` before acting: a 1x2 fair is regulation 90-min (a prediction market that includes\n    extra time / \"to advance\" is a different market); quarter/integer AH carries push mass. On an\n    ambiguous query ``status`` is \"ambiguous\" — do not guess. ``status`` is \"no_line\" when no sharp\n    fair is available to judge against.\n    ",
      "inputSchema": {
        "properties": {
          "date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Date"
          },
          "external_label": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "External Label"
          },
          "external_prob": {
            "title": "External Prob",
            "type": "number"
          },
          "market_type": {
            "default": "1x2",
            "title": "Market Type",
            "type": "string"
          },
          "outcome": {
            "default": "home",
            "title": "Outcome",
            "type": "string"
          },
          "period": {
            "default": "full_time",
            "title": "Period",
            "type": "string"
          },
          "query": {
            "title": "Query",
            "type": "string"
          },
          "sport": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Sport"
          }
        },
        "required": [
          "query",
          "external_prob"
        ],
        "title": "compare_probArguments",
        "type": "object"
      },
      "name": "compare_prob"
    },
    {
      "description": "Explain an Asian handicap line.\n\n    Splits a quarter line into its components (e.g. -0.75 → -0.5 / -1.0) and states the\n    full-win / half-win / push / half-loss / full-loss conditions. ``line`` must be a multiple\n    of 0.25.\n    ",
      "inputSchema": {
        "properties": {
          "line": {
            "title": "Line",
            "type": "number"
          }
        },
        "required": [
          "line"
        ],
        "title": "explain_handicapArguments",
        "type": "object"
      },
      "name": "explain_handicap"
    },
    {
      "description": "Find cross-book arbitrage in a fixture — a guaranteed-profit price split — in ONE call.\n\n    Resolves the fixture, then for each market/line takes the best price per outcome across books;\n    when the inverse prices sum to < 1 there is a locked margin regardless of result. Reports the\n    margin % and which book holds each leg (legs must come from ≥2 distinct books). DETECTION ONLY:\n    no stake sizing, no bet links — InferSports is read-only.\n\n    Args:\n        query: natural-language fixture, e.g. \"Netherlands vs Algeria\" or a single team.\n        markets: optional filter — any of \"1x2\", \"asian_handicap\", \"totals\" (default: all).\n        period: optional — \"full_time\" or \"half_time\" (default: both).\n        min_margin_pct: only report opportunities with at least this guaranteed margin (default 0).\n        format: odds format — decimal | hk | malay | american | indonesian | probability.\n        sport: optional filter — \"football\" or \"basketball\".\n        date: optional UTC date \"YYYY-MM-DD\" to disambiguate same-name fixtures.\n\n    On an ambiguous query, ``status`` is \"ambiguous\" and ``ask_user`` carries a prompt — do not guess.\n    ",
      "inputSchema": {
        "properties": {
          "date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Date"
          },
          "format": {
            "default": "decimal",
            "title": "Format",
            "type": "string"
          },
          "markets": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Markets"
          },
          "min_margin_pct": {
            "default": 0,
            "title": "Min Margin Pct",
            "type": "number"
          },
          "period": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Period"
          },
          "query": {
            "title": "Query",
            "type": "string"
          },
          "sport": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Sport"
          }
        },
        "required": [
          "query"
        ],
        "title": "find_arbitrageArguments",
        "type": "object"
      },
      "name": "find_arbitrage"
    },
    {
      "description": "Find a football/basketball fixture by natural-language name.\n\n    Args:\n        query: e.g. \"Man City vs Arsenal\" or a single team name.\n        sport: optional filter — \"football\" or \"basketball\".\n        date: optional UTC date \"YYYY-MM-DD\" to disambiguate same-name fixtures.\n\n    Returns the best-matching event (with id, teams, league, kickoff, live score, the live match\n    ``clock`` e.g. \"2h 47\" or \"ht\", and a confidence score) plus alternatives. Use the returned\n    ``event_id`` with get_match_odds / compare_lines.\n    A ``decision`` block tells you whether it's ``safe_to_proceed`` and the suggested\n    ``next_action`` (or ``ask_user`` when ambiguous).\n    ",
      "inputSchema": {
        "properties": {
          "date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Date"
          },
          "query": {
            "title": "Query",
            "type": "string"
          },
          "sport": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Sport"
          }
        },
        "required": [
          "query"
        ],
        "title": "find_matchArguments",
        "type": "object"
      },
      "name": "find_match"
    },
    {
      "description": "Find +EV value bets in a fixture — where a book's price beats the sharp fair line — in ONE call.\n\n    Resolves the fixture, de-vigs the sharp book (Pinnacle) at each line to get the fair price, then\n    flags every outcome whose best available price across books exceeds that fair price. DETECTION\n    ONLY: this surfaces the edge and which book holds it; it does NOT size stakes or link out to bet.\n\n    Args:\n        query: natural-language fixture, e.g. \"Netherlands vs Algeria\" or a single team.\n        markets: optional filter — any of \"1x2\", \"asian_handicap\", \"totals\" (default: all).\n        period: optional — \"full_time\" or \"half_time\" (default: both).\n        min_edge_pct: only report outcomes beating fair by at least this % (default 1.0).\n        format: odds format — decimal | hk | malay | american | indonesian | probability.\n        sport: optional filter — \"football\" or \"basketball\".\n        date: optional UTC date \"YYYY-MM-DD\" to disambiguate same-name fixtures.\n\n    On an ambiguous query, ``status`` is \"ambiguous\" and ``ask_user`` carries a prompt — do not\n    guess. Needs the sharp book to de-vig; on the Free tier ``note`` flags that fair is approximate.\n    ",
      "inputSchema": {
        "properties": {
          "date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Date"
          },
          "format": {
            "default": "decimal",
            "title": "Format",
            "type": "string"
          },
          "markets": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Markets"
          },
          "min_edge_pct": {
            "default": 1,
            "title": "Min Edge Pct",
            "type": "number"
          },
          "period": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Period"
          },
          "query": {
            "title": "Query",
            "type": "string"
          },
          "sport": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Sport"
          }
        },
        "required": [
          "query"
        ],
        "title": "find_valueArguments",
        "type": "object"
      },
      "name": "find_value"
    },
    {
      "description": "Get all current odds for a match across bookmakers.\n\n    Args:\n        event_id: event id from find_match / list_today_matches (e.g. \"evt_…\").\n        markets: optional filter — any of \"1x2\", \"asian_handicap\", \"totals\".\n        bookmakers: optional filter — bookmaker keys, e.g. [\"pinnacle\", \"crown\"].\n        period: optional — \"full_time\" or \"half_time\" (default: both).\n        format: odds format — decimal | hk | malay | american | indonesian | probability.\n    ",
      "inputSchema": {
        "properties": {
          "bookmakers": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Bookmakers"
          },
          "event_id": {
            "title": "Event Id",
            "type": "string"
          },
          "format": {
            "default": "decimal",
            "title": "Format",
            "type": "string"
          },
          "markets": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Markets"
          },
          "period": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Period"
          }
        },
        "required": [
          "event_id"
        ],
        "title": "get_match_oddsArguments",
        "type": "object"
      },
      "name": "get_match_odds"
    },
    {
      "description": "Get the opening odds (初盘) for a fixture, paired with the current price, in ONE call.\n\n    Resolves the fixture, then for each book returns its **true opening** (first-seen) quote alongside\n    the current quote — so you can read movement directly. For 1x2 that's a price move; for totals/AH\n    compare ``line`` (the opening line) vs ``current_line`` to read the line move (the sharp book often\n    opens days earlier). A market with no opening yet on file is omitted.\n\n    Args:\n        query: natural-language fixture, e.g. \"Real Madrid vs Barcelona\" or a single team.\n        markets: optional filter — any of \"1x2\", \"asian_handicap\", \"totals\".\n        bookmakers: optional filter — bookmaker keys, e.g. [\"pinnacle\", \"crown\"].\n        period: optional — \"full_time\" or \"half_time\" (default: both).\n        format: odds format — decimal | hk | malay | american | indonesian | probability.\n        sport: optional filter — \"football\" or \"basketball\".\n        date: optional UTC date \"YYYY-MM-DD\" to disambiguate same-name fixtures.\n\n    On an ambiguous query, ``status`` is \"ambiguous\" and ``ask_user`` carries a disambiguation\n    prompt — do not assume a match. Best-effort: a book/line with no opening on file is omitted.\n    ",
      "inputSchema": {
        "properties": {
          "bookmakers": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Bookmakers"
          },
          "date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Date"
          },
          "format": {
            "default": "decimal",
            "title": "Format",
            "type": "string"
          },
          "markets": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Markets"
          },
          "period": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Period"
          },
          "query": {
            "title": "Query",
            "type": "string"
          },
          "sport": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Sport"
          }
        },
        "required": [
          "query"
        ],
        "title": "get_opening_lineArguments",
        "type": "object"
      },
      "name": "get_opening_line"
    },
    {
      "description": "Get the cached final result for ONE finished match by event id.\n\n    Returns the final score, red cards and finished time. ``status`` is \"found\" or \"not_found\" (the\n    match isn't in the 30-day cache). Results-only — no odds.\n\n    Args:\n        event_id: event id (e.g. \"evt_…\") from find_match / list_results.\n    ",
      "inputSchema": {
        "properties": {
          "event_id": {
            "title": "Event Id",
            "type": "string"
          }
        },
        "required": [
          "event_id"
        ],
        "title": "get_resultArguments",
        "type": "object"
      },
      "name": "get_result"
    },
    {
      "description": "Answer an odds question about a fixture in ONE call (natural language in, worked line out).\n\n    Resolves the fixture, picks the consensus line, the best price per outcome across books, and\n    de-vigged fair odds from the sharpest book — returning a ready-to-read ``summary`` plus the\n    full ``comparison``. Prefer this over chaining find_match → compare_lines.\n\n    Args:\n        query: natural-language fixture, e.g. \"Arsenal vs Man City\" or a single team.\n        market_type: \"1x2\", \"asian_handicap\" (default) or \"totals\".\n        period: \"full_time\" (default) or \"half_time\".\n        format: odds format — decimal | hk | malay | american | indonesian | probability.\n        sport: optional filter — \"football\" or \"basketball\".\n        date: optional UTC date \"YYYY-MM-DD\" to disambiguate same-name fixtures.\n        verbosity: \"full\" (default) or \"terse\". \"terse\" empties the per-book ``books`` array inside\n            ``comparison`` to save tokens; the ``summary`` and worked numbers are kept either way.\n\n    On an ambiguous query, ``status`` is \"ambiguous\" and ``ask_user`` carries a disambiguation\n    prompt — do not assume a match; ask the user or re-call with a more specific query. A\n    ``decision`` block (``safe_to_proceed`` / ``ask_user`` / ``next_action``) pre-computes the\n    go/no-go — branch on it instead of re-judging the result.\n    ",
      "inputSchema": {
        "properties": {
          "date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Date"
          },
          "format": {
            "default": "decimal",
            "title": "Format",
            "type": "string"
          },
          "market_type": {
            "default": "asian_handicap",
            "title": "Market Type",
            "type": "string"
          },
          "period": {
            "default": "full_time",
            "title": "Period",
            "type": "string"
          },
          "query": {
            "title": "Query",
            "type": "string"
          },
          "sport": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Sport"
          },
          "verbosity": {
            "default": "full",
            "title": "Verbosity",
            "type": "string"
          }
        },
        "required": [
          "query"
        ],
        "title": "get_sharp_lineArguments",
        "type": "object"
      },
      "name": "get_sharp_line"
    },
    {
      "description": "List the bookmakers available on your tier.\n\n    Returns the curated catalogue (each with ``key``, ``name`` and ``class`` = \"sharp\" | \"asian\")\n    plus a ``note`` on tier coverage. Free tier excludes the sharp book (Pinnacle). Use the returned\n    ``key`` values in the ``bookmakers`` filter of get_match_odds / compare_lines.\n    ",
      "inputSchema": {
        "properties": {},
        "title": "list_bookmakersArguments",
        "type": "object"
      },
      "name": "list_bookmakers"
    },
    {
      "description": "List the fixtures for a calendar day — or a bounded [date, date_to] range.\n\n    Unlike list_today_matches (today + anything still live), this is a strict window for whatever\n    ``date`` you ask for. Pass ``date_to`` (inclusive, max 31 days after ``date``) to cover a whole\n    tournament window in ONE call — \"all group-stage matches June 11–28\" needs no per-day loop. UTC\n    is canonical: pass an IANA ``timezone`` and the day boundaries are computed in that zone (so\n    \"June 12 in Shanghai\" excludes a match that is still June 11 / already June 13 locally); each\n    fixture keeps its UTC ``scheduled_at`` and adds ``scheduled_at_local``. Capped to ``limit``\n    (``truncated`` flags overflow) — narrow with sport/status/league rather than paging.\n\n    Args:\n        date: REQUIRED calendar day \"YYYY-MM-DD\" (e.g. \"2026-06-12\") — the window start.\n        date_to: optional inclusive end day \"YYYY-MM-DD\" (max 31 days after ``date``); omit for a\n            single day.\n        timezone: optional IANA timezone (e.g. \"Asia/Shanghai\", \"America/New_York\") for the day\n            boundary; default is the UTC day.\n        sport: optional filter — \"football\" or \"basketball\".\n        status: optional filter — \"scheduled\", \"live\" or \"finished\".\n        league: optional league filter — a name (fuzzy-matched, e.g. \"World Cup\") or an external id (\"lg_…\").\n        limit: max fixtures to return (1–200, default 50).\n    ",
      "inputSchema": {
        "properties": {
          "date": {
            "title": "Date",
            "type": "string"
          },
          "date_to": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Date To"
          },
          "league": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "League"
          },
          "limit": {
            "default": 50,
            "title": "Limit",
            "type": "integer"
          },
          "sport": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Sport"
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Status"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Timezone"
          }
        },
        "required": [
          "date"
        ],
        "title": "list_eventsArguments",
        "type": "object"
      },
      "name": "list_events"
    },
    {
      "description": "Look back at finished-match scores from the 30-day results cache, most-recent-first.\n\n    Results-only: each entry is the final score, red cards and finished time (no odds). Unlike the\n    live tools, these survive a restart — use it for \"what was the score of X?\" or \"yesterday's\n    results\".\n\n    Args:\n        date: optional UTC kickoff date \"YYYY-MM-DD\" — the day the match was played.\n        team: optional case-insensitive substring matched against either team name.\n        league: optional case-insensitive substring matched against the league name.\n        limit: max results to return, most-recent-first (1–200, default 50).\n    ",
      "inputSchema": {
        "properties": {
          "date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Date"
          },
          "league": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "League"
          },
          "limit": {
            "default": 50,
            "title": "Limit",
            "type": "integer"
          },
          "team": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Team"
          }
        },
        "title": "list_resultsArguments",
        "type": "object"
      },
      "name": "list_results"
    },
    {
      "description": "List today's (UTC) fixtures — \"what games are on today / right now?\".\n\n    Each fixture carries its status, live score, the live match ``clock`` (upstream minute text,\n    verbatim e.g. \"1h 25\" / \"2h 47\" / \"ht\") when in-running, and a ready-to-read ``summary`` (live\n    score & clock, or the kickoff time). Read ``clock`` for the real minute rather than estimating it\n    from kickoff. ``clock`` is null pre-match.\n\n    Args:\n        sport: optional filter — \"football\" or \"basketball\".\n        status: optional filter — \"live\", \"scheduled\" or \"finished\".\n        league: optional league filter — a name (fuzzy-matched, e.g. \"World Cup\") or an external id (\"lg_…\").\n        limit: max fixtures to return (1–200, default 50).\n        timezone: optional IANA timezone (e.g. \"America/New_York\", \"Asia/Shanghai\") to render each\n            fixture's kickoff in its ``summary`` as local time; default UTC.\n    ",
      "inputSchema": {
        "properties": {
          "league": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "League"
          },
          "limit": {
            "default": 50,
            "title": "Limit",
            "type": "integer"
          },
          "sport": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Sport"
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Status"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Timezone"
          }
        },
        "title": "list_today_matchesArguments",
        "type": "object"
      },
      "name": "list_today_matches"
    },
    {
      "description": "Get the basics for a match in ONE call: the score, whether it's live, when it kicks off, and who's favored.\n\n    No betting knowledge needed — this answers \"who's winning?\", \"what's the score?\", \"what time does\n    Brazil play (in my timezone)?\", \"who's the favorite?\". Returns the live score + match clock, the\n    status, the kickoff time (in ``timezone`` if you pass an IANA name like \"America/New_York\"), the\n    favored team with a plain win probability (de-vigged from the 1x2 line), and a ready-to-read\n    ``summary`` you can quote directly.\n\n    Args:\n        query: natural-language fixture or team, e.g. \"Brazil vs Argentina\" or just \"Brazil\".\n        timezone: optional IANA timezone (e.g. \"America/New_York\", \"Asia/Shanghai\") for the kickoff\n            time; default UTC.\n        sport: optional filter — \"football\" or \"basketball\".\n        date: optional UTC date \"YYYY-MM-DD\" to disambiguate same-name fixtures.\n\n    On an ambiguous query, ``status`` is \"ambiguous\" and ``ask_user`` carries a prompt — do not guess.\n    ``favorite`` is best-effort (null when no 1x2 is on file for the fixture).\n    ",
      "inputSchema": {
        "properties": {
          "date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Date"
          },
          "query": {
            "title": "Query",
            "type": "string"
          },
          "sport": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Sport"
          },
          "timezone": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Timezone"
          }
        },
        "required": [
          "query"
        ],
        "title": "match_infoArguments",
        "type": "object"
      },
      "name": "match_info"
    },
    {
      "description": "Scan today's whole slate in ONE call — each fixture with honest status + value/arb signal.\n\n    The batch alternative to looping find_match → get_sharp_line per match. Returns every fixture in\n    the filter with its status (finished is excluded from \"live\"), live score/clock, and a\n    pre-computed value/arb signal; value/arb matches are sorted to the top and the list is truncated\n    to ``limit`` (so truncation drops the quiet ones). Line movement is NOT included (that needs the\n    opening lookup) — drill into a single fixture with get_opening_line. DETECTION ONLY / read-only.\n\n    Args:\n        sport: optional filter — \"football\" or \"basketball\".\n        status: optional filter — \"live\" | \"scheduled\" | \"finished\".\n        league: optional league filter — a name (fuzzy-matched, e.g. \"World Cup\") or an external id (lg_…).\n        markets: optional — limit the value/arb scan to \"1x2\"/\"asian_handicap\"/\"totals\" (default all).\n        period: optional — \"full_time\" or \"half_time\" (default both).\n        min_edge_pct: value threshold for the per-match signal (default 1.0).\n        min_margin_pct: arbitrage threshold for the per-match signal (default 0.0).\n        only_signal: if true, return only fixtures that have a value or arb signal.\n        format: odds format — decimal | hk | malay | american | indonesian | probability.\n        limit: max entries to return, signal-first (default 20, max 100).\n    ",
      "inputSchema": {
        "properties": {
          "format": {
            "default": "decimal",
            "title": "Format",
            "type": "string"
          },
          "league": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "League"
          },
          "limit": {
            "default": 20,
            "title": "Limit",
            "type": "integer"
          },
          "markets": {
            "anyOf": [
              {
                "items": {
                  "type": "string"
                },
                "type": "array"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Markets"
          },
          "min_edge_pct": {
            "default": 1,
            "title": "Min Edge Pct",
            "type": "number"
          },
          "min_margin_pct": {
            "default": 0,
            "title": "Min Margin Pct",
            "type": "number"
          },
          "only_signal": {
            "default": false,
            "title": "Only Signal",
            "type": "boolean"
          },
          "period": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Period"
          },
          "sport": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Sport"
          },
          "status": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Status"
          }
        },
        "title": "scan_slateArguments",
        "type": "object"
      },
      "name": "scan_slate"
    },
    {
      "description": "Market-implied correct-score probabilities for ONE football match — ONE call.\n\n    Inverts the de-vigged 1x2 (power de-vig) + totals prices into a bivariate-Poisson\n    (Dixon-Coles) score grid and returns the top-K scorelines with probabilities, the\n    fitted goal rates (lambda_home/lambda_away), and how much probability mass the list\n    covers. The asian-handicap fair price is held out of the fit and reported as\n    ``ah_ev_check`` (≈0 means the three markets are internally consistent). This is the\n    market's own distribution, never an InferSports prediction. Football only, one match\n    per call.\n\n    Args:\n        query: natural-language fixture, e.g. \"Mexico vs South Africa\" or a single team.\n        sport: optional filter; only \"football\" is supported by this tool.\n        date: optional UTC date \"YYYY-MM-DD\" to disambiguate same-name fixtures.\n        top: how many scorelines to return (default 5, max 10).\n    ",
      "inputSchema": {
        "properties": {
          "date": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Date"
          },
          "query": {
            "title": "Query",
            "type": "string"
          },
          "sport": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Sport"
          },
          "top": {
            "default": 5,
            "title": "Top",
            "type": "integer"
          }
        },
        "required": [
          "query"
        ],
        "title": "score_probArguments",
        "type": "object"
      },
      "name": "score_prob"
    }
  ]
}

What the leaf hashes

{"body":"2f0cb538d64ab98be81616ca54e7c1a3c687f71e87f5b03594d59c7ae65b4500","id":565507,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793138184094276,"prev":null,"subject":"e5885d85-a2d8-4761-bc69-325a792dc4a2","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (273461 rows).

  1. 0xbbcc07c55c7364df763958a7e68541af9442f56dc2893ecf5ce93b451bb7064b
  2. 0x518bb9cc6f34b532ab225c0e858397ce50f63d73a2e579e4927610e4df5f0566
  3. 0xca582b1b1815fd8999ba39fe0f1c2ad7035602641419f00b796aa0f0e9cec3b7
  4. 0x9c10ad6aafbc052931801bcd55bff6d5a1f5ea417847b1eead21cb3e8fcb0c39
  5. 0x84b90a357785bae955ee49a51db38edef54478b13dccf2001d3c73799013cf10
  6. 0x07eb9ea248a5568ca4830ffe7bba0f60e4c66d8c48c573451d102f206adde659
  7. 0x6bac207cf873d7e1e88c5c3680018b8596c6e05bd8f3dea3108447e088d575d0
  8. 0x6689bd70d8b399af2784ba6b20c57e6e253379d105b6dc166fb46d316eb46ca2
  9. 0x02850531b38cdbbf35c2bb3b17e39e16f3aca8a2996107b87dcc62968dec6299
  10. 0xafd6b70c1465b8a2427d47ea40632cde7a6907f32f64f887c4cb460e460f7fdd
  11. 0xaf79bfeaa8b78c501b6b72d2abd133b4a8958ea976a4458f01d1f54590268c1e
  12. 0x5942c2574ffacd0c039c3cd1147d5ab0b6d34e0278203065ce21c437ae2a392d
  13. 0xa4f69e2cf941a3f318d70734b59401dd27010a6bdffb5c32a28304db650a6f0b
  14. 0xa453d1738637a5c663802d07ce095aa340c80d53a4288ae277a72e265868ce4e
  15. 0x73341bb09dd901ca47f26173883431496e3d98d6b0fb5b89f36218126d46c5d4
  16. 0xa94627de1af0e823832e05a9069b304ecccb8c0cdb8f9cfc4f2039bfb9799dc5
  17. 0xdf1105afdc109de3c09a98fc8a3864159ad964e6f49b635c105a27a1e1f14310
  18. 0x2bf8151e5f157dd183b9de6fa00469551932a7a6e3f33a694895000ac9061197
  19. 0x9fc354c0ea3efc3f1b6548bb77ea902a50f2c9647647ea61592efce2bd795699
Day root
0xdd77e5e99da32c3f154180d63e3c3e6fe11e896a2c6896412ef6b5c4bcf7e795
Chained
0x23bb4dfd09f55c15ac3962f53578e02c6114d5bfd9bb451cf8794fb6e2817ef4
Published
On Arc Testnet, block 69414147: 0xb2ebd83aafeb765a0ce66e76aefb133ed06606c98038fd56191e2bcd1dcb77b4

How to check it · This row as JSON