Skip to main content
Glama
kennyolofsson23-netizen

travmaskinen-mcp

README.md
# Travmaskinen MCP — Nordic harness racing data for AI agents

The first MCP server for **Nordic harness racing (trav)**. Gives Claude, ChatGPT and
any MCP-compatible agent direct access to Swedish, Norwegian, Danish and Finnish
trotting data: upcoming pool games, full startlists, how the betting public is
splitting the pool, and a model-derived win probability for every runner.

Built on a dataset of **204 000 races and 2.06 million starts since 2012**.

## What your agent can do with it

- *"What's running in the V85 this Saturday?"*
- *"In tonight's V64, which horses does the model rate higher than the betting public does?"*
- *"Build me a table of every runner in leg 3 with driver, trainer and win probability."*
- *"Which horse in this round is the biggest overlay?"*

## Install

```jsonc
// Claude Desktop: claude_desktop_config.json
{
  "mcpServers": {
    "travmaskinen": {
      "command": "npx",
      "args": ["-y", "travmaskinen-mcp"],
      "env": { "TRAVMASKINEN_API_KEY": "your-key" }
    }
  }
}
```

Works with any MCP client — Claude Desktop, Claude Code, Cursor, Windsurf, VS Code.

## Getting a key

The data is a paid product. Request a key at
**<https://travmaskinen.se/api-access>**.

The server loads without a key and every tool will tell you how to get one, so you
can install first and decide after.

## Tools

### `list_upcoming_races`

Upcoming Nordic pool games — V85, V86, V64, V65, GS75 — with track, first start
time and leg count. Returns the `game_id` needed by the other tool.

| Argument | Type | Default | Notes |
| --- | --- | --- | --- |
| `days` | integer 1–14 | `7` | How many days ahead to look |

Gallop races are excluded: the model is trained on trotting only, and returning
probabilities for a sport it never learned would be quietly wrong rather than
obviously missing.

### `get_race_analysis`

One full round: every leg, every runner.

| Field | Meaning |
| --- | --- |
| `horse`, `driver`, `trainer` | Who is running |
| `pool_pct` | Share of the betting pool on this horse — what the crowd thinks |
| `pool_blend_prob` | Win probability, 0–1. Sums to 1 per leg across live runners |
| `implied_odds` | `1 / pool_blend_prob` |
| `value` | Model probability ÷ market probability. **> 1 = underbet** |
| `scratched` | Non-runner. Probability fields are `null` — it isn't racing |

Every response also carries a `field_reference` explaining each field inline, so an
agent never has to guess what a number means.

## Rate limits

1 000 calls/month and 60 calls/minute on the standard key. The tools return a clear
message rather than a raw HTTP error when either is hit.

## Configuration

| Variable | Required | Purpose |
| --- | --- | --- |
| `TRAVMASKINEN_API_KEY` | yes | Your API key |
| `TRAVMASKINEN_API_URL` | no | Override the base URL (testing) |

## Notes

Data covers Nordic **harness racing** (trot), not thoroughbred flat racing. If you
need UK or US thoroughbred data, this is the wrong server — and if you need Nordic
trot, as far as we know this is the only one.

Times are Europe/Stockholm. Probabilities are model output, not betting advice.

MIT licensed. The data behind it is a commercial product; see the terms at
<https://travmaskinen.se/api-access>.

TDQS

A4.1/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct resource or action: race games, race analysis, horse search/statistics, driver statistics, trainer statistics, and track statistics. There is no meaningful overlap, and the relationship between search_horses and get_horse_statistics is explicitly defined.

Naming Consistency5/5

Tool names consistently follow a verb_noun pattern, with most using get_ for statistics retrieval and clear action verbs like search_ and list_ for the other operations. The naming is predictable and makes the purpose of each tool immediately understandable.

Tool Count5/5

Seven tools is well-scoped for a harness racing analysis and statistics server. Each tool covers a meaningful part of the domain without redundancy or excessive granularity.

Completeness4/5

The core workflow is covered: list upcoming races, analyze a race, and retrieve entity statistics for horse, driver, trainer, and track. Minor gaps exist, such as no direct search for drivers/trainers/tracks, but these are likely less necessary and can be worked around via race analysis data.

Maintenance

ActivitySlowing
ResponsivenessNo issues