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

  1. 12 Jun 2026

    Feature

    Website — 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.
  2. 12 Jun 2026

    Feature

    Server 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.
  3. 12 Jun 2026

    Polish

    Auth-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.
  4. 12 Jun 2026

    Feature

    Conversion 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.
  5. 11 Jun 2026

    Feature

    World 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.
  6. 11 Jun 2026

    Feature

    Self-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'.
  7. 6 Jun 2026

    Feature

    MCP 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.
  8. 5 Jun 2026

    Feature

    World 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.
  9. 5 Jun 2026

    Polish

    Containerized + 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.
  10. 5 Jun 2026

    Feature

    OpenScores 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.
  11. 22 May 2026

    Feature

    Multi-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.
  12. 14 May 2026

    Feature

    REST 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.