skills/world-cup/SKILL.md
Premium FIFA World Cup 2026 market & match intelligence — a hosted, read-only layer that fuses official match truth (fixtures, standings, squads, injuries, player performance) with live prediction markets (Kalshi + Polymarket: prices, order books, price history, movers, cross-venue edges) and AI-grounded context (prematch briefs, move explanations, fan/social pulse). Every entity carries a canonical machina URN cross-walked across api-football, sportradar, opta, entain and ESPN, so a market resolves to a fixture resolves to two teams. This skill is prompt-only and premium: it routes the agent to the hosted World Cup Intelligence project (a per-project Machina MCP server) via `machina-cli`. It runs no code locally and ships no API keys. Use when: the user wants World Cup 2026 odds + match context together, asks "what moved and why", wants a grounded market brief or fan-sentiment read on a fixture, or needs one stable id that joins markets ↔ fixtures ↔ teams across providers. Don't use when: the user wants free snapshot data from public APIs (use the `football-data`, `kalshi`, `polymarket`, or `markets` skills), or wants to place a bet/trade — this layer is read-only intelligence and never executes orders.
npx skillsauth add machina-sports/sports-skills world-cupInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
A hosted, read-only intelligence layer for the FIFA World Cup 2026. It joins three things that are normally separate — official match truth, live prediction-market state, and AI-grounded context — under one canonical id space, so an agent can go from a market to the fixture to the teams in a single hop and reason about why a price is moving.
This skill itself runs no code. Like the machina
gateway it builds on, it shells out to machina-cli, selects the hosted World
Cup Intelligence project, and the agent harness talks to that project's MCP
server. Tenant routing, provider keys, rate limits, and caching all live
server-side. You never call a raw HTTP API or hold a provider key.
Read-only intelligence — not advice. Every output is informational sports market intelligence. Not betting, trading, financial, or investment advice. This layer has no order-placement, trading, or portfolio endpoints. If the user wants to act on a signal, that execution happens in their own agent, on their own account and keys — never here.
This is a paid, metered layer (Machina Credits — see your project's credit-cost
classes). Free public data does not flow through here. Where your agent
harness supports agent-native pay-per-call (x402), the MCP server advertises price
per tool; otherwise calls draw from the project's credit balance. If a call
returns a 402 / "payment required" / "insufficient credits" error, surface it to
the user and stop — do not retry-loop.
# 1. Install the Machina CLI (one-time) — shared with the `machina` skill
pip install machina-cli
# or: curl -fsSL https://raw.githubusercontent.com/machina-sports/machina-cli/main/install.sh | bash
# 2. Authenticate
machina login # interactive (browser)
# machina login --api-key <project-api-key> # non-interactive (CI/CD)
# 3. Select the World Cup Intelligence project (REQUIRED)
machina project list
machina project use <world-cup-project-id>
# 4. Connect the MCP server
# `machina project use` (or `machina template install`) returns the MCP URL +
# headers. Point your harness's MCP config at it (e.g. .claude/mcp.json for
# Claude Code), then reload the harness so it re-reads the config.
Verify, in order — fix the specific failing step, never loop on the same call:
machina-cli is installed — which machina / machina version.machina auth whoami returns a user.machina project use <id>.All tools are read-only. Group by job:
| Tool | Returns |
|------|---------|
| worldcup-resolve | Any provider id or canonical URN → entity + all cross-provider ids |
| worldcup-get-schedule | Fixtures, filter by date / team / status |
| worldcup-get-event-context | Enriched match context (event + grounded prematch research) |
| worldcup-get-standings | Group tables |
| worldcup-get-squads | Both teams' squads |
| worldcup-get-injuries | Injuries / suspensions |
| worldcup-get-player-performance-context | Player performance signals (official + provisional, kept separate) |
| Tool | Returns |
|------|---------|
| worldcup-search-markets | Market search across venues, linked to fixtures/teams |
| worldcup-get-market-state | Live price + order-book depth + price history + trades |
| worldcup-market-movers | Biggest price moves over a lookback window |
| worldcup-compare-market-sources | Cross-venue price comparison |
| worldcup-find-market-edges | Informational edge / arb candidates, with caveats (AI) |
| worldcup-explain-market-move | Why a price moved, grounded + cited (AI) |
| worldcup-generate-market-brief | Grounded market-intelligence brief for a fixture (AI) |
| worldcup-fan-sentiment-context | Social / news pulse from live X + web (AI) |
world-cup-intelligence-agent — full read + market context.world-cup-market-analyst-agent — market-focused analyst.A typical agent flow — research only, no execution:
worldcup-search-markets {"query":"Brazil","status":"open"}.event_urn + related_team_urns;
worldcup-resolve (or worldcup-get-event-context) expands the fixture, squads,
standings, injuries.worldcup-get-market-state for price, order-book depth,
history, trades; worldcup-market-movers / worldcup-compare-market-sources for
movement and cross-venue gaps.worldcup-explain-market-move, worldcup-find-market-edges
(informational only), worldcup-generate-market-brief, worldcup-fan-sentiment-context.Every entity has a canonical machina URN, stable across providers:
urn:machina:sport:soccer:event:{home}-vs-{away}:{YYYYMMDD}:worurn:machina:sport:soccer:team:{slug}:{iso3}urn:machina:sport:soccer:player:{slug}:{YYYYMMDD-dob}:{iso3}urn:machina:sport:soccer:competition:fifa-world-cup-2026:woriso3 is the lowercased ISO-3166 alpha-3 (UK home nations use FIFA codes eng/sco/wal).
Every doc also carries a uniform provider_ids map (one id per provider).
Alternate key: reads accept the canonical event_urn or provider_event_id
(the api-football fixture id, e.g. 1489417) — the latter is the simplest client
handle. Markets are keyed {source}:{source_market_id} (e.g. kalshi:KXWCGAME-…,
polymarket:2415458).
worldcup-search-markets — cached, refreshed every ~30 min; responses warn past 15 min.worldcup-get-market-state — live from the source.worldcup-market-movers — hourly snapshot series; needs ≥2 buckets to show movement.| Error | Cause | Recovery |
|---|---|---|
| command not found: machina | CLI not installed | pip install machina-cli |
| Not authenticated… | No session | machina login |
| No project selected… | Project not chosen | machina project list → machina project use <world-cup-id> |
| 402 / payment required / insufficient credits | Metered call, no balance | Tell the user; top up credits or enable x402. Do not retry-loop. |
| Tools not visible after project use | Harness hasn't reloaded MCP config | Restart / reload the harness so it re-reads the MCP config |
place, order, trade, buy, sell, bet tool~~ — this layer is
read-only; no such tool exists. Execution is the user's own, elsewhere.requests / direct provider HTTP~~ — go through the MCP server; keys and
the correct searchLimit/nested filters live server-side.machina mcp start / machina mcp connect~~ — the MCP server runs on Machina
infra; the harness connects via its own MCP config.development
Polymarket sports prediction markets — live odds, prices, order books, events, series, and market search. No auth required. Covers NFL, NBA, MLB, football (EPL, UCL, La Liga), tennis, cricket, MMA, esports. Supports moneyline, spreads, totals, and player props. Use when: user asks about sports betting odds, prediction markets, win probabilities, market sentiment, or "who is favored to win" questions. Don't use when: user asks about actual match results, scores, or statistics — use the sport-specific skill: football-data (soccer), nfl-data (NFL), nba-data (NBA), wnba-data (WNBA), nhl-data (NHL), mlb-data (MLB), tennis-data (tennis), golf-data (golf), cricket-data (cricket), cfb-data (college football), cbb-data (college basketball), or fastf1 (F1). Don't use for historical match data. Don't use for news — use sports-news instead. Don't confuse with Kalshi — Polymarket focuses on crypto-native prediction markets with deeper sports coverage; Kalshi is a US-regulated exchange with different market structure.
development
Sports metadata via TheSportsDB free API (key=3). Team logos and badges, player photos, stadium info, league info, and biographical data across 100+ leagues. No API key required, zero config. Use when: user asks for a team logo, crest, badge, banner, jersey, kit, player photo or headshot, stadium info, club description, or wants to search for teams or players by name across sports. Good for enriching responses from other skills with images and visual identifiers. Don't use when: user asks for scores, standings, fixtures, stats, or odds — use the sport-specific skill instead: football-data (soccer), nfl-data (NFL), nba-data (NBA), wnba-data (WNBA), nhl-data (NHL), mlb-data (MLB), tennis-data (tennis), golf-data (golf), cricket-data (cricket), cfb-data (college football), cbb-data (college basketball), fastf1 (F1), volleyball-data (Dutch volleyball), xctf-data (NCAA XC/TF). Don't use for prediction markets — use polymarket or kalshi.
development
Cricket data via ESPN public endpoints and Cricsheet open data — live-ish series scoreboards, standings, match summaries and news (ESPN), plus historical ball-by-ball, player stats, and player registry (Cricsheet, ODC-BY 1.0). Zero config, no API keys. Use when: user asks about cricket scores, IPL/BBL/PSL/international series, points tables, match details, cricket news, ball-by-ball history, or player career stats. Don't use when: user asks about other sports — use football-data (soccer), nfl-data (NFL), nba-data (NBA), wnba-data (WNBA), nhl-data (NHL), mlb-data (MLB), tennis-data (tennis), golf-data (golf), cfb-data (college football), cbb-data (college basketball), or fastf1 (F1). For betting odds use polymarket or kalshi. For general news use sports-news. Don't use for ICC rankings — no free source exists (v1 limitation).
development
NCAA cross country and track & field athlete data via TFRRS (tfrrs.org) and news via The Stride Report. Fetch athlete profiles including all personal records (PRs), eligibility year, school, full season-by-season results history, and XC/TF news. Zero config, no API keys. Use when: user asks about NCAA cross country, NCAA track and field, college running, TFRRS athlete profiles, personal records, PRs, XC or TF season results, individual athlete performance history, or XC/TF news. Don't use when: user asks about professional track, Diamond League, or other sports — use nfl-data, nba-data, wnba-data, nhl-data, mlb-data, golf-data, cricket-data, cfb-data, cbb-data, tennis-data, fastf1, or volleyball-data. For betting use polymarket or kalshi.