{"openapi":"3.1.0","info":{"title":"The Rundown (BYOK) API","version":"0.1.0","description":"The Rundown (BYOK) lets an AI assistant read your own The Rundown data through the The Rundown API with a key you supply (TheRundown API key). Read-only: 12 tools (list_sports, list_events, get_event_odds, get_best_line, get_opening_lines, get_closing_lines, list_event_markets, get_market_price_history, get_event_play_by_play, list_teams, list_futures, list_sportsbooks). The BYOK key travels with...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-therundown.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-therundown/docs"},"termsOfService":"https://connectorbay.com/byok-therundown/terms"},"servers":[{"url":"https://byok-therundown.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-therundown/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/list_sports":{"post":{"operationId":"list_sports","summary":"List the sports and leagues covered with their ids (needed by the other tools). Does not use quota. Use for \"Which sport","description":"List the sports and leagues covered with their ids (needed by the other tools). Does not use quota. Use for \"Which sports does TheRundown cover and what are their ids\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_sportsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_events":{"post":{"operationId":"list_events","summary":"List events (games) of one sport on one date with status, scores, teams and schedule details, without prices. Each retur","description":"List events (games) of one sport on one date with status, scores, teams and schedule details, without prices. Each returned event costs 2 data points of the daily quota. Use for \"Which MLB games are on 2026-10-16 and what are the scores\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sport_id":{"description":"Sport id from list_sports, for example 3 for MLB or 2 for NFL.","maximum":1000,"minimum":1,"title":"Sport Id","type":"integer"},"date":{"description":"Date as YYYY-MM-DD (UTC).","maxLength":200,"title":"Date","type":"string"},"affiliate_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":"0","description":"Sportsbook ids; keep 0 to leave odds out and pay only for events and scores.","title":"Affiliate Ids"},"event_status":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated status filter, for example 'STATUS_FINAL'.","title":"Event Status"},"hide_no_markets":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to hide events without any markets.","title":"Hide No Markets"},"offset":{"anyOf":[{"maximum":840,"minimum":-840,"type":"integer"},{"type":"null"}],"default":0,"description":"Time zone offset in minutes used to cut the day.","title":"Offset"}},"required":["sport_id","date"],"title":"list_eventsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_event_odds":{"post":{"operationId":"get_event_odds","summary":"Get one event with current open prices per sportsbook and market (moneyline, spread, total by default). Costs data point","description":"Get one event with current open prices per sportsbook and market (moneyline, spread, total by default). Costs data points per returned price. Use for \"What are the moneyline odds for event 6a8c1f2e4b7d\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"event_id":{"description":"Event id from list_events, for example 'abc123' (a string id).","maxLength":200,"title":"Event Id","type":"string"},"market_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated market ids from list_event_markets (default 1,2,3 is moneyline, spread and total).","title":"Market Ids"},"affiliate_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated sportsbook ids from list_sportsbooks (for example '19,23'); leave out for the default books.","title":"Affiliate Ids"},"main_line":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to return only each book's main line, which keeps the answer and the data-point cost small.","title":"Main Line"},"hide_closed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to leave out closed prices.","title":"Hide Closed"},"participant_type":{"anyOf":[{"enum":["TYPE_TEAM","TYPE_PLAYER","TYPE_RESULT"],"type":"string"},{"type":"null"}],"default":null,"description":"Participant kind to return.","title":"Participant Type"}},"required":["event_id"],"title":"get_event_oddsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_best_line":{"post":{"operationId":"get_best_line","summary":"Get the best moneyline, spread and total across sportsbooks for one event, with the book offering each. Use for \"Which s","description":"Get the best moneyline, spread and total across sportsbooks for one event, with the book offering each. Use for \"Which sportsbook has the best price on event 6a8c1f2e4b7d\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"event_id":{"description":"Event id from list_events, for example 'abc123' (a string id).","maxLength":200,"title":"Event Id","type":"string"},"period":{"anyOf":[{"enum":["period_full_game","period_first_half","period_second_half","period_first_period","period_second_period","period_third_period","period_fourth_period"],"type":"string"},{"type":"null"}],"default":"period_full_game","description":"Game period.","title":"Period"},"affiliate_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated sportsbook ids from list_sportsbooks (for example '19,23'); leave out for the default books.","title":"Affiliate Ids"}},"required":["event_id"],"title":"get_best_lineArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_opening_lines":{"post":{"operationId":"get_opening_lines","summary":"Get the first recorded price of each line at each sportsbook for all events of a sport on a date. Use for \"What were the","description":"Get the first recorded price of each line at each sportsbook for all events of a sport on a date. Use for \"What were the opening lines for MLB games on 2026-10-16\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sport_id":{"description":"Sport id from list_sports, for example 3 for MLB or 2 for NFL.","maximum":1000,"minimum":1,"title":"Sport Id","type":"integer"},"date":{"description":"Date as YYYY-MM-DD (UTC).","maxLength":200,"title":"Date","type":"string"},"market_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated market ids from list_event_markets (default 1,2,3 is moneyline, spread and total).","title":"Market Ids"},"affiliate_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated sportsbook ids from list_sportsbooks (for example '19,23'); leave out for the default books.","title":"Affiliate Ids"},"main_line":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to return only each book's main line, which keeps the answer and the data-point cost small.","title":"Main Line"},"hide_closed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to leave out closed prices.","title":"Hide Closed"}},"required":["sport_id","date"],"title":"get_opening_linesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_closing_lines":{"post":{"operationId":"get_closing_lines","summary":"Get the last recorded price before the start of each line at each sportsbook for all events of a sport on a date. Use fo","description":"Get the last recorded price before the start of each line at each sportsbook for all events of a sport on a date. Use for \"What were the closing lines for MLB games on 2026-10-15\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sport_id":{"description":"Sport id from list_sports, for example 3 for MLB or 2 for NFL.","maximum":1000,"minimum":1,"title":"Sport Id","type":"integer"},"date":{"description":"Date as YYYY-MM-DD (UTC).","maxLength":200,"title":"Date","type":"string"},"market_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated market ids from list_event_markets (default 1,2,3 is moneyline, spread and total).","title":"Market Ids"},"affiliate_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated sportsbook ids from list_sportsbooks (for example '19,23'); leave out for the default books.","title":"Affiliate Ids"},"main_line":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to return only each book's main line, which keeps the answer and the data-point cost small.","title":"Main Line"},"hide_closed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to leave out closed prices.","title":"Hide Closed"}},"required":["sport_id","date"],"title":"get_closing_linesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_event_markets":{"post":{"operationId":"list_event_markets","summary":"List the market definitions (id, name, description, period) available for one event. Use for \"Which markets can I bet on","description":"List the market definitions (id, name, description, period) available for one event. Use for \"Which markets can I bet on for event 6a8c1f2e4b7d\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"event_id":{"description":"Event id from list_events, for example 'abc123' (a string id).","maxLength":200,"title":"Event Id","type":"string"}},"required":["event_id"],"title":"list_event_marketsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_market_price_history":{"post":{"operationId":"get_market_price_history","summary":"Get recorded price changes for an event's markets at one to three sportsbooks, within the plan's history window. Use for","description":"Get recorded price changes for an event's markets at one to three sportsbooks, within the plan's history window. Use for \"How did the price of market 1 move at DraftKings for event 6a8c1f2e4b7d\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"event_id":{"description":"Event id from list_events, for example 'abc123' (a string id).","maxLength":200,"title":"Event Id","type":"string"},"affiliate_ids":{"description":"One to three sportsbook ids, comma-separated, for example '19'.","maxLength":200,"title":"Affiliate Ids","type":"string"},"market_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated market ids to include.","title":"Market Ids"},"from_time":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only changes at or after this ISO 8601 time.","title":"From Time"},"to_time":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only changes at or before this ISO 8601 time.","title":"To Time"},"limit":{"anyOf":[{"maximum":5000,"minimum":1,"type":"integer"},{"type":"null"}],"default":200,"description":"How many changes to return (1 to 5000).","title":"Limit"},"main_line":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to return only each book's main line, which keeps the answer and the data-point cost small.","title":"Main Line"}},"required":["event_id","affiliate_ids"],"title":"get_market_price_historyArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_event_play_by_play":{"post":{"operationId":"get_event_play_by_play","summary":"Get the play-by-play timeline of a live or completed event with period, clock, description and running score, newest pag","description":"Get the play-by-play timeline of a live or completed event with period, clock, description and running score, newest page first. Use for \"Show the plays of event 6a8c1f2e4b7d\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"event_id":{"description":"Event id from list_events, for example 'abc123' (a string id).","maxLength":200,"title":"Event Id","type":"string"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many plays to return (1 to 500).","title":"Limit"},"before_sequence":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Only plays before this sequence number, for paging back.","title":"Before Sequence"}},"required":["event_id"],"title":"get_event_play_by_playArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_teams":{"post":{"operationId":"list_teams","summary":"List the teams of a sport with abbreviation, record, ranking, conference and division. Use for \"List the MLB teams and t","description":"List the teams of a sport with abbreviation, record, ranking, conference and division. Use for \"List the MLB teams and their divisions\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sport_id":{"description":"Sport id from list_sports, for example 3 for MLB or 2 for NFL.","maximum":1000,"minimum":1,"title":"Sport Id","type":"integer"}},"required":["sport_id"],"title":"list_teamsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_futures":{"post":{"operationId":"list_futures","summary":"List futures and outright competitions of a sport (for example championship winner) with their markets. Use for \"What fu","description":"List futures and outright competitions of a sport (for example championship winner) with their markets. Use for \"What futures markets exist for the NFL\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"sport_id":{"description":"Sport id from list_sports, for example 3 for MLB or 2 for NFL.","maximum":1000,"minimum":1,"title":"Sport Id","type":"integer"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":20,"description":"How many competitions to return (1 to 200).","title":"Limit"},"include_settled":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include settled competitions.","title":"Include Settled"},"affiliate_ids":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated sportsbook ids from list_sportsbooks (for example '19,23'); leave out for the default books.","title":"Affiliate Ids"}},"required":["sport_id"],"title":"list_futuresArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_sportsbooks":{"post":{"operationId":"list_sportsbooks","summary":"List the sportsbooks and exchanges (affiliates) with their ids and status. Does not use quota. Use for \"Which sportsbook","description":"List the sportsbooks and exchanges (affiliates) with their ids and status. Does not use quota. Use for \"Which sportsbooks does TheRundown carry and what are their ids\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_sportsbooksArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}