Live Australian bookmaker odds, player props, best prices, +EV, arbitrage and live scores.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Your HaterPicks API key as a Bearer token. Get a free key (no card) at https://www.haterpicks.app/developer.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Markets where backing every outcome at different Australian bookmakers returns more than the total stake: the profit % and each leg's side, bookmaker and decimal price, best first. Prices move fast; check them at the bookmaker before acting. Needs the Pro plan ($79 AUD a month) or higher. Counts as one API call (GET /api/v1/arbs).
How many rows to return (default 20, at most 100). Use search or market to narrow first.
Only this sport, e.g. AFL or SOCCER (any case).
Minimum guaranteed return, percent of total stake (default 0.5).
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http api https://www.haterpicks.app/mcp \ --header 'Authorization: Bearer YOUR_TOKEN'
Headers
Authorization (required): Your HaterPicks API key as a Bearer token. Get a free key (no card) at https://www.haterpicks.app/developer.Markets where backing every outcome at different Australian bookmakers returns more than the total stake: the profit % and each leg's side, bookmaker and decimal price, best first. Prices move fast; check them at the bookmaker before acting. Needs the Pro plan ($79 AUD a month) or higher. Counts as one API call (GET /api/v1/arbs).
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many rows to return (default 20, at most 100). Use search or market to narrow first. |
| sport | string | Only this sport, e.g. AFL or SOCCER (any case). |
| min_profit_pct | number | Minimum guaranteed return, percent of total stake (default 0.5). |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "How many rows to return (default 20, at most 100). Use search or market to narrow first."
},
"sport": {
"type": "string",
"maxLength": 20,
"description": "Only this sport, e.g. AFL or SOCCER (any case)."
},
"min_profit_pct": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Minimum guaranteed return, percent of total stake (default 0.5)."
}
}
}Which Australian bookmaker pays the most for each side of a market: the best decimal price, the bookmaker, how many books price that side and how much more the best pays than the worst (spread_pct). Sharp reference books that cannot be backed are left out. Free keys cover game lines; player props need Starter or higher. Works on every plan, Free included. Counts as one API call (GET /api/v1/odds?sport=).
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many rows to return (default 10, at most 50). Use search or market to narrow first. |
| sport* | string | Sport code, upper case. list_sports_and_bookmakers lists every code and its markets. |
| market | string | A market key such as AFL_H2H or NBA_POINTS, or just its ending: H2H, TOTAL, LINE, SPREAD, POINTS, DISPOSALS. |
| search* | string | Team, player or matchup words, e.g. "Carlton" or "Nick Daicos". Every word must match. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"sport",
"search"
],
"properties": {
"limit": {
"type": "integer",
"default": 10,
"maximum": 50,
"minimum": 1,
"description": "How many rows to return (default 10, at most 50). Use search or market to narrow first."
},
"sport": {
"enum": [
"AFL",
"AFLW",
"BOXING",
"CRICKET",
"ESPORTS",
"GOLF",
"MLB",
"NBA",
"NBL",
"NCAAB",
"NCAAF",
"NFL",
"NHL",
"NRL",
"NRLW",
"RACING",
"RUGBY_UNION",
"SOCCER",
"TENNIS",
"UFC",
"WNBA"
],
"type": "string",
"description": "Sport code, upper case. list_sports_and_bookmakers lists every code and its markets."
},
"market": {
"type": "string",
"maxLength": 40,
"description": "A market key such as AFL_H2H or NBA_POINTS, or just its ending: H2H, TOTAL, LINE, SPREAD, POINTS, DISPOSALS."
},
"search": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Team, player or matchup words, e.g. \"Carlton\" or \"Nick Daicos\". Every word must match."
}
}
}Player-prop prices where the best Australian bookmaker price beats the fair price, best edge first: player, stat, line, side, best price and bookmaker, edge % (market_ev_pct) and fair probability. basis says whether the fair price comes from our model and the market or the market alone. Needs the Pro plan ($79 AUD a month) or higher. Counts as one API call (GET /api/v1/ev).
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many rows to return (default 20, at most 100). Use search or market to narrow first. |
| sport | string | Only this sport, e.g. AFL or NBA (any case). |
| min_edge_pct | number | Only picks whose edge (market_ev_pct) is at least this percent. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"limit": {
"type": "integer",
"default": 20,
"maximum": 100,
"minimum": 1,
"description": "How many rows to return (default 20, at most 100). Use search or market to narrow first."
},
"sport": {
"type": "string",
"maxLength": 20,
"description": "Only this sport, e.g. AFL or NBA (any case)."
},
"min_edge_pct": {
"type": "number",
"maximum": 100,
"minimum": 0,
"description": "Only picks whose edge (market_ev_pct) is at least this percent."
}
}
}Live odds for one sport across Australian bookmakers: one row per game, market and line, with each bookmaker's decimal price for every side. Narrow with search (team or player) and market. Free keys get game lines (head-to-head, line, total); player-prop rows need Starter or higher. Works on every plan, Free included. Counts as one API call (GET /api/v1/odds?sport=).
| Argument | Type | Description |
|---|---|---|
| limit | integer | How many rows to return (default 25, at most 100). Use search or market to narrow first. |
| sport* | string | Sport code, upper case. list_sports_and_bookmakers lists every code and its markets. |
| market | string | A market key such as AFL_H2H or NBA_POINTS, or just its ending: H2H, TOTAL, LINE, SPREAD, POINTS, DISPOSALS. |
| search | string | Team, player or matchup words, e.g. "Collingwood" or "Lakers Celtics". Every word must match. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"sport"
],
"properties": {
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "How many rows to return (default 25, at most 100). Use search or market to narrow first."
},
"sport": {
"enum": [
"AFL",
"AFLW",
"BOXING",
"CRICKET",
"ESPORTS",
"GOLF",
"MLB",
"NBA",
"NBL",
"NCAAB",
"NCAAF",
"NFL",
"NHL",
"NRL",
"NRLW",
"RACING",
"RUGBY_UNION",
"SOCCER",
"TENNIS",
"UFC",
"WNBA"
],
"type": "string",
"description": "Sport code, upper case. list_sports_and_bookmakers lists every code and its markets."
},
"market": {
"type": "string",
"maxLength": 40,
"description": "A market key such as AFL_H2H or NBA_POINTS, or just its ending: H2H, TOTAL, LINE, SPREAD, POINTS, DISPOSALS."
},
"search": {
"type": "string",
"maxLength": 80,
"description": "Team, player or matchup words, e.g. \"Collingwood\" or \"Lakers Celtics\". Every word must match."
}
}
}Player-prop markets for one sport across Australian bookmakers: player, market, line and each bookmaker's over and under price. Narrow with player, team and market. Needs the Starter plan ($29 AUD a month) or higher. Counts as one API call (GET /api/v1/props?sport=).
| Argument | Type | Description |
|---|---|---|
| team | string | Team or matchup words, e.g. "Collingwood". |
| limit | integer | How many rows to return (default 25, at most 100). Use search or market to narrow first. |
| sport* | string | Sport key, lower case. |
| market | string | A market key such as AFL_H2H or NBA_POINTS, or just its ending: H2H, TOTAL, LINE, SPREAD, POINTS, DISPOSALS. |
| player | string | Player name words, e.g. "Daicos". Every word must match. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"sport"
],
"properties": {
"team": {
"type": "string",
"maxLength": 80,
"description": "Team or matchup words, e.g. \"Collingwood\"."
},
"limit": {
"type": "integer",
"default": 25,
"maximum": 100,
"minimum": 1,
"description": "How many rows to return (default 25, at most 100). Use search or market to narrow first."
},
"sport": {
"enum": [
"nrl",
"nrlw",
"nhl",
"mlb",
"afl",
"aflw",
"nba",
"wnba",
"nbl",
"soccer",
"tennis",
"ufc",
"boxing",
"nfl",
"ncaaf",
"ncaab",
"cricket",
"rugby_union",
"golf"
],
"type": "string",
"description": "Sport key, lower case."
},
"market": {
"type": "string",
"maxLength": 40,
"description": "A market key such as AFL_H2H or NBA_POINTS, or just its ending: H2H, TOTAL, LINE, SPREAD, POINTS, DISPOSALS."
},
"player": {
"type": "string",
"maxLength": 80,
"description": "Player name words, e.g. \"Daicos\". Every word must match."
}
}
}Live scores for 120+ leagues: score, period, clock and status for every game around today (yesterday's finals to two days ahead). With no league it lists the league keys. Golf and motor racing add a top-10 leaderboard. Works on every plan, Free included. A box score (game) needs Starter or higher. Counts as one API call (GET /api/v1/scores).
| Argument | Type | Description |
|---|---|---|
| game | string | A game id from the league's scores, for its box score (WNBL and NBL1; needs Starter or higher). Needs league. |
| league | string | League key, e.g. nba, afl, nrl, eng.1, wnbl. Leave it off for the list of every league key. |
| season | string | "current" for every game of the season, played and to come (WNBL and NBL1). Needs league. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"game": {
"type": "string",
"maxLength": 60,
"description": "A game id from the league's scores, for its box score (WNBL and NBL1; needs Starter or higher). Needs league."
},
"league": {
"type": "string",
"maxLength": 40,
"description": "League key, e.g. nba, afl, nrl, eng.1, wnbl. Leave it off for the list of every league key."
},
"season": {
"type": "string",
"const": "current",
"description": "\"current\" for every game of the season, played and to come (WNBL and NBL1). Needs league."
}
}
}How to connect a HaterPicks API key, what each plan includes and which tool needs which plan. Call this first if no key is connected or a tool says it needs one. Needs no key. Get a free key at https://www.haterpicks.app/developer.
No arguments.
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {}
}The sport codes get_odds and get_best_price accept, with each sport's market keys; the sports get_player_props accepts; and the bookmakers whose prices the feeds carry (id and name). Needs no key and costs no API call.
| Argument | Type | Description |
|---|---|---|
| sport | string | Only this sport's markets. Leave it off for every sport. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"properties": {
"sport": {
"enum": [
"AFL",
"AFLW",
"BOXING",
"CRICKET",
"ESPORTS",
"GOLF",
"MLB",
"NBA",
"NBL",
"NCAAB",
"NCAAF",
"NFL",
"NHL",
"NRL",
"NRLW",
"RACING",
"RUGBY_UNION",
"SOCCER",
"TENNIS",
"UFC",
"WNBA"
],
"type": "string",
"description": "Only this sport's markets. Leave it off for every sport."
}
}
}Live price for a same-game multi (parlay) of two or more player-prop legs from one game, at each Australian bookmaker that will price it, with a fair quote. Read-only: it asks for a price and never places a bet. Needs the Pro plan ($79 AUD a month) or higher. Counts as one API call (POST /api/v1/sgm-quote).
| Argument | Type | Description |
|---|---|---|
| away* | string | Away team name. |
| home* | string | Home team name. |
| legs* | array | Two or more player-prop legs from the same game. |
| books | array | Only these bookmaker ids (see list_sports_and_bookmakers). Leave it off for every bookmaker that prices it. |
| sport* | string | Sport key, lower case, e.g. afl, nrl, nba. |
{
"type": "object",
"$schema": "https://json-schema.org/draft/2020-12/schema",
"required": [
"sport",
"home",
"away",
"legs"
],
"properties": {
"away": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Away team name."
},
"home": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Home team name."
},
"legs": {
"type": "array",
"items": {
"type": "object",
"required": [
"player",
"stat",
"line"
],
"properties": {
"line": {
"type": "number",
"description": "The over line, a half point: 29.5 for 30+."
},
"side": {
"enum": [
"OVER",
"UNDER"
],
"type": "string",
"default": "OVER"
},
"stat": {
"type": "string",
"maxLength": 20,
"minLength": 1,
"description": "Stat code, e.g. DISP, GOAL, MARK, TACK (AFL) or PTS, REB, AST (basketball)."
},
"player": {
"type": "string",
"maxLength": 80,
"minLength": 1,
"description": "Player name as the bookmakers list it, e.g. \"Nick Daicos\"."
}
}
},
"maxItems": 10,
"minItems": 2,
"description": "Two or more player-prop legs from the same game."
},
"books": {
"type": "array",
"items": {
"type": "string",
"maxLength": 40
},
"maxItems": 20,
"description": "Only these bookmaker ids (see list_sports_and_bookmakers). Leave it off for every bookmaker that prices it."
},
"sport": {
"type": "string",
"maxLength": 20,
"minLength": 2,
"description": "Sport key, lower case, e.g. afl, nrl, nba."
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 9, 2026.