ProphetX — Public Exchange Markets (read-only)
Before writing queries, consult references/api-reference.md for sport codes and command parameters.
Read this first — what this skill can and cannot return:
- ✅ Tournaments (leagues), events (with home/away, schedule, status), market catalog (moneyline/spread/total, alt lines, player props on v2), matched stake (
total_stake), primary-line flag (favourite). - ✅ Exchange odds (American) with derived implied probability — but ONLY on markets where a public order book is exposed. Check
selections_availableper market; availability varies (pre-game core markets usually have books; in-play and low-activity markets often come back[null, null]). - ❌ Guaranteed odds on every market, or full order-book depth/liquidity. When
selections_availableisFalse, only structure and matched stake exist — never invent odds. Complete odds coverage lives behind the authenticated ProphetX Affiliate API, a separate credentialed Machina connector — never wire tokens into this skill.
Quick Start
Prefer the CLI — it avoids Python import path issues:
sports-skills prophetx get_sports_config
sports-skills prophetx search_markets --sport=nfl --query="Eagles"
sports-skills prophetx get_todays_events --sport=mlb
sports-skills prophetx get_tournaments --sport=soccer
sports-skills prophetx get_markets --event_id=19742 --api_version=v2
Python SDK (alternative):
from sports_skills import prophetx
prophetx.get_sports_config()
prophetx.search_markets(sport="nfl", query="Eagles")
prophetx.get_todays_events(sport="mlb")
prophetx.get_events(109) # tournament_id
prophetx.get_markets(19742, api_version="v2") # event_id
prophetx.get_market(19742, 219) # market id or "19742:219"
CRITICAL: Before Any Query
- Market
idis the market-TYPE id (219 = Moneyline on ANY event) — the stable per-event key ismarket_key("<event_id>:<market_id>"). api_version="v2"adds category, subType, alt lines (market_lines) and player props; default v1 is the lean catalog. v2 automatically falls back to v1 on failure.- Check
selections_availablebefore reading odds fields — odds exist only where a public order book does; never presenttotal_stake(matched volume) as odds or liquidity. - Sport codes:
soccer,tennis,basketball,baseball,ice-hockey,american-football+ aliases (nfl,nba,mlb,nhl,epl,mls,worldcup, ...).
Workflows
Market discovery for a game
search_markets --sport=nfl --query="Eagles"— soonest matching events with their markets.- Present market names/types/lines; quote odds only from markets with
selections_available: true, and say explicitly when a market's public book is empty.
Today's slate
get_todays_events --sport=mlb— today's events (UTC) with home/away and schedule.- Follow with
get_markets --event_id=<id> --api_version=v2for the full catalog (player props, alt lines).
Explore the exchange
get_sports_config— sports and live tournaments.get_tournaments --sport=soccer→get_events --tournament_id=<id>.
Important Notes
- Read-only by design: no login, no cookies, no browser automation, only GETs; conservative throttling + caching + retries with backoff; fails closed on 403/WAF and on schema drift.
- Event
statusvalues observed:not_started,live. _rawpreserves the full provider payload on every normalized record.- Unified cross-venue discovery:
sports-skills markets search_entity --query="Yankees"includes aprophetxsection (top-of-book odds per outcome when a public book exists; events without any exposed book are flagged with anote).