{
  "version": "1.0",
  "name": "boxerbook",
  "title": "Ask your AI about any fight card, result or record",
  "description": "Boxerbook over the Model Context Protocol: professional boxing from every country for AI assistants. Upcoming cards with start times and broadcasters, results with their sources, records, forecasts beside the betting consensus, and rankings. Open to everyone, read-only, keyless.",
  "summary": "Professional boxing worldwide: schedule, results, records, rankings, forecasts.",
  "serverInfo": {
    "name": "boxerbook",
    "title": "Boxerbook: world professional boxing data",
    "version": "3156d5a6-ed87-416b-8b65-3f65fc176b03"
  },
  "endpoint": "https://mcp.boxerbook.com/mcp",
  "transport": {
    "type": "streamable-http",
    "endpoint": "https://mcp.boxerbook.com/mcp",
    "stateless": true
  },
  "authentication": {
    "required": false,
    "schemes": []
  },
  "auth": "none",
  "capabilities": {
    "tools": {},
    "resources": {},
    "prompts": {}
  },
  "instructions": "Boxerbook (https://boxerbook.com) is an open catalog of professional boxing worldwide: boxers, bouts, cards, results, world titles, publisher rankings (WBC, WBA, IBF, WBO, The Ring, TBRB) and the Boxerbook rating. Records are counted from open and official sources (commissions, sanctioning bodies, Wikidata, Wikipedia, the press); a side's record is its W-L-D going into that bout. start_utc is the start of the card in UTC (not of each bout); convert it to the user's time zone. forecast is the Boxerbook model probability that side a wins; market is the no-vig bookmaker consensus (via The Odds API); neither is betting advice. Always cite the url field of what you use (boxerbook.com pages; the data is ODbL, attribution \"Boxerbook\"). If you are unsure how a name is spelled or several boxers may share it, call search_boxers first and pick by country, division and record.\n\nTools: boxing_schedule lists upcoming cards (today, tonight, weekend, 30d) with start times, broadcasters, forecast and market consensus; boxing_results lists completed bouts of the last N days with sources (days=2 is last night and today); boxer returns a card (record, division, next fight, last result, rating) by name, slug or id; next_fight gives a boxer's next bout with start time, broadcasters and odds; bout returns one bout in full; where_to_watch gives the broadcasters of a bout or card; rankings gives the top 15 of a division (Boxerbook rating or a publisher); search_boxers finds boxers by name; search and fetch find any boxer, bout (two surnames, e.g. \"Inoue vs Nakatani\"), card or division and return its document. Resources: boxerbook://schedule/today, boxerbook://results/last-night, boxerbook://status (data freshness), boxerbook://about. Prompts: fight_night_guide, boxer_briefing, weekend_results. The server is free and read only, 300 tool calls per minute per IP; lists are capped (schedule 30 days, results 14 days, search 20).",
  "tools": [
    {
      "name": "boxing_schedule",
      "title": "Boxing schedule",
      "description": "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.",
      "inputSchema": {
        "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
          }
        }
      },
      "outputSchema": {
        "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"
                          }
                        },
                        "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"
        ]
      },
      "annotations": {
        "title": "Boxing schedule",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "boxing_results",
      "title": "Boxing results",
      "description": "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.",
      "inputSchema": {
        "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
          }
        }
      },
      "outputSchema": {
        "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"
        ]
      },
      "annotations": {
        "title": "Boxing results",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "boxer",
      "title": "Boxer card",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "a boxer's name, slug (giorgio-visioli) or Boxerbook id",
            "minLength": 1,
            "maxLength": 80
          }
        },
        "required": [
          "query"
        ]
      },
      "outputSchema": {
        "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
            ]
          },
          "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"
        ]
      },
      "annotations": {
        "title": "Boxer card",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "next_fight",
      "title": "Next fight of a boxer",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "a boxer's name, slug (giorgio-visioli) or Boxerbook id",
            "minLength": 1,
            "maxLength": 80
          }
        },
        "required": [
          "query"
        ]
      },
      "outputSchema": {
        "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"
                      }
                    },
                    "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"
        ]
      },
      "annotations": {
        "title": "Next fight of a boxer",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "bout",
      "title": "Bout",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "id": {
            "type": "integer",
            "minimum": 1,
            "description": "Boxerbook bout id (from a schedule, results, search or a /bouts/<id> url)"
          }
        },
        "required": [
          "id"
        ]
      },
      "outputSchema": {
        "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"
              ]
            }
          },
          "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"
              }
            },
            "required": [
              "favourite",
              "p_a",
              "books",
              "snapshot_at",
              "via"
            ]
          },
          "signals": {
            "type": "object",
            "description": "model signals of the latest forecast"
          },
          "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",
          "url",
          "attribution",
          "as_of"
        ]
      },
      "annotations": {
        "title": "Bout",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "where_to_watch",
      "title": "Where to watch",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "bout_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Boxerbook bout id"
          },
          "event_id": {
            "type": "integer",
            "minimum": 1,
            "description": "Boxerbook event (card) id"
          }
        }
      },
      "outputSchema": {
        "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"
        ]
      },
      "annotations": {
        "title": "Where to watch",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "rankings",
      "title": "Division rankings",
      "description": "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.",
      "inputSchema": {
        "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"
        ]
      },
      "outputSchema": {
        "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"
        ]
      },
      "annotations": {
        "title": "Division rankings",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "search_boxers",
      "title": "Search boxers",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "q": {
            "type": "string",
            "description": "a name or part of it",
            "minLength": 2,
            "maxLength": 80
          }
        },
        "required": [
          "q"
        ]
      },
      "outputSchema": {
        "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"
        ]
      },
      "annotations": {
        "title": "Search boxers",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "search",
      "title": "Search Boxerbook",
      "description": "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.",
      "inputSchema": {
        "type": "object",
        "properties": {
          "query": {
            "type": "string",
            "description": "what to look for: a boxer, two boxers, a division",
            "minLength": 1,
            "maxLength": 200
          }
        },
        "required": [
          "query"
        ]
      },
      "outputSchema": {
        "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"
        ]
      },
      "annotations": {
        "title": "Search Boxerbook",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    },
    {
      "name": "fetch",
      "title": "Fetch a Boxerbook document",
      "description": "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.",
      "inputSchema": {
        "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"
        ]
      },
      "outputSchema": {
        "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"
        ]
      },
      "annotations": {
        "title": "Fetch a Boxerbook document",
        "readOnlyHint": true,
        "destructiveHint": false,
        "idempotentHint": true,
        "openWorldHint": false
      }
    }
  ],
  "resources": [
    {
      "uri": "boxerbook://schedule/today",
      "name": "schedule-today",
      "title": "Boxing schedule today",
      "description": "Today's cards (and last night's still running) with start times in UTC, broadcasters, forecast and market consensus: the boxing_schedule answer for when=today.",
      "mimeType": "application/json"
    },
    {
      "uri": "boxerbook://results/last-night",
      "name": "results-last-night",
      "title": "Boxing results of last night",
      "description": "Completed bouts of last night and today with sources: the boxing_results answer for days=2.",
      "mimeType": "application/json"
    },
    {
      "uri": "boxerbook://status",
      "name": "status",
      "title": "Boxerbook data status",
      "description": "Data freshness: last rating run, number of bouts and boxers, version.",
      "mimeType": "application/json"
    },
    {
      "uri": "boxerbook://about",
      "name": "about",
      "title": "About the Boxerbook data",
      "description": "What the database covers, where the records come from, and which tool answers which question.",
      "mimeType": "text/markdown"
    }
  ],
  "resourceTemplates": [],
  "prompts": [
    {
      "name": "fight_night_guide",
      "title": "Fight night guide",
      "description": "What boxing is on today (or on a date), where to watch it and at what time.",
      "arguments": [
        {
          "name": "date",
          "description": "a date (YYYY-MM-DD) or words like \"tonight\", \"Saturday\"; default tonight",
          "required": false
        },
        {
          "name": "country",
          "description": "two-letter country of the cards, e.g. GB, US (optional)",
          "required": false
        }
      ]
    },
    {
      "name": "boxer_briefing",
      "title": "Boxer briefing",
      "description": "A boxer's card, last bouts, next fight, rating and forecast.",
      "arguments": [
        {
          "name": "name",
          "description": "the boxer's name",
          "required": true
        }
      ]
    },
    {
      "name": "weekend_results",
      "title": "Weekend results",
      "description": "The results of the weekend's cards, title fights and upsets first.",
      "arguments": [
        {
          "name": "country",
          "description": "two-letter country of the cards, e.g. GB, US (optional)",
          "required": false
        }
      ]
    }
  ],
  "documentationUrl": "https://mcp.boxerbook.com/",
  "websiteUrl": "https://boxerbook.com",
  "provider": {
    "name": "Boxerbook",
    "url": "https://boxerbook.com/",
    "contact": "info@boxerbook.com"
  },
  "registry": {
    "name": "com.boxerbook/boxing",
    "url": "https://registry.modelcontextprotocol.io/v0.1/servers?search=com.boxerbook/boxing"
  },
  "license": "ODbL-1.0 (data)",
  "termsOfService": "https://boxerbook.com/terms",
  "privacyPolicy": "https://boxerbook.com/terms"
}