what shipped
Changelog.
Curated updates across the MCP server, REST API, and marketing site. One entry per meaningful release — no internal refactors, no "fix typo" noise.
Last updated: 12 Jun 2026
12 Jun 2026
FeatureWebsite — minimum-complete polish
- Live counts strip on the landing showing real fixtures / teams / players in the API, plus a last-ingest timestamp.
- Legal pages (/terms + /privacy) — plain-English, route-grouped, no boilerplate.
- Global footer with three columns (Product · Resources · Legal) and a /contact surface.
- Custom OpenGraph images for /, /docs, /signup so shared links look intentional on Slack and Twitter.
- robots.txt + sitemap.xml shipped for crawler discovery.
12 Jun 2026
FeatureServer hardening for the World Cup window
- Per-key rate limits on MCP tool calls (60/min, 2000/hr by default) and per-IP signup + failed-login limits. Kill switch via API_RATELIMIT_ENABLED.
- Audit log table records signup, login_success, login_fail (with attempted email), api_key_created, api_key_revoked, and mcp_rate_limited.
- Per-tool latency + outcome metrics emitted as one JSON line per call — Coolify-grep-friendly, Loki/Datadog-ingestable.
- list_leagues + get_standings cached in-process (TTL 1h / 60s) — cuts DB load on viral landing traffic to one query per minute per worker.
- get_fixture caps match_events at MCP_MAX_EVENTS_PER_FIXTURE (default 120) keeping the most recent events; new truncated_events field counts what was dropped.
- destructiveHint=False added to every tool annotation so modern MCP clients auto-approve without prompting per call.
12 Jun 2026
PolishAuth-aware navigation
- The global Nav now resolves the visitor's session server-side and swaps the Sign in / Get free key CTAs for Account / Sign out when authed.
- Mobile drawer surfaces the signed-in email above the action buttons.
12 Jun 2026
FeatureConversion funnel + /docs page
- First public /docs page covering Quick start, Tools reference, Authentication, and Troubleshooting (incl. the trailing-slash 401 fix).
- Hero CTA rewired to drive directly into the signup flow with email prefill instead of the Kit.com waitlist.
- Account empty state shows a 'mint your first key' welcome card with inline client-config tabs.
- Mobile sweep across every public surface — drawer, signup, account modal, code blocks all fit 375px viewports without horizontal scroll.
11 Jun 2026
FeatureWorld Cup squads seeded
- All 48 participating teams have their pre-tournament rosters in the database — 1,258 players total, parsed from Flashscore team pages.
- get_team now returns the full season squad (roster ∪ appearances), not just players who've taken the field.
11 Jun 2026
FeatureSelf-service signup + MCP API keys
- New /signup + /login flow at openscores.ai — visitors mint their own osk_live_* API keys without contacting us.
- /account dashboard for creating, labelling, and revoking keys. Plaintext is shown exactly once, then we keep only a SHA-256 hash.
- Per-user key cap and tracking of last-used timestamps so the dashboard can show 'last seen 3 hours ago'.
6 Jun 2026
FeatureMCP HTTP transport over OAuth 2.1
- MCP server hosted at api.openscores.ai/mcp/ with Auth0-backed OAuth 2.1 Resource Server flow. Compatible with Claude.ai's custom-connector dialog and any OAuth 2.1-aware MCP client.
- Readiness probe at /health/ready confirms the database is reachable; the container healthcheck stays on /health so a DB blip doesn't restart the container.
5 Jun 2026
FeatureWorld Cup ingestion + admin panel
- Cup-tournament ingest path: the 2026 World Cup window with stage-aware mapping (group → R32 → R16 → QF → SF → final).
- Admin panel with login, ingest-run monitor (live SSE progress), and a data browser for leagues / seasons / teams / players / fixtures.
5 Jun 2026
PolishContainerized + deployed
- Project containerized for Coolify deployment with a production-ready Dockerfile + HEALTHCHECK.
- Postgres connection made Supabase-friendly: pgBouncer-aware pooling, SSL config, optional DATABASE_URL override.
5 Jun 2026
FeatureOpenScores MCP server — Phase 1
- First version of the MCP server ships with 9 read-only tools (list_leagues, list_seasons, list_fixtures, get_fixture, get_standings, search_teams, get_team, search_players, get_player) over stdio.
- Demo recipes published for match-report, squad-scout, and standings-story agent workflows.
22 May 2026
FeatureMulti-source ingest (Sofascore + Flashscore)
- Pluggable ingest sources behind the INGEST_SOURCE env switch.
- Cross-source dedup so the same team or player ingested from both Sofascore and Flashscore lands as one row with merged source_ids.
- Pagination of the Flashscore archive for full-season coverage rather than the most recent few weeks.
14 May 2026
FeatureREST API + ingest tooling
- Read-only /v1 REST API with X-API-Key authentication and the same data the MCP server exposes.
- Initial ingest pipeline writing the top-5 European leagues into Postgres on a daily cadence.
See something you want? Try it.