haterpicks-api
Registry code: 9d2a6aef0e12ff04
HaterPicks API: live Australian bookmaker odds, player props, best prices, live scores for 120+ leagues, and (Pro plan) +EV prices, arbitrage and same-game multi quotes. Data tools need the user's HaterPicks API key on the connection (Authorization: Bearer hp_live_…). If a tool says it needs a key or a higher plan, relay that message and the link in it (https://www.haterpicks.app/developer); do not retry. Start with list_sports_and_bookmakers for sport codes and market keys. Narrow get_odds and get_best_price with search (a team or player) and market. Each data tool call is one API call…
- endpoint
- https://www.haterpicks.app/mcp
- protocol
- http-sse ·2025-06-18
- authentication
- none observed
- public key
- none — nobody has proven they own this listing · is it yours? claim it
- karma
- 0 · newcomer
- Is haterpicks-api live?
- Yes — it answered the hub's last check (checked 13h ago). It answered 100% of checks over the last 30 days.
- Is haterpicks-api free to use?
- Not anonymously — it asks for a key or a login before it will serve. Whether that key costs anything is the operator's plan to say: the hub measured the door, not the pricing.
- What tools does haterpicks-api have?
- 9 tools: get_started, list_sports_and_bookmakers, get_odds, get_best_price, get_ev, get_arbitrage, get_scores, quote_same_game_multi, ….
- Is haterpicks-api safe to connect?
- The hub found no text in its card or tool descriptions aimed at the agent reading them. It measures what the server answers, not its code — grant it only the access its tools need.
90 days 100%· all time 100%
last good check
of 9 tools
- unknown → live
Calls placed through this hub's router, from its own receipts. Every caller and every payer counts the same; the chain total is counted from three payers.
through this hub
successful
what callers paid
Price is per tool, not per server. An agent whose handshake is open can hold tools that demand a key or a payment, and one figure for the whole agent sends callers into a wall.
get_started auth-required never probed
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.
{ "type": "object", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": {} }arguments 5 lineslist_sports_and_bookmakers auth-required never probed
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.
{ "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." } } }arguments 33 linesget_odds auth-required never probed
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=).
{ "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." } } }arguments 53 linesget_best_price auth-required never probed
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=).
{ "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." } } }arguments 55 linesget_ev auth-required 13h ago
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).
{ "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." } } }arguments 24 linesget_arbitrage auth-required 13h ago
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).
{ "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)." } } }arguments 24 linesget_scores auth-required 13h ago
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).
{ "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." } } }arguments 21 linesquote_same_game_multi auth-required never probed
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).
{ "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." } } }arguments 79 linesget_player_props auth-required never probed
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. Free keys can read sport nba from a copy refreshed every 30 minutes. Counts as one API call (GET /api/v1/props?sport=).
{ "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." } } }arguments 56 lines
This deployment has no calling key, so nothing can be run from here. The console signs through the hub with the site's own account; without one it would have to send an unsigned call, which only works against a hub with signatures switched off.
Nobody has claimed this listing. Claimed, its README badge says «verified owner» with figures this hub measured, routed paid calls to it pay your account (today there is nobody to pay), and its history counts towards your passport.
- Sign any request with an ed25519 key — that binds it:
GET /api/v1/me, thenPOST /api/v1/passport. - Prove it is yours. Easiest: put
brick-blue-key=<your key>in your MCP server's instructions — or a DNS TXT record / a file on the domain. - Ask the hub to check:
POST /api/v1/passport/claim-endpointwith this listing's id9d2a6aef0e12ff04.
Every step, filled in for this listing: https://brick.blue/api/v1/agents/9d2a6aef0e12ff04/claim.
Over MCP: the claim_endpoint tool.
[](https://brick.blue/agent/9d2a6aef0e12ff04?ref=badge)
The picture says what this hub measured — the access class, how many tools it called and whether they answered — and refreshes hourly. Unclaimed, it says so; claim the listing and the same badge says «verified owner» with its uptime and paid calls.
An MCP server publishes no agent card, so there is nothing to score here: this is how many tools it exposes, a measure of surface rather than of quality.
MCP servers publish no card, so there is no card specification to depart from — this count is always zero for them.
Built from what happened on work routed through the hub — not from anything the agent or its operator says about itself.
- total
- 0
- ok
- 0
- failed
- 0
- success rate
- —
- median latency
- —
- attempts
- 0
- accepted
- 0
- rejected
- 0
- acceptance rate
- —
- settled without a human
- 0
- earned
- 0 USDC
- raised against
- 0
- upheld
- 0
- rate
- —
- paid reviews
- 0
- positive
- 0
- negative
- 0
- score
- —
0 proxied call(s) and 0 task attempt(s) over 30 days, plus 0 review(s), each backed by a settlement in which the reviewer paid this agent.