Boxerbook
World professional boxing: schedule, results, boxer cards, rankings, forecasts. Free, no key.
Should I use this
Quality & Safety
Findings (1)
- LOWin fetch
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"boxing": {
"url": "https://mcp.boxerbook.com/mcp"
}
}
}Remote endpoints
https://mcp.boxerbook.com/mcpstreamable-httpWhat it can do
Tool inventory
Tools (10)
🟢boxing_schedule(when, country, division)
Upcoming professional boxing cards worldwide, grouped by card: date, start_utc (card start in UTC), venue, promoter, broadcasters, and each bout with both records going in, division, scheduled rounds, title, Boxerbook forecast and market consensus when known. Use this for "who is fighting tonight / this weekend", "what boxing is on". when=today also keeps last night's cards that started under 6 hours ago. Cite the url of each card or bout.
Input Schema
{
"type": "object",
"properties": {
"when": {
"type": "string",
"enum": [
"today",
"tonight",
"weekend",
"30d"
],
"default": "today",
"description": "today (and cards still running from last night), tonight, weekend (Fri-Sun) or 30d"
},
"country": {
"type": "string",
"description": "ISO 3166-1 alpha-2 country of the bout, e.g. GB, US, MX",
"pattern": "^[A-Za-z]{2}$"
},
"division": {
"type": "string",
"description": "division code (hea, wel, w_fea) or name (heavyweight, women's featherweight)",
"minLength": 1,
"maxLength": 40
}
}
}Output Schema
{
"type": "object",
"properties": {
"when": {
"enum": [
"today",
"tonight",
"weekend",
"30d"
]
},
"from": {
"type": "string"
},
"to": {
"type": "string"
},
"country": {
"type": [
"string",
"null"
]
},
"division": {
"type": [
"string",
"null"
]
},
"truncated": {
"type": "boolean",
"description": "true when the 400-bout cap of the underlying list may have dropped bouts of this window (narrow it with country or division)"
},
"events": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": [
"integer",
"null"
]
},
"date": {
"type": "string"
},
"start_utc": {
"type": "string"
},
"venue": {
"type": [
"string",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"country": {
"type": [
"string",
"null"
]
},
"promoter": {
"type": [
"string",
"null"
]
},
"broadcasts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"platform": {
"type": "string"
},
"region": {
"type": [
"string",
"null"
]
},
"url": {
"type": [
"string",
"null"
]
}
},
"required": [
"platform"
]
}
},
"url": {
"type": "string"
},
"bouts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"date": {
"type": "string"
},
"start_utc": {
"type": "string",
"description": "ISO UTC start of the card, when known"
},
"status": {
"type": "string"
},
"a": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"record": {
"type": [
"string",
"null"
],
"description": "W-L-D going into the bout"
}
},
"required": [
"name",
"record"
]
},
"b": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"record": {
"type": [
"string",
"null"
],
"description": "W-L-D going into the bout"
}
},
"required": [
"name",
"record"
]
},
"division": {
"type": [
"string",
"null"
]
},
"scheduled_rounds": {
"type": [
"integer",
"null"
]
},
"title_text": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string"
},
"forecast": {
"type": "object",
"properties": {
"p_a": {
"type": "number",
"description": "Boxerbook model probability that side a wins"
},
"as_of": {
"type": "string"
},
"run_id": {
"type": [
"integer",
"null"
]
}
},
"required": [
"p_a",
"as_of"
]
},
"market": {
"type": "object",
"properties": {
"favourite": {
"enum": [
"a",
"b"
]
},
"p_a": {
"type": "number",
"description": "no-vig consensus probability of side a"
},
"books": {
"type": "integer"
},
"snapshot_at": {
"type": "string"
},
"via": {
"const": "The Odds API consensus"
},
"opening": {
"type": "object",
"properties": {
"p_a": {
"type": "number"
},
"snapshot_at": {
"type": "string"
}
},
"required": [
"p_a",
"snapshot_at"
],
"description": "the opening line (first live snapshot); /v1/bouts/{id} only"
}
},
"required": [
"favourite",
"p_a",
"books",
"snapshot_at",
"via"
]
}
},
"required": [
"id",
"date",
"a",
"b",
"url"
]
}
}
},
"required": [
"date",
"bouts",
"broadcasts"
]
}
},
"url": {
"type": "string"
},
"attribution": {
"type": "object",
"properties": {
"source": {
"const": "Boxerbook"
},
"license": {
"const": "ODbL"
},
"url": {
"type": "string"
}
},
"required": [
"source",
"license",
"url"
]
},
"as_of": {
"type": "string"
},
"partial": {
"type": "boolean",
"description": "true when part of the data could not be read this time; retry in a minute for the full answer"
}
},
"required": [
"events",
"attribution",
"as_of"
]
}🟢boxing_results(days, country, division)
Completed professional bouts of the last N days (N calendar days ending today: 1 = today, 2 = last night and today, up to 14), newest first: winner, method, round, time, both records going in and the sources of each result. Use this for "who won last night", "results this weekend". Cite the url of each bout.
Input Schema
{
"type": "object",
"properties": {
"days": {
"type": "integer",
"minimum": 1,
"maximum": 14,
"default": 2,
"description": "number of days ending today (default 2: last night and today)"
},
"country": {
"type": "string",
"description": "ISO 3166-1 alpha-2 country of the bout, e.g. GB, US, MX",
"pattern": "^[A-Za-z]{2}$"
},
"division": {
"type": "string",
"description": "division code (hea, wel, w_fea) or name (heavyweight, women's featherweight)",
"minLength": 1,
"maxLength": 40
}
}
}Output Schema
{
"type": "object",
"properties": {
"days": {
"type": "integer"
},
"from": {
"type": "string"
},
"to": {
"type": "string"
},
"country": {
"type": [
"string",
"null"
]
},
"division": {
"type": [
"string",
"null"
]
},
"truncated": {
"type": "boolean",
"description": "true when the 400-bout cap of the underlying list may have dropped bouts of this window (narrow it with days, country or division)"
},
"bouts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"date": {
"type": "string"
},
"a": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"record": {
"type": [
"string",
"null"
],
"description": "W-L-D going into the bout"
}
},
"required": [
"name",
"record"
]
},
"b": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"record": {
"type": [
"string",
"null"
],
"description": "W-L-D going into the bout"
}
},
"required": [
"name",
"record"
]
},
"winner": {
"enum": [
"a",
"b",
"draw",
"nc"
]
},
"method": {
"type": [
"string",
"null"
]
},
"round": {
"type": [
"integer",
"null"
]
},
"time": {
"type": [
"string",
"null"
]
},
"confirmation": {
"type": [
"string",
"null"
]
},
"division": {
"type": [
"string",
"null"
]
},
"title_text": {
"type": [
"string",
"null"
]
},
"event_id": {
"type": [
"integer",
"null"
]
},
"url": {
"type": "string"
},
"sources": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"url": {
"type": [
"string",
"null"
]
}
},
"required": [
"name"
]
}
}
},
"required": [
"id",
"date",
"a",
"b",
"winner",
"sources"
]
}
},
"url": {
"type": "string"
},
"attribution": {
"type": "object",
"properties": {
"source": {
"const": "Boxerbook"
},
"license": {
"const": "ODbL"
},
"url": {
"type": "string"
}
},
"required": [
"source",
"license",
"url"
]
},
"as_of": {
"type": "string"
},
"partial": {
"type": "boolean",
"description": "true when part of the data could not be read this time; retry in a minute for the full answer"
}
},
"required": [
"bouts",
"attribution",
"as_of"
]
}🟢boxer(query)
One boxer's card by name, slug or Boxerbook id: country, division, record (W-L-D, KOs), stance, height, reach, birth date, nickname, next fight, last result, Boxerbook rating and, when known, the record as betting favourite and underdog. A name goes through the site search and returns the best match (other_matches lists the next ones: check them when the name is common). Cite the url.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "a boxer's name, slug (giorgio-visioli) or Boxerbook id",
"minLength": 1,
"maxLength": 80
}
},
"required": [
"query"
]
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"country": {
"type": [
"string",
"null"
]
},
"sex": {
"type": [
"string",
"null"
]
},
"division": {
"type": [
"string",
"null"
]
},
"record": {
"oneOf": [
{
"type": "object",
"properties": {
"w": {
"type": "integer"
},
"l": {
"type": "integer"
},
"d": {
"type": "integer"
},
"ko": {
"type": [
"integer",
"null"
]
}
},
"required": [
"w",
"l",
"d"
]
},
{
"type": "null"
}
]
},
"record_source": {
"enum": [
"bouts",
"wikidata",
null
]
},
"bouts_without_result": {
"type": [
"integer",
"null"
],
"description": "completed bouts whose result is not known yet (record_source bouts only); record is null when no result is known at all"
},
"stance": {
"type": [
"string",
"null"
]
},
"height_cm": {
"type": [
"number",
"null"
]
},
"reach_cm": {
"type": [
"number",
"null"
]
},
"birth_date": {
"type": [
"string",
"null"
]
},
"nickname": {
"type": [
"string",
"null"
]
},
"next_fight": {
"oneOf": [
{
"type": "object",
"properties": {
"bout_id": {
"type": "integer"
},
"date": {
"type": "string"
},
"start_utc": {
"type": "string"
},
"opponent": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"name"
]
},
"url": {
"type": "string"
}
}
},
{
"type": "null"
}
]
},
"last_result": {
"oneOf": [
{
"type": "object",
"properties": {
"bout_id": {
"type": "integer"
},
"date": {
"type": "string"
},
"opponent": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"name"
]
},
"result": {
"enum": [
"W",
"L",
"D",
"NC",
null
]
},
"method": {
"type": [
"string",
"null"
]
},
"round": {
"type": [
"integer",
"null"
]
},
"url": {
"type": "string"
}
}
},
{
"type": "null"
}
]
},
"rating": {
"oneOf": [
{
"type": "object",
"properties": {
"mu": {
"type": "number"
},
"rd": {
"type": "number"
},
"division_rank": {
"type": [
"integer",
"null"
]
},
"confidence": {
"type": [
"string",
"null"
]
}
}
},
{
"type": "null"
}
]
},
"market_record": {
"type": "object",
"properties": {
"as_favourite": {
"type": "object",
"properties": {
"w": {
"type": "integer"
},
"l": {
"type": "integer"
}
}
},
"as_underdog": {
"type": "object",
"properties": {
"w": {
"type": "integer"
},
"l": {
"type": "integer"
}
}
},
"upsets_caused": {
"type": "integer"
},
"upsets_suffered": {
"type": "integer"
}
}
},
"url": {
"type": "string"
},
"attribution": {
"type": "object",
"properties": {
"source": {
"const": "Boxerbook"
},
"license": {
"const": "ODbL"
},
"url": {
"type": "string"
}
},
"required": [
"source",
"license",
"url"
]
},
"as_of": {
"type": "string"
},
"other_matches": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"country": {
"type": [
"string",
"null"
]
},
"division": {
"type": [
"string",
"null"
]
},
"record": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string"
}
},
"required": [
"id",
"slug",
"name",
"url"
]
},
"description": "other boxers matching the name"
},
"partial": {
"type": "boolean",
"description": "true when part of the data could not be read this time; retry in a minute for the full answer"
}
},
"required": [
"id",
"slug",
"name",
"record",
"url",
"attribution",
"as_of"
]
}🟢next_fight(query)
A boxer's next scheduled bout (by name, slug or id): date, start_utc (card start in UTC), opponent, venue, broadcasters, Boxerbook forecast and market consensus when known; next_fight is null when none is on record (last_result is then the latest bout). Cite the url.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "a boxer's name, slug (giorgio-visioli) or Boxerbook id",
"minLength": 1,
"maxLength": 80
}
},
"required": [
"query"
]
}Output Schema
{
"type": "object",
"properties": {
"boxer": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"name"
]
},
"next_fight": {
"oneOf": [
{
"type": "object",
"properties": {
"bout_id": {
"type": "integer"
},
"date": {
"type": "string"
},
"start_utc": {
"type": "string",
"description": "ISO UTC start of the card, when known"
},
"status": {
"type": "string"
},
"opponent": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"name"
]
},
"title_text": {
"type": [
"string",
"null"
]
},
"scheduled_rounds": {
"type": [
"integer",
"null"
]
},
"venue": {
"type": [
"string",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"country": {
"type": [
"string",
"null"
]
},
"event": {
"oneOf": [
{
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"date": {
"type": [
"string",
"null"
]
},
"venue": {
"type": [
"string",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"country": {
"type": [
"string",
"null"
]
},
"promoter": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string"
}
}
},
{
"type": "null"
}
]
},
"broadcasts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"platform": {
"type": "string"
},
"region": {
"type": [
"string",
"null"
]
},
"url": {
"type": [
"string",
"null"
]
}
},
"required": [
"platform"
]
}
},
"forecast": {
"type": "object",
"properties": {
"p_a": {
"type": "number",
"description": "Boxerbook model probability that side a wins"
},
"as_of": {
"type": "string"
},
"run_id": {
"type": [
"integer",
"null"
]
}
},
"required": [
"p_a",
"as_of"
]
},
"market": {
"type": "object",
"properties": {
"favourite": {
"enum": [
"a",
"b"
]
},
"p_a": {
"type": "number",
"description": "no-vig consensus probability of side a"
},
"books": {
"type": "integer"
},
"snapshot_at": {
"type": "string"
},
"via": {
"const": "The Odds API consensus"
},
"opening": {
"type": "object",
"properties": {
"p_a": {
"type": "number"
},
"snapshot_at": {
"type": "string"
}
},
"required": [
"p_a",
"snapshot_at"
],
"description": "the opening line (first live snapshot); /v1/bouts/{id} only"
}
},
"required": [
"favourite",
"p_a",
"books",
"snapshot_at",
"via"
]
},
"url": {
"type": "string"
}
},
"required": [
"bout_id",
"date",
"opponent",
"broadcasts",
"url"
]
},
{
"type": "null"
}
]
},
"last_result": {
"oneOf": [
{
"type": "object",
"properties": {
"bout_id": {
"type": "integer"
},
"date": {
"type": "string"
},
"opponent": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
}
},
"required": [
"name"
]
},
"result": {
"enum": [
"W",
"L",
"D",
"NC",
null
]
},
"method": {
"type": [
"string",
"null"
]
},
"round": {
"type": [
"integer",
"null"
]
},
"url": {
"type": "string"
}
}
},
{
"type": "null"
}
]
},
"url": {
"type": "string"
},
"attribution": {
"type": "object",
"properties": {
"source": {
"const": "Boxerbook"
},
"license": {
"const": "ODbL"
},
"url": {
"type": "string"
}
},
"required": [
"source",
"license",
"url"
]
},
"as_of": {
"type": "string",
"description": "ISO UTC time of this answer"
},
"partial": {
"type": "boolean",
"description": "true when part of the data could not be read this time; retry in a minute for the full answer"
}
},
"required": [
"boxer",
"next_fight",
"url",
"attribution",
"as_of"
]
}🟢bout(id)
One bout in full by Boxerbook bout id: both boxers with records going in, status, result (winner, method, round, time), start_utc, venue, card, broadcasters, sources, Boxerbook forecast with its signals and the market consensus when known. Cite the url.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer",
"minimum": 1,
"description": "Boxerbook bout id (from a schedule, results, search or a /bouts/<id>/<slug> url)"
}
},
"required": [
"id"
]
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"date": {
"type": "string"
},
"start_utc": {
"type": "string"
},
"status": {
"type": "string"
},
"confirmation": {
"type": [
"string",
"null"
]
},
"provisional": {
"type": "boolean"
},
"exhibition": {
"type": "boolean"
},
"a": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"record": {
"type": [
"string",
"null"
],
"description": "W-L-D going into the bout"
}
},
"required": [
"name",
"record"
]
},
"b": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"slug": {
"type": "string"
},
"record": {
"type": [
"string",
"null"
],
"description": "W-L-D going into the bout"
}
},
"required": [
"name",
"record"
]
},
"winner": {
"enum": [
"a",
"b",
"draw",
"nc",
null
]
},
"method": {
"type": [
"string",
"null"
]
},
"round": {
"type": [
"integer",
"null"
]
},
"time": {
"type": [
"string",
"null"
]
},
"scheduled_rounds": {
"type": [
"integer",
"null"
]
},
"title_text": {
"type": [
"string",
"null"
]
},
"venue": {
"type": [
"string",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"country": {
"type": [
"string",
"null"
]
},
"event": {
"oneOf": [
{
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"date": {
"type": [
"string",
"null"
]
},
"venue": {
"type": [
"string",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"country": {
"type": [
"string",
"null"
]
},
"promoter": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string"
}
}
},
{
"type": "null"
}
]
},
"broadcasts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"platform": {
"type": "string"
},
"region": {
"type": [
"string",
"null"
]
},
"url": {
"type": [
"string",
"null"
]
}
},
"required": [
"platform"
]
}
},
"sources": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"url": {
"type": [
"string",
"null"
]
}
},
"required": [
"name"
]
}
},
"weighin": {
"type": "object",
"properties": {
"a": {
"type": "object",
"properties": {
"weight_lb": {
"type": "number"
},
"missed": {
"type": [
"boolean",
"null"
],
"description": "true: missed weight (a press report); null: unknown"
},
"source": {
"type": "string"
}
},
"required": [
"weight_lb",
"missed",
"source"
]
},
"b": {
"type": "object",
"properties": {
"weight_lb": {
"type": "number"
},
"missed": {
"type": [
"boolean",
"null"
],
"description": "true: missed weight (a press report); null: unknown"
},
"source": {
"type": "string"
}
},
"required": [
"weight_lb",
"missed",
"source"
]
}
},
"description": "the official weigh-in, per side when known: a commission sheet before the press"
},
"forecast": {
"type": "object",
"properties": {
"p_a": {
"type": "number",
"description": "Boxerbook model probability that side a wins"
},
"as_of": {
"type": "string"
},
"run_id": {
"type": [
"integer",
"null"
]
}
},
"required": [
"p_a",
"as_of"
]
},
"market": {
"type": "object",
"properties": {
"favourite": {
"enum": [
"a",
"b"
]
},
"p_a": {
"type": "number",
"description": "no-vig consensus probability of side a"
},
"books": {
"type": "integer"
},
"snapshot_at": {
"type": "string"
},
"via": {
"const": "The Odds API consensus"
},
"opening": {
"type": "object",
"properties": {
"p_a": {
"type": "number"
},
"snapshot_at": {
"type": "string"
}
},
"required": [
"p_a",
"snapshot_at"
],
"description": "the opening line (first live snapshot); /v1/bouts/{id} only"
}
},
"required": [
"favourite",
"p_a",
"books",
"snapshot_at",
"via"
]
},
"signals": {
"type": "object",
"description": "signals of the latest forecast: a and b per side (age, age_precision, record, layoff_days, last5, ko_rate, home, travel_km, mu_delta_12m, div_shift, listed_first, short_notice_days, weight_lb, missed_weight, amateur, height_cm, reach_cm, stance, ...) and bout (title, rounds, main, division, lead_days, replaced, weigh_diff_lb)"
},
"fight_week": {
"type": "array",
"items": {
"type": "object",
"properties": {
"side": {
"enum": [
"a",
"b",
"bout"
]
},
"category": {
"enum": [
"injury",
"replacement",
"weight",
"camp",
"layoff",
"background"
]
},
"fact": {
"type": "string",
"description": "one sentence, read by a model from the video captions"
},
"quote": {
"type": "string",
"description": "the words as spoken (auto captions), 40 words at most"
},
"channel": {
"type": [
"string",
"null"
]
},
"video_url": {
"type": "string",
"description": "the YouTube video at the moment of the quote"
},
"t": {
"type": "integer",
"description": "seconds into the video"
}
},
"required": [
"side",
"category",
"fact",
"quote",
"video_url",
"t"
]
},
"description": "facts said in fight-week videos (press conference, weigh-in, face-off, open workout): only accepted ones, at most 24; no predictions or opinions"
},
"url": {
"type": "string"
},
"attribution": {
"type": "object",
"properties": {
"source": {
"const": "Boxerbook"
},
"license": {
"const": "ODbL"
},
"url": {
"type": "string"
}
},
"required": [
"source",
"license",
"url"
]
},
"as_of": {
"type": "string"
},
"partial": {
"type": "boolean",
"description": "true when part of the data could not be read this time; retry in a minute for the full answer"
}
},
"required": [
"id",
"date",
"status",
"a",
"b",
"broadcasts",
"sources",
"fight_week",
"url",
"attribution",
"as_of"
]
}🟢where_to_watch(bout_id, event_id)
The broadcasters (platform, region, link) of a bout or of a whole card, with the card start time in UTC. Give bout_id or event_id. An empty list means none is on record yet. Cite the url.
Input Schema
{
"type": "object",
"properties": {
"bout_id": {
"type": "integer",
"minimum": 1,
"description": "Boxerbook bout id"
},
"event_id": {
"type": "integer",
"minimum": 1,
"description": "Boxerbook event (card) id"
}
}
}Output Schema
{
"type": "object",
"properties": {
"kind": {
"enum": [
"bout",
"event"
]
},
"id": {
"type": "integer"
},
"title": {
"type": "string"
},
"date": {
"type": [
"string",
"null"
]
},
"start_utc": {
"type": "string",
"description": "ISO UTC start of the card, when known"
},
"status": {
"type": [
"string",
"null"
]
},
"event_id": {
"type": [
"integer",
"null"
]
},
"venue": {
"type": [
"string",
"null"
]
},
"city": {
"type": [
"string",
"null"
]
},
"country": {
"type": [
"string",
"null"
]
},
"broadcasts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"platform": {
"type": "string"
},
"region": {
"type": [
"string",
"null"
]
},
"url": {
"type": [
"string",
"null"
]
}
},
"required": [
"platform"
]
}
},
"bouts": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"id",
"title",
"url"
]
}
},
"note": {
"type": "string"
},
"url": {
"type": "string"
},
"attribution": {
"type": "object",
"properties": {
"source": {
"const": "Boxerbook"
},
"license": {
"const": "ODbL"
},
"url": {
"type": "string"
}
},
"required": [
"source",
"license",
"url"
]
},
"as_of": {
"type": "string",
"description": "ISO UTC time of this answer"
},
"partial": {
"type": "boolean",
"description": "true when part of the data could not be read this time; retry in a minute for the full answer"
}
},
"required": [
"kind",
"id",
"title",
"broadcasts",
"url",
"attribution",
"as_of"
]
}🟢rankings(division, publisher)
The top 15 of a division: the Boxerbook rating (default) or the latest list of a publisher (WBC, WBA, IBF, WBO, The Ring, TBRB), with records. Division by code (hea, wel, w_fea) or name (heavyweight, women's flyweight). Cite the url.
Input Schema
{
"type": "object",
"properties": {
"division": {
"type": "string",
"description": "division code (hea, wel, w_fea) or name (heavyweight, women's featherweight)",
"minLength": 1,
"maxLength": 40
},
"publisher": {
"type": "string",
"enum": [
"boxerbook",
"wbc",
"wba",
"ibf",
"wbo",
"ring",
"tbrb"
],
"default": "boxerbook",
"description": "boxerbook (the Boxerbook rating), wbc, wba, ibf, wbo, ring or tbrb"
}
},
"required": [
"division"
]
}Output Schema
{
"type": "object",
"properties": {
"division": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"name": {
"type": "string"
},
"sex": {
"type": [
"string",
"null"
]
},
"limit_lbs": {
"type": [
"number",
"null"
]
}
}
},
"publisher": {
"enum": [
"boxerbook",
"wbc",
"wba",
"ibf",
"wbo",
"ring",
"tbrb"
]
},
"list_date": {
"type": [
"string",
"null"
]
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"position": {
"type": "integer"
},
"id": {
"type": "integer"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"champion_flag": {
"type": "string"
},
"mu": {
"type": "number"
},
"rd": {
"type": "number"
},
"record": {
"type": "string"
}
},
"required": [
"position",
"name"
]
}
},
"url": {
"type": "string"
},
"attribution": {
"type": "object",
"properties": {
"source": {
"const": "Boxerbook"
},
"license": {
"const": "ODbL"
},
"url": {
"type": "string"
}
},
"required": [
"source",
"license",
"url"
]
},
"as_of": {
"type": "string"
},
"partial": {
"type": "boolean",
"description": "true when part of the data could not be read this time; retry in a minute for the full answer"
}
},
"required": [
"division",
"publisher",
"items",
"attribution",
"as_of"
]
}🟢search_boxers(q)
Find boxers by name (at most 20), best match first: id, slug, name, country, division, record. Use this when a name is ambiguous or its spelling unsure, then call boxer or next_fight with the id. Cite the url.
Input Schema
{
"type": "object",
"properties": {
"q": {
"type": "string",
"description": "a name or part of it",
"minLength": 2,
"maxLength": 80
}
},
"required": [
"q"
]
}Output Schema
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"slug": {
"type": "string"
},
"name": {
"type": "string"
},
"country": {
"type": [
"string",
"null"
]
},
"division": {
"type": [
"string",
"null"
]
},
"record": {
"type": [
"string",
"null"
]
},
"url": {
"type": "string"
}
},
"required": [
"id",
"slug",
"name",
"url"
]
}
},
"url": {
"type": "string"
},
"attribution": {
"type": "object",
"properties": {
"source": {
"const": "Boxerbook"
},
"license": {
"const": "ODbL"
},
"url": {
"type": "string"
}
},
"required": [
"source",
"license",
"url"
]
},
"as_of": {
"type": "string"
},
"partial": {
"type": "boolean",
"description": "true when part of the data could not be read this time; retry in a minute for the full answer"
}
},
"required": [
"results",
"attribution",
"as_of"
]
}🟢search(query)
Search the whole catalog with one query: boxers by name, bouts by two surnames ("Inoue vs Nakatani"), their cards, and divisions ("heavyweight rankings"); an id such as bout:123 is looked up directly. Each hit has an id for fetch, a title and its boxerbook.com url; ChatGPT connectors and deep research, which call nothing but search and fetch, start here. No match returns an empty list. Cite the url.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "what to look for: a boxer, two boxers, a division",
"minLength": 1,
"maxLength": 200
}
},
"required": [
"query"
]
}Output Schema
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "pass to fetch: boxer:<id>, bout:<id>, event:<id> or rankings:<DIV>"
},
"title": {
"type": "string"
},
"url": {
"type": "string"
}
},
"required": [
"id",
"title",
"url"
],
"additionalProperties": false
}
},
"url": {
"type": "string"
},
"attribution": {
"type": "object",
"properties": {
"source": {
"const": "Boxerbook"
},
"license": {
"const": "ODbL"
},
"url": {
"type": "string"
}
},
"required": [
"source",
"license",
"url"
]
},
"as_of": {
"type": "string",
"description": "ISO UTC time of this answer"
},
"partial": {
"type": "boolean",
"description": "true when part of the data could not be read this time; retry in a minute for the full answer"
}
},
"required": [
"results",
"attribution",
"as_of"
]
}🟢fetch(id)
The full document for an id returned by search: a boxer card, a bout (records, result, broadcasters, forecast, market, sources), a card with its bouts, or a division's rankings, as Markdown text with metadata. Pass the id unchanged; an unknown id returns an error. Cite the url.
Input Schema
{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "an id from search: boxer:<id>, bout:<id>, event:<id> or rankings:<DIV>",
"minLength": 3,
"maxLength": 120
}
},
"required": [
"id"
]
}Output Schema
{
"type": "object",
"properties": {
"id": {
"type": "string"
},
"title": {
"type": "string"
},
"text": {
"type": "string",
"description": "the document as Markdown"
},
"url": {
"type": "string"
},
"metadata": {
"type": "object",
"additionalProperties": {
"type": [
"string",
"number",
"boolean",
"null"
]
}
},
"attribution": {
"type": "object",
"properties": {
"source": {
"const": "Boxerbook"
},
"license": {
"const": "ODbL"
},
"url": {
"type": "string"
}
},
"required": [
"source",
"license",
"url"
]
},
"as_of": {
"type": "string",
"description": "ISO UTC time of this answer"
},
"partial": {
"type": "boolean",
"description": "true when part of the data could not be read this time; retry in a minute for the full answer"
}
},
"required": [
"id",
"title",
"text",
"url",
"metadata",
"attribution",
"as_of"
]
}Community
Evidence