18+ Only  |  Gambling can be addictive — please gamble responsibly  |  Gambling Help: 1800 858 858  |  GambleAware

PuntersEdge Developers

PuntersEdge MCP server

The official Model Context Protocol server for the PuntersEdge Australian racing and sports odds API. Install one package, set one environment variable, and Claude Desktop, Claude Code, Cursor or any other MCP host can read live per-bookmaker odds, best prices, settled results and market movement — with the credit cost of every tool stated before it is called.

What it is

A small Python process that speaks MCP over stdio and forwards each tool call to the same REST endpoints documented on this site. It adds nothing the HTTP API does not have; what it adds for an assistant is a typed tool surface with costs in the descriptions, the credit balance returned after every call so the assistant can budget without spending a request, and a read-only design — nothing that rotates keys, touches billing or places a bet is exposed.

Packagepuntersedge-mcp on PyPI — version 0.2.1 at the time of writing, MIT licensed
Commandpuntersedge-mcp
Transportstdio (runs locally, next to the client)
Python>=3.10
API keyread from the PUNTERSEDGE_API_KEY environment variable; never logged or echoed in tool output
Base URL overridePUNTERSEDGE_BASE_URL (optional; defaults to https://api.puntersedge.online)

Install

Either install it, or let uvx fetch and run it on demand:

pip install puntersedge-mcp

# or, with uv installed, no install step at all:
uvx puntersedge-mcp

You need an API key. Sign up at /api — the free tier is 1,500 credits a month with no credit card. The demo tool works without a key, so a host can be wired up and tested before the key arrives.

Configure your client

Every MCP host takes the same three facts: a command, optional arguments and an env block carrying PUNTERSEDGE_API_KEY. The snippets use the installed puntersedge-mcp command; to run through uvx instead, set "command": "uvx" and "args": ["puntersedge-mcp"].

Claude Desktop

Edit claude_desktop_config.json (Claude → Settings → Developer → Edit Config) and restart Claude Desktop:

{
  "mcpServers": {
    "puntersedge": {
      "command": "puntersedge-mcp",
      "env": { "PUNTERSEDGE_API_KEY": "your-key-here" }
    }
  }
}

Claude Code

One command from the project directory:

claude mcp add puntersedge -e PUNTERSEDGE_API_KEY=your-key-here -- puntersedge-mcp

Cursor

Create .cursor/mcp.json in the project (or ~/.cursor/mcp.json for every project):

{
  "mcpServers": {
    "puntersedge": {
      "command": "puntersedge-mcp",
      "env": { "PUNTERSEDGE_API_KEY": "your-key-here" }
    }
  }
}

Any other MCP host

The same JSON shape works wherever a host accepts a stdio server. Keep the key in the env block or the process environment rather than in a prompt; the server reads it once at start-up.

Tools

Twenty-six tools, all read-only. Costs are in API credits and are the amounts the API bills for the underlying endpoint — a next-to-go call is 2 credits, the same as calling /v1/racing/next-to-go over HTTP. Each name links to the endpoint's reference page, which carries the full parameter list and response shape.

ToolWhat it returnsCost
racing_next_to_go Next Australian/NZ races to jump, with runners and live per-bookmaker prices. Filters: categories (horse, greyhound, harness), country, venue, bookmakers, num_races. Each price carries its own age_seconds and stale flag. 2 credits
racing_best_odds Best win, place and tote price per runner across every bookmaker, with the book offering it and the market percentage. 3 credits
racing_movers Consensus firmers and drifters in the live window. min_books only reports a move confirmed by that many bookmakers, which separates a real move from one book repricing. 3 credits
racing_changes Only the races and prices that changed since a timestamp — the right way to watch a market, instead of re-downloading the card on a timer. Returns the cursor for the next call. 2 credits
racing_events Scheduled races in a forward window, without prices. Cheaper than next-to-go when you only need the card. 1 credit
racing_track_conditions Track condition, weather and rail position: current state plus the day's change log. 1 credit
racing_acceptances Full-day AU thoroughbred acceptance card. Several counts are a floor rather than an exact figure; the response states the bound. 2 credits
racing_venues Canonical venue directory: venue_id, display name, physical site, country and the codes run there. 1 credit
racing_results Settled AU/NZ results: dividends, plus the full finishing order with jockey, trainer, margin, starting price and a stable runner_ref per runner. 2 credits
racing_results_coverage What results coverage measurably is — the honest answer before reporting that a race is missing a result. 1 credit
racing_price_history Recorded per-bookmaker price ticks for one race — the market movement record. 5 credits
racing_closing_lines The permanent closing-line and result archive, for measuring closing line value. Standard plan and above. 5 credits (JSON)
racing_closing_lines_coverage What the archive holds: floor date, row and race counts, how much is a true closing line and how much is resulted. 1 credit
horse_form Thoroughbred form, career record and profile for one horse, by name or by the stable ra: code from runner_ref. 3 credits
greyhound_form Form history for one dog, by name or Topaz dogId. 3 credits
greyhound_stats One dog's record broken down by track, distance, box or grade — crossable, e.g. track and distance together. 3 credits
jockey_stats Jockey premiership leaderboards, or one jockey by name, per state, scope and season. 2 credits
trainer_stats Trainer premiership leaderboards, or one trainer by name. 2 credits
list_sports The sport catalogue: every queryable sport_key with its display name. Racing is not in here and has no sport key. 1 credit
sports_odds Head-to-head, spread and total prices per bookmaker for a sport's upcoming fixtures (afl, nrl, nba and so on). Every market carries a quality object. per market
best_odds Best available price per outcome across bookmakers for one sport. 3 credits
arb_best_prices Cross-book price comparison per selection, with every bookmaker's quote alongside the best. 2 credits
check_usage The key's plan, monthly allowance, credits used and reset date. free
connector_health Per-bookmaker feed freshness: last_ok, status, records written. How an agent tells a quiet market from a stalled scraper, which keeps serving its last value rather than erroring. free
demo_next_to_go No-key sandbox sample of racing_next_to_go, for exploring the response shape before spending credits. free
demo_best_odds No-key sandbox sample of sports best-odds with arb detection. free

sports_odds is billed one credit per market type requested, which is why its row carries no single figure. Every priced response is wrapped as {"data": ..., "credits_remaining": "..."}, the second value coming from the API's X-Credits-Remaining header. A 402 means the monthly allowance is spent; it is a hard stop with no overage billing, and the tool result says so rather than failing silently.

Notes the server gives the assistant

Prefer a prompt-only route?

If you cannot run a local process — a custom GPT, a hosted agent, a browser-only assistant — Use the API from ChatGPT, Claude, Cursor and Copilot covers the OpenAPI-import and llms.txt paths, and includes a worked prompt.

This site contains wagering-related analysis and is intended for Australian users aged 18+. Gambling involves risk. Please gamble responsibly.