> ## Documentation Index
> Fetch the complete documentation index at: https://docs.rewind.rest/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog

> API updates and new features.

<Update label="May 15, 2026" tags={["Improvements"]}>
  ## MCP server: tool titles and output schemas

  MCP tools are now clearer to read in the client and to consume programmatically.

  * **Display titles** — every tool, resource, and prompt shows a readable name in Claude Desktop and iOS, like "Now playing" or "Recent runs", instead of a raw identifier like `get_now_playing`.
  * **Output schemas** — schema-aware clients can render labeled fields from a tool's structured response; every tool now declares an `outputSchema`.
  * **`get_on_this_day` fix** — calling [`get_on_this_day`](/reference/mcp-tools/cross-domain#get_on_this_day) with no arguments returned an error; it now defaults to today.
</Update>

<Update label="April 29, 2026" tags={["Improvements"]}>
  ## Reading domain: full Instapaper archive

  Reading endpoints now serve your full Instapaper archive instead of the live API's recent slice. Older articles are searchable and retrievable via [`get_article`](/reference/mcp-tools/reading#get_article).

  * [`GET /v1/reading/articles`](/api-reference/reading/list-articles) and [`GET /v1/reading/recent`](/api-reference/reading/recent-articles) accept `include_no_body=1` to include rows that exist but couldn't be body-extracted (paywalled sources). Default hides them.
  * Single-article responses include a `body_unavailable` flag for those placeholder rows so cards can render "read on source" instead of empty content.
</Update>

<Update label="April 27, 2026" tags={["New features"]}>
  ## Single-entity cards

  Three interactive cards for MCP Apps clients (Claude Desktop + iOS) that render alongside Claude's text answer when you ask about one specific article, artist, or athlete.

  * **Article card** — `get_article` — hero image, title, byline, read time, top highlights, link out to source.
  * **Artist card** — `get_artist_details` — portrait, bio, total plays, all-time rank, yearly sparkline, top 5 tracks, top 3 albums, and similar artists scoped to your own scrobble history.
  * **Athlete card** — `get_attended_player` — headshot, team logo, position, current-season stats, your-attended summary across every game you've seen them play, recent appearances. MLB-only for live stats; other leagues surface appearance history.

  ## Listening

  * **Per-artist top tracks** — [`GET /v1/listening/top/tracks`](/api-reference/listening/top-tracks) accepts `artist_id` or `artist_name` to scope to a single artist. Combine with `period` for "what Olivia Rodrigo songs have I been listening to lately".
  * **Extended artist detail** — [`GET /v1/listening/artists/{id}`](/api-reference/listening/artist-detail) now carries bio, last-played timestamp, all-time rank, distinct tracks/albums counts, similar artists, and a yearly sparkline.
</Update>

<Update label="April 27, 2026" tags={["New features", "Improvements"]}>
  ## Team logos and colors on attending responses

  Team metadata now ships inline on every attending endpoint that mentions a team — no follow-up call to render a logo or tint a card.

  * New `teams` reference table seeded from MLB Stats API (roster, division, home venue) and ESPN (brand colors). 30 MLB teams to start; NFL, NBA, MLS, and NCAA can be added on the same shape.
  * `event_data.home_team` and `event_data.away_team` on [`GET /v1/attending/events`](/api-reference/attending/list-attended-events) and [`GET /v1/attending/events/{id}`](/api-reference/attending/get-attended-event) now return a full team object with `logo_url`, `logo_dark_url`, `logo_light_url`, `primary_color`, `secondary_color`, `ui_tint_color`, `conference`, and `division`.
  * `primary_team` on [`GET /v1/attending/players`](/api-reference/attending/list-attended-players) and [`GET /v1/attending/players/{id}`](/api-reference/attending/get-attended-player) replaces the old `primary_team_id` field with the full team shape.
  * Per-game player appearances expose a `team` object instead of `team_id`, reflecting the in-game team — handles mid-season trades correctly without conflating with the player's current primary team.
  * Logos hot-link from `mlbstatic.com` SVG with on-light and on-dark cap variants; `<picture>` + `prefers-color-scheme` picks the right one in both Claude Desktop and iOS hosts.
</Update>

<Update label="April 25, 2026" tags={["New releases", "New features"]}>
  ## Attending domain

  New fifth domain for live events — sports games, concerts, theater. **193 events backfilled** from Google Calendar and Gmail across 2016–2026.

  * [`GET /v1/attending/events`](/api-reference/attending/list-attended-events) — list attended events with filters for category (`sports` / `music` / `arts`), `event_type`, `season`, `year`, `venue_id`, and `attended` (separates "I went" from "I bought tickets but didn't go").
  * [`GET /v1/attending/events/{id}`](/api-reference/attending/get-attended-event) — single event with venue, multiple ticket rows, and league-specific `event_data` (scores, winning pitcher, my\_team\_won).
  * [`GET /v1/attending/seasons/{league}/{season}`](/api-reference/attending/get-attended-season) — attended games in a sports season with W/L record. Counts only games you actually attended, not the team's full record.
  * [`GET /v1/attending/venues`](/api-reference/attending/list-venues) — venue catalog with city, capacity, and lat/long.
  * [`GET /v1/attending/stats`](/api-reference/attending/get-attending-stats) — counts by category, `event_type`, and year.
  * **Seven Gmail parsers** — Ticketmaster, SeatGeek, Ticket Club, AXS, StubHub, VividSeats, and Eventbrite. Universal `schema.org/EventReservation` JSON-LD parser as a fallback.
  * **Sports enrichment** via MLB Stats API (baseball) and ESPN (NFL, NBA, WNBA, MLS, NCAAF, NCAAB) attaches scores and outcomes to past games.
  * **Cross-domain link** — concert performers can carry a `lastfm_artist_id` so a single artist row drives both your scrobble history and your concert attendance.
  * Daily incremental sync at 4:00 AM Pacific. See [Attending domain](/domains/attending).
</Update>

<Update label="April 24, 2026" tags={["New releases", "New features", "Improvements"]}>
  ## MCP server

  Interactive card UIs for reading and music, plus inline clickable links across list tools.

  * **Article list UI** for `get_recent_reads` via [MCP Apps](https://blog.modelcontextprotocol.io/posts/2026-01-26-mcp-apps/) — titles, authors, domains, read time, excerpts, and thumbnails.
  * **Cover grid** for `get_top_albums` and **portrait grid** for `get_top_artists` — both click through to Apple Music (or Last.fm when no match).
  * **Inline markdown links** in `search`, `semantic_search`, `find_similar_articles`, `get_recent_reads`, `get_top_artists`, `get_top_albums`, and `get_top_tracks` — clickable in every client.
  * **Author names** render correctly when a source article's `article:author` tag is URL-shaped.
  * `get_top_artists` accepts `include_sparklines` and forwards the new per-artist play-count series.

  ## Listening

  * **Sparklines on top artists** — pass `include_sparklines=true` to [`GET /v1/listening/top/artists`](/api-reference/listening/top-artists) to attach a zero-filled play-count series per artist. Supported for `1month`, `3month`, `6month`, and `12month`. See [Listening domain](/domains/listening#sparklines).
  * Album and artist artwork now resolves for ampersand-named artists like Matt & Kim, Simon & Garfunkel, and Hall & Oates.
  * Listening image placeholders auto-expire after 7 days, matching reading-domain behavior.

  ## Search

  * [`GET /v1/search`](/api-reference/search/cross-domain-search) results now include `image` URLs and thumbhashes for listening, watching, collecting, and reading hits. The field was previously always null in keyword mode.

  ## API discovery

  The OpenAPI 3.1 spec is reachable without auth at `https://api.rewind.rest/openapi.json` (redirects to the canonical `/v1/openapi.json`). Use it to generate clients, drive agent tools, or import into Postman or Insomnia.

  ## Reading

  * Reading articles now have thumbnails for most paywalled sources (NYT, Reuters, WSJ) via multi-tier OG extraction.
  * `description` now falls back to `og_description` when the editorial field is null.
  * `POST /v1/admin/reenrich-reading` gains a `mode` param: `failed` (default) or `missing-images`.
  * Reading image placeholders auto-expire after 7 days (previously permanent).
</Update>

<Update label="April 23, 2026" tags={["New releases", "Improvements"]}>
  ## MCP server

  * **Interactive poster grid** for `get_recent_watches` via [MCP Apps](https://blog.modelcontextprotocol.io/posts/2026-01-26-mcp-apps/) — renders inline in Claude Desktop, Claude web, VS Code GitHub Copilot, and Goose.
  * **Semantic and hybrid search** for reading via new `semantic_search` and `find_similar_articles` tools; `search` gains a `mode` param (`keyword` | `semantic` | `hybrid`).
  * **Full article text** via new `get_article(id)` tool — returns the Instapaper body, including paywalled NYT / WSJ / Atlantic.
  * **Instapaper deep-links** on every reading article: `instapaper_url` (paywall-free web archive) and `instapaper_app_url` (iOS app).
  * New prompts: `letterboxd-review-draft`, `training-report`, `film-diet`, and `find-article`.

  ## API

  * `GET /v1/search?mode=keyword|semantic|hybrid` — three ranking modes; semantic/hybrid are reading-only.
  * `GET /v1/reading/articles/{id}` — gains `content`, `instapaper_url`, `instapaper_app_url`.
  * `GET /v1/reading/articles/{id}/related?limit=5` — related articles via semantic similarity.
  * `GET /v1/reading/highlights/{id}` — highlight detail with parent-article context.
  * All `/recent` endpoints: `limit` cap raised from 20 to 50, new `page` param for offset pagination.
</Update>

<Update label="April 3, 2026" tags={["New releases"]}>
  ## MCP server

  New [MCP server](/mcp/overview) for connecting AI assistants to your Rewind data. Published as [`rewind-mcp-server`](https://www.npmjs.com/package/rewind-mcp-server) on npm.

  * 30 tools across all five domains: listening, running, watching, collecting, reading.
  * Cross-domain search, unified feed, and on-this-day.
  * Built-in prompt templates for weekly summaries, year-in-review, and period comparisons.
  * Works with Claude Desktop, Claude Code, Claude iOS/web, and any MCP-compatible client.
  * Local mode via `npx` or remote mode via `mcp.rewind.rest`.
</Update>

<Update label="March 31, 2026" tags={["Improvements"]}>
  ## Reading domain: delta sync

  Instapaper sync now transfers only new or changed bookmarks and highlights each cycle, and deletions from Instapaper propagate through. `/health/sync` now includes the Reading domain.
</Update>

<Update label="March 22, 2026" tags={["New features"]}>
  ## Reading domain

  New Reading domain powered by Instapaper. Track articles, reading progress, and highlights.

  * `GET /reading/articles` — browse and filter articles by status, domain, or tag.
  * `GET /reading/currently-reading` — articles in progress.
  * `GET /reading/highlights` — highlighted passages across all articles.
  * `GET /reading/highlights/random` — random highlight for a daily quote.
  * `GET /reading/stats` — reading statistics and streaks.
  * `GET /reading/year/{year}` — year in review.

  Articles include metadata extracted from OG tags: author, site name, word count, estimated read time, and thumbnail images.
</Update>

<Update label="March 18, 2026" tags={["New releases"]}>
  ## Public API documentation

  Launched interactive API documentation at [docs.rewind.rest](https://docs.rewind.rest) powered by Mintlify. Includes getting started guides, domain overviews, and a full API reference with response examples and an interactive playground.
</Update>

<Update label="March 16, 2026" tags={["New features"]}>
  ## Apple Music enrichment

  Listening endpoints now include `apple_music_url` and `preview_url` fields on tracks, artists, and albums. Links go directly to the matching item on Apple Music. Preview URLs point to 30-second audio clips when available.
</Update>

<Update label="March 14, 2026" tags={["New features"]}>
  ## Watching: reviews, ratings, and last watched

  * Movies endpoint now includes `last_watched_at` for sorting by when you last watched.
  * Reviews and ratings from Letterboxd are now exposed via `review`, `review_url`, and `user_rating` fields on watch history entries.
</Update>

<Update label="March 13, 2026" tags={["New features", "Improvements"]}>
  ## Genres, on-this-day, and date filtering

  * New `GET /listening/genres` endpoint with genre breakdown over time.
  * Artists now tagged with genres from Last.fm (`genre` field on artist responses).
  * New `GET /feed/on-this-day` endpoint for what happened on this date in previous years.
  * Artist and album detail endpoints now include `first_scrobbled_at`.
  * All recent, stats, and feed endpoints now accept `date`, `from`, and `to` query parameters.
  * Album and artist artwork falls back to Deezer when Apple Music and iTunes don't have a match.
</Update>

<Update label="March 11, 2026" tags={["New features"]}>
  ## Trakt physical media collection

  New physical media endpoints in the Collecting domain. Track your Blu-ray, DVD, and 4K UHD collection synced from Trakt, with cross-referencing against your Plex watch history.

  * `GET /collecting/media` — list physical media collection.
  * `GET /collecting/media/:id` — media item detail.
  * `GET /collecting/media/stats` — collection statistics by format.
  * `GET /collecting/media/cross-reference` — owned vs. watched comparison.
</Update>

<Update label="March 10, 2026" tags={["New releases"]}>
  ## Cross-domain features

  New endpoints that work across all data domains:

  * `GET /feed` — unified activity feed with cursor-based pagination.
  * `GET /feed/domain/:domain` — filter feed to a single domain.
  * `GET /search` — full-text search across listening, running, watching, and collecting.
  * `GET /health` — API health check.
  * `GET /health/sync` — sync status for all domains.
</Update>
