# Query the record

NCAA Division I championships, 1928–2026; no tournaments in 1943–1945 and 2020. 14 read-only tools, served two ways: an MCP server for Claude, ChatGPT, Claude Code and other agents, and a plain JSON API for everything else. Every answer carries the data release it came from, the bracket's evidence level where one is involved, links to the pages that show the same results, and a line to cite.

## Connect

MCP server: `https://www.marchmatness.app/mcp` (stateless Streamable HTTP, protocol revisions 2025-11-25, 2025-06-18, 2025-03-26, no sign-in). Server card: [/.well-known/mcp/server.json](https://www.marchmatness.app/.well-known/mcp/server.json). Machine-readable summary: [/llms.txt](https://www.marchmatness.app/llms.txt).

**Claude Code**

```
claude mcp add --transport http marchmatness https://www.marchmatness.app/mcp
```

**Claude.ai**

Customize → Connectors → Add custom connector → paste `https://www.marchmatness.app/mcp`. Choose “No sign-in”.

**ChatGPT and other clients**

Add a custom MCP server (ChatGPT: developer mode, where your plan allows it) with the same URL.

**curl, a spreadsheet, a script**

```
curl "https://www.marchmatness.app/api/v1/leaders?stat=falls&scope=career&limit=10"
```

The API lists itself at [/api/v1/](https://www.marchmatness.app/api/v1/). Responses are JSON, cached for 5 minutes, and limited to about 60 requests a minute per address, in bursts of up to 20.

## What every answer carries

```
{
  "tool": "leaders",
  "release": "pub_v1_75169e972871bad371d3a666",
  "as_of": "YYYY-MM-DD",
  "coverage": "NCAA Division I championships, 1928–2026; no tournaments in 1943–1945 and 2020",
  "evidence": null,
  "records": [
    "…"
  ],
  "total": 1,
  "note": null,
  "links": [
    "https://www.marchmatness.app/stats/career/?types=fall"
  ],
  "corrections": [],
  "cite_as": "March Matness, NCAA Division I championship record, release 75169e97, retrieved YYYY-MM-DD"
}
```

- **release**: the data release that answered; it changes when the record does.
- **evidence**: for anything about a bracket, `verified` (checked against the archived bracket sheet), `drafted` or `drafted_with_gaps`. Quote it with the fact.
- **links**: the pages that show the same results, computed by the same code.
- **corrections**: documented corrections to any bout in the answer, with the evidence link.
- **cite\_as**: one line to cite.

## Tools

### `coverage` · What the record covers

The record's scope, counts and release: NCAA Division I championships only, first and last year, the calendar gaps, the number of bouts, wrestlers, schools and bracket boards by evidence level, the data sources, and how to cite. Call this first when unsure whether a question is inside the record. It also describes the bout scoring record (scoring: its first and last year, gaps, bundle and source), which counts reconciled bouts only and is cited with its bundle.

Example: [`/api/v1/coverage`](https://www.marchmatness.app/api/v1/coverage)

### `find_entity` · Find a wrestler, school or year

Resolve a name to the record's ids. Returns up to 10 candidates with id, kind (wrestler, program or tournament), label, a subtitle (school and years for a wrestler, individual titles and years for a school, weights and bouts for a year), individual titles for a wrestler, the year for a tournament, and the page url. A note says when the candidates are only near spellings. Same-name wrestlers are separate candidates: pick by school and years. Use the id in the other tools.

| Parameter | Type | Required | Meaning |
| --- | --- | --- | --- |
| `query` | string | yes | A name or part of one, e.g. "Dan Gable", "Oklahoma State", "1993". |
| `kind` | wrestler \| program \| tournament | no | Restrict to one kind. |

Example: [`/api/v1/find_entity?query=Dan+Gable`](https://www.marchmatness.app/api/v1/find_entity?query=Dan+Gable)

### `leaders` · Record lists

Ranked lists computed from the record. stat: falls, tech\_falls, majors, bonus\_wins (all four bonus types), fastest\_falls, titles (individual championships), placements (top-8 finishes), team\_points. scope: career (per wrestler, all years), tournament (per wrestler in one tournament), program (per school, all years), program\_tournament (per school in one tournament), streak (consecutive bonus wins; bonus stats only). fastest\_falls ignores scope. team\_points needs scope tournament with one year in years, or program / program\_tournament. Filters narrow by years (a list of tournament years), weight, program\_id and round (a round code such as "1st" or its name such as "Final"). Ties share a rank, and a tie at the cut is kept whole up to twice limit (at least limit + 10 rows), so more rows than limit can come back; past that the note says how many more share the last rank. fastest\_falls carries any documented correction to a listed bout in corrections. An unknown program\_id is refused (404); resolve a school with find\_entity. Every record carries id, the wrestler's or program's public id (for fastest\_falls, the winner's). team\_points by tournament follows the published standings: rank is the NCAA's published place, and schools the standings do not list come after every listed school with rank null and reconstructed: true.

| Parameter | Type | Required | Meaning |
| --- | --- | --- | --- |
| `stat` | falls \| tech\_falls \| majors \| bonus\_wins \| fastest\_falls \| titles \| placements \| team\_points | yes | Which statistic. |
| `scope` | career \| tournament \| program \| program\_tournament \| streak | yes | How to group. |
| `years` | list of integer | no | Tournament years to include; omit for all. |
| `weight` | string | no | Weight class as the site prints it: a number such as "125" or "177", or "unlimited" (also written 450). "heavyweight" means each year's heaviest class: Unlimited, 275 or 285. |
| `program_id` | string | no | Only this school's wrestlers, or the school itself for team\_points (from find\_entity). |
| `round` | string | no | A round, by code ("1st", "Champ 4") or name ("Final", "Semifinal"). |
| `limit` | integer ≥ 1, ≤ 50 | no | Rows to return, 1 to 50 (default 10). |

Example: [`/api/v1/leaders?stat=falls&scope=career&limit=10`](https://www.marchmatness.app/api/v1/leaders?stat=falls&scope=career&limit=10)

### `wrestler_card` · A wrestler's record

One wrestler's championship record: schools, years, wins, losses, falls, individual titles, every year's weight, seed, finish and record, bonus wins by method (bonus\_wins: falls, tech\_falls, majors, superior\_decisions and their total, counted as the leaders stats count them), and every bout with opponent, round, result, score and time. The card, each program, each opponent and each bout carry a url to their page. Ids come from find\_entity. From the bout scoring record's first year, scoring gives the year lines (totals, per bout, per 7 minutes) and each bout carries its scoring counts or its status.

| Parameter | Type | Required | Meaning |
| --- | --- | --- | --- |
| `wrestler_id` | string | yes | A wr\_ id from find\_entity. |

Example: [`/api/v1/wrestler_card?wrestler_id=wr_bn7nbaqfavanz6dt`](https://www.marchmatness.app/api/v1/wrestler_card?wrestler_id=wr_bn7nbaqfavanz6dt)

### `head_to_head` · Two wrestlers' meetings

Every championship bout between two wrestlers, with year, weight, round, winner, result, score and time, and the match pages. Empty records with a note when they never met.

| Parameter | Type | Required | Meaning |
| --- | --- | --- | --- |
| `wrestler_a` | string | yes | A wr\_ id. |
| `wrestler_b` | string | yes | Another wr\_ id. |

Example: [`/api/v1/head_to_head?wrestler_a=wr_bn7nbaqfavanz6dt&wrestler_b=wr_ifop7ukjkgzt36uz`](https://www.marchmatness.app/api/v1/head_to_head?wrestler_a=wr_bn7nbaqfavanz6dt&wrestler_b=wr_ifop7ukjkgzt36uz)

### `tournament` · One year's championships

A tournament year: every weight with its champion, placers 1-8, bout count, bracket evidence level (verified against the sheet, drafted, or drafted with gaps) and board url, plus the team standings as records of kind team: place is the NCAA's published place (tied when schools share it); schools the published standings do not list come after every listed school with place null, computed\_rank and points calculated from the bouts, and reconstructed: true. In years whose team points cannot be calculated from the bouts the standings are as published, with a note; in years the NCAA did not score teams there are none, with a note. With weight, one weight class only. A calendar-gap year (one of coverage's missing\_years) returns no weights and a note.

| Parameter | Type | Required | Meaning |
| --- | --- | --- | --- |
| `year` | integer | yes | Tournament year; coverage gives the first and last year and the calendar gaps. |
| `weight` | string | no | Weight class as the site prints it: a number such as "125" or "177", or "unlimited" (also written 450). "heavyweight" (or "hwt") means that year's heaviest class: Unlimited, 275 or 285. |

Example: [`/api/v1/tournament?year=1993`](https://www.marchmatness.app/api/v1/tournament?year=1993)

### `program_year` · A school in one tournament

One school's tournament in one year: entrants, wins, losses, falls, titles, All-Americans, team points and place (team.reconstructed is true when the NCAA does not list the school and its points and place are computed from the bouts), the champions and placers, and the full roster with each wrestler's weight, record, place or exit round. In a year the bout scoring record covers, scoring gives the school's line in every unit.

| Parameter | Type | Required | Meaning |
| --- | --- | --- | --- |
| `program_id` | string | yes | A pr\_ id from find\_entity. |
| `year` | integer | yes | Tournament year; coverage gives the first and last year and the calendar gaps. |

Example: [`/api/v1/program_year?program_id=pr_m6nvcppn6ysyit5w&year=1994`](https://www.marchmatness.app/api/v1/program_year?program_id=pr_m6nvcppn6ysyit5w&year=1994)

### `program_summary` · A school's championship history

One school across every tournament: totals (entrants, wins, losses, falls, individual titles, All-Americans), team championships and top-five finishes, and one row per year with entrants, record, titles, team points and place. team\_place is the NCAA's published place; in a year scored from the bouts, when the published standings do not list the school, team\_place is null, team\_computed\_rank is the place computed from the bouts, team\_points are computed too, and team\_reconstructed is true. team\_points, team\_place and team\_computed\_rank are null, and team\_reconstructed false, when the school has no team figure that year. Links to the program and team pages. Years the bout scoring record covers carry the school's scoring line.

| Parameter | Type | Required | Meaning |
| --- | --- | --- | --- |
| `program_id` | string | yes | A pr\_ id from find\_entity. |

Example: [`/api/v1/program_summary?program_id=pr_m6nvcppn6ysyit5w`](https://www.marchmatness.app/api/v1/program_summary?program_id=pr_m6nvcppn6ysyit5w)

### `match_lookup` · Bouts in a weight class

The bouts of one weight class in one year, each with round, winner, loser, result, score, time, seeds and match page, optionally narrowed to a round or to one wrestler. Up to 200 bouts. The evidence level of the weight's board comes with the rows.

| Parameter | Type | Required | Meaning |
| --- | --- | --- | --- |
| `year` | integer | yes | Tournament year; coverage gives the first and last year and the calendar gaps. |
| `weight` | string | yes | Weight class as the site prints it: a number such as "125" or "177", or "unlimited" (also written 450). "heavyweight" (or "hwt") means that year's heaviest class: Unlimited, 275 or 285. |
| `round` | string | no | A round, by code ("1st") or name ("Final"). |
| `wrestler_id` | string | no | Only bouts involving this wrestler. |

Example: [`/api/v1/match_lookup?year=1993&weight=158&round=Final`](https://www.marchmatness.app/api/v1/match_lookup?year=1993&weight=158&round=Final)

### `bracket_evidence` · How a bracket was checked

One weight class's bracket board and how far it is trusted: verified against the archived bracket sheet (with the sheet link), drafted from the bout record, or drafted with noted gaps (with the gap count and the notes), or no bracket drawing with the reason.

| Parameter | Type | Required | Meaning |
| --- | --- | --- | --- |
| `year` | integer | yes | Tournament year; coverage gives the first and last year and the calendar gaps. |
| `weight` | string | yes | Weight class as the site prints it: a number such as "125" or "177", or "unlimited" (also written 450). "heavyweight" (or "hwt") means that year's heaviest class: Unlimited, 275 or 285. |

Example: [`/api/v1/bracket_evidence?year=1937&weight=126`](https://www.marchmatness.app/api/v1/bracket_evidence?year=1937&weight=126)

### `corrections_for` · Corrections to a bout or a wrestler's bouts

The documented corrections applied to one bout, or to every bout of one wrestler, each with the reason and the evidence link. Give match\_id or wrestler\_id, not both.

| Parameter | Type | Required | Meaning |
| --- | --- | --- | --- |
| `match_id` | string | no | An mt\_ id from match\_lookup or wrestler\_card. |
| `wrestler_id` | string | no | A wr\_ id from find\_entity. |

Example: [`/api/v1/corrections_for?match_id=mt_4jxhloyctplgu57g`](https://www.marchmatness.app/api/v1/corrections_for?match_id=mt_4jxhloyctplgu57g)

### `scoring_leaders` · Scoring leaders

Ranked lists from the bout scoring record, as the /scoring/ pages show them. category is one of the scoring categories (takedowns-allowed and points-allowed rank fewest first). list: career (each wrestler summed over the championships wrestled in the span, the default) or tournament (each wrestler at one championship). from and to bound the span by championship year; omitted, the span is the whole scoring record (coverage's scoring section gives it), and from equal to to is one year's board. unit: totals, per\_bout or per\_7 (per 7 minutes of mat time); per\_qualifier is a team unit (scoring\_teams). Rates list wrestlers with three bouts per championship wrestled, and the note says how many are left out. Ties share a rank, and a tie at the cut is kept whole up to twice limit (at least limit + 10 rows). A year outside the scoring record is refused (404), and from after to (400). Every record carries the wrestler's public id, the program or programs, the value as a number and as printed, and the wrestler's page.

| Parameter | Type | Required | Meaning |
| --- | --- | --- | --- |
| `category` | takedowns \| takedowns-allowed \| escapes \| reversals \| near-fall \| stalling-drawn \| riding-time \| points \| points-allowed | yes | The scoring category to rank. |
| `list` | career \| tournament | no | career (the default) sums each wrestler over the span; tournament lists each wrestler at one championship. |
| `from` | integer | no | A championship year; coverage's scoring section gives the scoring record's first and last year. |
| `to` | integer | no | A championship year; coverage's scoring section gives the scoring record's first and last year. |
| `unit` | totals \| per\_bout \| per\_7 | no | totals (the default), per\_bout or per\_7 (per 7 minutes of mat time). |
| `limit` | integer ≥ 1, ≤ 50 | no | Rows to return, 1 to 50 (default 10). |

Example: [`/api/v1/scoring_leaders?category=takedowns&limit=10`](https://www.marchmatness.app/api/v1/scoring_leaders?category=takedowns&limit=10)

### `scoring_teams` · Team scoring comparison

How schools compared on the bout scoring record, one championship or a span, as /scoring/\<year\>/teams/ and /scoring/all/teams/ show it: each program's qualifiers, bouts, mat time and the seven scoring pairs (for and against), in one unit: totals, per\_qualifier, per\_bout or per\_7. Ordered as the page orders them: by points scored in the chosen unit, most first, ties in the Totals order. from and to as in scoring\_leaders. Up to limit programs (default 25); total gives the full count.

| Parameter | Type | Required | Meaning |
| --- | --- | --- | --- |
| `from` | integer | no | A championship year; coverage's scoring section gives the scoring record's first and last year. |
| `to` | integer | no | A championship year; coverage's scoring section gives the scoring record's first and last year. |
| `unit` | totals \| per\_qualifier \| per\_bout \| per\_7 | no | totals (the default), per\_qualifier (per program qualifier), per\_bout or per\_7 (per 7 minutes of mat time). |
| `limit` | integer ≥ 1, ≤ 100 | no | Programs to return, 1 to 100 (default 25). |

Example: [`/api/v1/scoring_teams?from=2026&to=2026`](https://www.marchmatness.app/api/v1/scoring_teams?from=2026&to=2026)

### `bout_sheet` · A bout's scoring sheet

One bout's scoring sheet from the bout scoring record, as its match page shows it: the box score by period, the counts for each side, every scored action with its clock and the running score, the riding-time readings, the status line naming the source bout and whether its score agrees with the record, and a banner when the sheet needs review. One match\_id per call. A bout the scoring record does not hold returns no records and a note.

| Parameter | Type | Required | Meaning |
| --- | --- | --- | --- |
| `match_id` | string | yes | An mt\_ id from match\_lookup or wrestler\_card. |

Example: [`/api/v1/bout_sheet?match_id=mt_e5dlahlltibqhibe`](https://www.marchmatness.app/api/v1/bout_sheet?match_id=mt_e5dlahlltibqhibe)

## Terms

Use of the record and this service is under the [terms of use](https://www.marchmatness.app/terms/): free for personal, fan, journalistic and educational use; commercial use, bulk copying and training on the articles need permission. Please cite March Matness and the release id shown in every response. No warranty: brackets marked drafted or with gaps are exactly that.

Server `marchmatness 1.1.1`. Data release `pub_v1_75169e972871bad371d3a666`. How the record is made: [Methods](https://www.marchmatness.app/methods/). The corrections log: [Corrections](https://www.marchmatness.app/corrections/).

---

This is the Markdown copy of https://www.marchmatness.app/api/.
Cite this page: “Query the record”, March Matness, NCAA Division I championship record, release 75169e97. https://www.marchmatness.app/api/
