{"openapi":"3.1.0","info":{"title":"Five Dollar Football (BYOK) API","version":"0.1.0","description":"Five Dollar Football (BYOK) lets an AI assistant read your own Five Dollar Football data through the Five Dollar Football API with a key you supply (5DollarFootballAPI key). Read-only: 11 tools (list_fixtures, get_fixture, get_fixture_odds, get_fixture_events, get_fixture_statistics, get_standings, list_leagues, get_league_fixtures, get_team_fixtures, list_bookmakers, get_account_status). The...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-fivedollarfootball.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-fivedollarfootball/docs"},"termsOfService":"https://connectorbay.com/byok-fivedollarfootball/terms"},"servers":[{"url":"https://byok-fivedollarfootball.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-fivedollarfootball/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_fixtures":{"post":{"operationId":"list_fixtures","summary":"List football fixtures and results in a time window of up to 24 hours (default today UTC), or every live match with stat","description":"List football fixtures and results in a time window of up to 24 hours (default today UTC), or every live match with status=live. History depth depends on the plan. Use for \"Which football matches are live right now\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"status":{"anyOf":[{"enum":["all","scheduled","live","finished","unknown"],"type":"string"},{"type":"null"}],"default":"all","description":"Which matches: all, scheduled, live, finished or unknown.","title":"Status"},"league":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this league id from list_leagues.","title":"League"},"start_time":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Window start as a unix timestamp in seconds (UTC); defaults to 00:00 UTC today.","title":"Start Time"},"end_time":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Window end as a unix timestamp in seconds (UTC, exclusive); at most 24 hours after the start.","title":"End Time"},"lang":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Language for team and league names, for example 'es' or 'zh-cn' (English fallback).","title":"Lang"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (up to 100; 50 when include is used).","title":"Per Page"}},"title":"list_fixturesArguments","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_fixture":{"post":{"operationId":"get_fixture","summary":"Get one fixture with goals, half-time scores, corners, cards, round and the Bet365 opening, closing and in-play lines. U","description":"Get one fixture with goals, half-time scores, corners, cards, round and the Bet365 opening, closing and in-play lines. Use for \"Show fixture 422841891 with its score, corners and cards\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Fixture id from list_fixtures, for example 422841891.","minimum":1,"title":"Id","type":"integer"},"include":{"anyOf":[{"enum":["events","stats","events,stats"],"type":"string"},{"type":"null"}],"default":null,"description":"Extra parts to fold in: events, stats or both, comma-separated.","title":"Include"},"lang":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Language for team and league names, for example 'es' or 'zh-cn' (English fallback).","title":"Lang"}},"required":["id"],"title":"get_fixtureArguments","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_fixture_odds":{"post":{"operationId":"get_fixture_odds","summary":"Get opening, closing and in-play prices of a fixture per bookmaker and market (1X2, Asian handicap, goal, corner and car","description":"Get opening, closing and in-play prices of a fixture per bookmaker and market (1X2, Asian handicap, goal, corner and card lines, both teams to score). Bet365 is the default; other books need the Ultra plan. Use for \"What were the corner line odds for fixture 422841891\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Fixture id from list_fixtures, for example 422841891.","minimum":1,"title":"Id","type":"integer"},"market":{"anyOf":[{"enum":["1x2","asian","goalline","goalline_fixed","corner","corner_asian","cards","cards_asian","asian_half","goalline_half","corner_half","btts"],"type":"string"},{"type":"null"}],"default":null,"description":"Market: 1x2, asian, goalline, goalline_fixed, corner, corner_asian, cards, cards_asian, asian_half, goalline_half, corner_half or btts.","title":"Market"},"bookmakers":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Comma-separated bookmaker slugs from list_bookmakers (default bet365).","title":"Bookmakers"}},"required":["id"],"title":"get_fixture_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_fixture_events":{"post":{"operationId":"get_fixture_events","summary":"Get the match timeline: goals, corners, yellow and red cards, substitutions, missed penalties and period scores with min","description":"Get the match timeline: goals, corners, yellow and red cards, substitutions, missed penalties and period scores with minutes. Use for \"What happened in fixture 422841891, minute by minute\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Fixture id from list_fixtures, for example 422841891.","minimum":1,"title":"Id","type":"integer"}},"required":["id"],"title":"get_fixture_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_fixture_statistics":{"post":{"operationId":"get_fixture_statistics","summary":"Get match statistics: attacks, dangerous attacks, shots on and off target and possession, with first-half splits. Use fo","description":"Get match statistics: attacks, dangerous attacks, shots on and off target and possession, with first-half splits. Use for \"What were the shots and possession in fixture 422841891\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Fixture id from list_fixtures, for example 422841891.","minimum":1,"title":"Id","type":"integer"}},"required":["id"],"title":"get_fixture_statisticsArguments","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_standings":{"post":{"operationId":"get_standings","summary":"Get a league table for a season; type corner or card gives corner or card tables instead of points. Use for \"What is the","description":"Get a league table for a season; type corner or card gives corner or card tables instead of points. Use for \"What is the current Premier League table\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"league":{"description":"League id from list_leagues.","minimum":1,"title":"League","type":"integer"},"season":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Season as listed for the league, for example '26/27' or '2026' (default current).","title":"Season"},"type":{"anyOf":[{"enum":["total","corner","card"],"type":"string"},{"type":"null"}],"default":"total","description":"Table type: total (points), corner or card.","title":"Type"},"lang":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Language for team and league names, for example 'es' or 'zh-cn' (English fallback).","title":"Lang"}},"required":["league"],"title":"get_standingsArguments","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_leagues":{"post":{"operationId":"list_leagues","summary":"List football competitions with country, popularity, standings availability and latest fixture time; filter by country, ","description":"List football competitions with country, popularity, standings availability and latest fixture time; filter by country, name or recent activity. Use for \"Which leagues exist in England\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"country":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Country code such as 'GB-ENG' or 'DE', or a region such as EUROPE.","title":"Country"},"search":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Text to match in the league name.","title":"Search"},"popular":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True for popular leagues only.","title":"Popular"},"active_since":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Unix timestamp in seconds; only leagues with a fixture at or after it.","title":"Active Since"},"include":{"anyOf":[{"const":"seasons","type":"string"},{"type":"null"}],"default":null,"description":"Use 'seasons' to add each league's seasons.","title":"Include"},"lang":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Language for team and league names, for example 'es' or 'zh-cn' (English fallback).","title":"Lang"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (up to 100; 50 when include is used).","title":"Per Page"}},"title":"list_leaguesArguments","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_league_fixtures":{"post":{"operationId":"get_league_fixtures","summary":"List one league's fixtures and results newest first, for a season or a time window (no 24 hour cap); history depth depen","description":"List one league's fixtures and results newest first, for a season or a time window (no 24 hour cap); history depth depends on the plan. Use for \"Show the latest Premier League results\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"League id from list_leagues.","minimum":1,"title":"Id","type":"integer"},"season":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Season as listed for the league, for example '26/27'.","title":"Season"},"status":{"anyOf":[{"enum":["all","scheduled","live","finished","unknown"],"type":"string"},{"type":"null"}],"default":"all","description":"all, scheduled, live, finished or unknown.","title":"Status"},"start_time":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Window start (unix seconds, UTC).","title":"Start Time"},"end_time":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Window end (unix seconds, UTC, exclusive).","title":"End Time"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"desc (newest first) or asc.","title":"Order"},"lang":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Language for team and league names, for example 'es' or 'zh-cn' (English fallback).","title":"Lang"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (up to 100; 50 when include is used).","title":"Per Page"}},"required":["id"],"title":"get_league_fixturesArguments","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_team_fixtures":{"post":{"operationId":"get_team_fixtures","summary":"List one team's fixtures and results, newest first. Use for \"Show the recent matches of team 3815543475\".","description":"List one team's fixtures and results, newest first. Use for \"Show the recent matches of team 3815543475\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Team id from a fixture or standings answer.","minimum":1,"title":"Id","type":"integer"},"status":{"anyOf":[{"enum":["all","scheduled","live","finished","unknown"],"type":"string"},{"type":"null"}],"default":"all","description":"all, scheduled, live, finished or unknown.","title":"Status"},"start_time":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Window start (unix seconds, UTC).","title":"Start Time"},"end_time":{"anyOf":[{"minimum":0,"type":"integer"},{"type":"null"}],"default":null,"description":"Window end (unix seconds, UTC, exclusive).","title":"End Time"},"order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":"desc","description":"desc (newest first) or asc.","title":"Order"},"lang":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Language for team and league names, for example 'es' or 'zh-cn' (English fallback).","title":"Lang"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"per_page":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":25,"description":"Results per page (up to 100; 50 when include is used).","title":"Per Page"}},"required":["id"],"title":"get_team_fixturesArguments","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_bookmakers":{"post":{"operationId":"list_bookmakers","summary":"List the bookmaker slugs accepted by the odds tools (Bet365 on every plan, others on Ultra). Use for \"Which bookmakers c","description":"List the bookmaker slugs accepted by the odds tools (Bet365 on every plan, others on Ultra). Use for \"Which bookmakers can I ask for odds\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_bookmakersArguments","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_account_status":{"post":{"operationId":"get_account_status","summary":"Show the key's plan, rate limit and today's request usage. Use for \"Which plan is my 5DollarFootballAPI key on and how m","description":"Show the key's plan, rate limit and today's request usage. Use for \"Which plan is my 5DollarFootballAPI key on and how much have I used today\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"get_account_statusArguments","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}}}}