Skip to content

MCP tool reference

16 tools, all read-only, mirroring the REST surface 1:1. Costs are identical to REST — see credits.

Per-fixture tools accept event (natural description like "Brazil vs Morocco") or event_urn, plus optional team, opponent, date (YYYY-MM-DD).

Discover

worldcup_health · free

Verify the key and product surface without spending credits. Args: include_connectors?.

worldcup_get_schedule · 1 credit

Fixtures with event_urn — the discovery primitive. Args: team?, opponent?, date_from?, date_to?, status?, limit?.

worldcup_resolve · 1 credit

Any provider id or free-text name → canonical entity + URN. Args: id.

Context & markets

worldcup_get_event_context · 1 credit

Enriched fixture context (form, standings slice, injuries). Args: fixture combo + provider_event_id?, include_prematch_research?, include_social_pulse?.

worldcup_search_markets · 3 credits

Kalshi + Polymarket, one normalized shape. Args: query?, team?, source?, status?, limit?, force_live?.

worldcup_get_market_state · 3 credits

One market's live state: price, book, optional history/trades. Args: market_id, include_book?, include_history?, include_trades?, history_hours?, history_interval?.

Forecast & intelligence

worldcup_get_match_forecast · 12 credits

Dixon-Coles 1X2 forecast + model-vs-market gaps. Args: event_urn, include_reasoning?, min_gap_bps?.

worldcup_backtest_forecasts · 12 credits

Model accuracy over played fixtures (calibration + CLV ledger). Args: league?, season?.

worldcup_explain_market_move · 12 credits

Why a market moved — price history + grounded research, cited. Args: market_id, window_hours?, min_move_bps?, include_reasoning?.

Edge

worldcup_get_signal · 18 credits

Per-fixture signal: recommendation + edge % + EV + fractional-Kelly stake. Args: fixture combo + bankroll?, kelly_fraction? (0.25), min_edge_bps? (200), fee_bps? (0), include_reasoning?.

worldcup_find_market_edges · 18 credits

Tournament-wide model-vs-market scan. Args: min_edge_bps? (200), limit? (10), status?, include_reasoning?.

Skill cards

worldcup_market_watch · 40 credits

Tournament-wide movers + edge candidates card (~20 min cache). Args: force_regen?.

worldcup_fan_pulse · 40 credits

Social/news sentiment card via live X/web search (~1 h cache). Args: fixture combo + query?, lookback_hours?, force_regen?.

worldcup_match_preview · 40 credits

Grounded preview: form, key men, group context, market snapshot. Args: fixture combo + force_regen?.

worldcup_match_recap · 40 credits

Post-match recap once the final whistle blows. Args: fixture combo + force_regen?.

worldcup_player_spotlight · 40 credits

Grounded player card with performance context. Args: player?, team?, player_urn?, force_regen?.


Example session (Claude Code)

text
You:    get the betting signal for Brazil vs Morocco, bankroll $500

Agent:  ⏺ worldcup_get_signal(event="Brazil vs Morocco", bankroll="500")
        → recommendation: BRA ML · edge 312 bps · EV +4.1% · stake $11.25 (¼ Kelly)
          resolved: urn:machina:sport:soccer:event:brazil-vs-morocco:20260613:wor

You:    why did that market move today?

Agent:  ⏺ worldcup_search_markets(team="Brazil")           # finds market_id
        ⏺ worldcup_explain_market_move(market_id="…")
        → cited explanation (squad news + sharp flow on Kalshi)

Typed errors let agents recover without guesswork — insufficient_credits → ask the human to top up; rate_limited → wait retry_after_seconds and retry. Full table in Errors.