Source: https://dinakar-rewind.docs.pageloop.ai/changelog

# Changelog

#### July 25, 2026

## Query cards: detail view and integration color

Results from [`query_rewind`](/mcp/overview) render as richer cards in MCP hosts.

- **Poster-forward detail card** — a single row carrying artwork shows it large and uncropped, with the year, the watch or read date, and a 0-10 rating promoted into the header as stars.
- **Film backdrops** — select `movies.backdrop_path` and the still renders across the top of the card, dissolving into the poster's dominant color.
- **Color per integration** — a chart drawn from one service takes that service's color and names it in the card header. Results spanning several services stay neutral.
- **Source chips** — a `source` value such as `trakt` or `plex` renders as a labeled brand dot wherever it appears.

#### July 22, 2026

## Places domain

New sixth domain for check-in history from Foursquare and Swarm. Each check-in carries its venue, category, city, coordinates, and any shout.

- [`GET /v1/places/recent`](/api-reference/places/getplacesrecent) — check-ins newest first, with pagination and date filters.
- [`GET /v1/places/stats`](/api-reference/places/getplacesstats) — totals, unique venues, this-year count, and top categories, cities, and venues, each with a category icon.
- [`GET /v1/places/trends`](/api-reference/places/getplacestrends) — monthly check-in counts over time.
- See [Places domain](/domains/places).

#### July 22, 2026

## MCP server: SQL first

Claude now answers most questions by querying your data directly with SQL instead of calling one fixed tool per endpoint.

- **`get_schema`** — returns the annotated database schema: every queryable table with columns, join keys, and conventions.
- **`query_rewind`** — runs a single read-only `SELECT` against that schema, so cross-domain questions like "did I scrobble more on days I ran" work in one call.
- **Read-only by design** — writes, schema changes, multi-statement input, and any query touching secret tables are rejected server-side; the query surface is an allow-list of documented tables.
- **Rich cards stay** — `get_recent_watches`, `get_top_artists`, `get_article`, and the other visual tools still render interactive cards. See the [MCP overview](/mcp/overview).

#### July 22, 2026

## Running: every activity type, locations, and routes

The Running domain now imports every Strava activity, not just runs — rides, walks, hikes, weight training, and the rest.

- Each activity carries its `sport_type`, plus a `city` and `state` reverse-geocoded from the start coordinates.
- Activities include a route polyline for mapping.
- Filter by `city` on [`GET /v1/running/activities`](/api-reference/running/listrunningactivities), and browse the [cities endpoint](/api-reference/running/listrunningcities). See [Running domain](/domains/running).

#### July 22, 2026

## Watching: Trakt source

The Watching domain now syncs movie and TV episode watch history from Trakt alongside Plex and Letterboxd. Every watch carries a `source` (`plex`, `letterboxd`, `trakt`, or `manual`) so you can tell where it came from. See [Watching domain](/domains/watching).

#### May 15, 2026

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

#### April 29, 2026

## 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/listreadingarticles) and [`GET /v1/reading/recent`](/api-reference/reading/getreadingrecent) 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.

#### April 27, 2026

## 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/getlisteningtoptracks) 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/getlisteningartist) now carries bio, last-played timestamp, all-time rank, distinct tracks/albums counts, similar artists, and a yearly sparkline.

#### April 27, 2026

## 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/listattendedevents) and [`GET /v1/attending/events/{id}`](/api-reference/attending/getattendedevent) 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/listattendedplayers) and [`GET /v1/attending/players/{id}`](/api-reference/attending/getattendedplayer) 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.

#### April 25, 2026

## 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/listattendedevents) — 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/getattendedevent) — 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/getattendedseason) — 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/listvenues) — venue catalog with city, capacity, and lat/long.
- [`GET /v1/attending/stats`](/api-reference/attending/getattendingstats) — 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).

#### April 24, 2026

## 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/getlisteningtopartists) 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/getsearch) 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).

#### April 23, 2026

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

#### April 3, 2026

## 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`.

#### March 31, 2026

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

#### March 22, 2026

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

#### March 18, 2026

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

#### March 16, 2026

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

#### March 14, 2026

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

#### March 13, 2026

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

#### March 11, 2026

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

#### March 10, 2026

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