# Spotify Data

> Spotify play counts, monthly listeners, charts, artist stats, albums, playlists and ISRC lookup.

- name: cc.checkleaked/spotify-data
- version: 0.1.1
- connection class: R1 (autonomous)
- trust: 94/100
- quality: 91/100 (strong)
- owner: not claimed
- descriptor: https://api.protogrid.dev/v1/servers/cc.checkleaked%2Fspotify-data
- tools: https://api.protogrid.dev/v1/servers/cc.checkleaked%2Fspotify-data/tools

**An agent can connect on its own if it already holds `SPOTIFY_DATA_TOKEN`.** Remote endpoint behind a static API key or header. The registry never sees the value; the agent fills the placeholder.

## Connection (mcpServers)

```json
{
  "mcpServers": {
    "spotify-data": {
      "type": "http",
      "url": "https://spotify-proxy.checkleaked.cc/mcp",
      "headers": {
        "Authorization": "Bearer ${SPOTIFY_DATA_TOKEN}"
      }
    }
  }
}
```

Placeholders to fill: `${SPOTIFY_DATA_TOKEN}`.

## Trust

- hygiene: 95
- liveness: 99
- freshness: 100
- provenance: 85
- drivers: +repository +dns-namespace +website +reachable +uptime-98% +updated-12d-ago -unpinned-packages(1)
- Derived from observable signals (official registry feed and our own credential-free probes); no code audit performed.

## Quality 91/100 (strong)

### protocol: 75 (weight 25)

- warn `protocol.modern`: newest supported version is 2025-11-25; 2026-07-28 not supported, older versions are deprecated until 2027-07-28
- n/a `protocol.stateless`: only applies to 2026-07-28 servers
- pass `protocol.transport`: streamable HTTP
- n/a `protocol.list_ttl`: only applies to 2026-07-28 servers

### authorization: n/a (weight 15)

- n/a `auth.prm`, `auth.as_metadata`, `auth.cimd`: no remote uses OAuth
- n/a `auth.secret_in_url`: no templated URL

### tool hygiene: 100 (weight 30)

- pass `tools.descriptions`: every tool has a description
- pass `tools.description_length`: descriptions are concise
- pass `tools.schemas`: every tool has an object input schema
- pass `tools.annotations`: 13 of 13 tools declare readOnlyHint or destructiveHint
- pass `tools.directory_hints`: every tool declares readOnlyHint, destructiveHint, idempotentHint and openWorldHint
- pass `tools.token_cost`: about 2,294 tokens to load every tool
- pass `tools.api_dump`: tools are not a one-to-one API dump
- pass `tools.hidden_text`: no hidden text in tool names, descriptions, schemas or annotations

### stability: 100 (weight 15)

- pass `stability.changes`: 2 tool changes in 30 days
- pass `stability.rug_pull`: no tool changed its meaning under the same name
- pass `stability.new_links`: no tool change named a new site

### dependencies: n/a (weight 15)

- n/a `deps.known_vulns`, `deps.mcp_sdk_version`, `deps.resolvable`: no npm or PyPI package

- tools: 13, about 2,294 tokens to load them all
- tool set hash: 495a92377dba59e2b06dd6cc2c4c24c1
- tools last changed: 2026-11-02T04:08:00.076Z
- badge: [![protogrid quality](https://protogrid.dev/badge/cc.checkleaked/spotify-data.svg)](https://protogrid.dev/servers/cc.checkleaked/spotify-data)
- Checks run on what our credential-free, read-only probes observe; tools are never called and no code audit is performed.

### Tool changes

- 2026-11-02 `fetch` added
  - The full record behind a search result: a track (play count, album, release date, genres, moods, BPM, credits), an artist (monthly listeners, followers, world rank, top cities, top tracks), an album (every track with play counts) or a playlist (details and its first 50 tracks with play counts). Takes an id from the search results (track:<id>, artist:<id>, album:<id>, playlist:<id>), a spotify: URI or an open.spotify.com URL.
- 2026-11-02 `search` changed (description)
  - before: Search the Spotify catalog by name to find ids for the other tools. `type` picks what to search: tracks, artists, albums or playlists. Returns up to `limit` hits (max 20) with id, name, key fields and open.spotify.com URL. For track searches, include_play_counts adds each hit's lifetime play count.
  - after: Search the Spotify catalog by name to find ids for the other tools. `type` picks what to search: tracks, artists, albums or playlists. Returns up to `limit` hits (max 20) with id, name, key fields and open.spotify.com URL, plus `results` (id such as track:<id>, title, url) for the fetch tool. For track searches, include_play_counts adds each hit's lifetime play count.

Full history: https://api.protogrid.dev/v1/servers/cc.checkleaked%2Fspotify-data/changes

## Remotes

- https://spotify-proxy.checkleaked.cc/mcp (streamable-http, auth api_key ${SPOTIFY_DATA_TOKEN}, reachable true, uptime30d 0.97959185)

## Packages

- oci ghcr.io/eduair94/spotify-data-mcp:0.1.1 secrets: SPOTIFY_API_KEY

## Tools (13)

- `fetch`: The full record behind a search result: a track (play count, album, release date, genres, moods, BPM, credits), an artist (monthly listeners, followers, world rank, top cities, top tracks), an album (every track with play counts) or a playlist (details and its first 50 tracks with play counts). Takes an id from the search results (track:<id>, artist:<id>, album:<id>, playlist:<id>), a spotify: URI or an open.spotify.com URL.
- `get_album`: An album with its track list and (by default) every track's lifetime play count, plus the album total, release date, label, UPC and popularity.
- `get_artist_insights`: An artist's sound profile from their top tracks: genres, moods and activities with 0-1 weights, and tempo (average, min, max BPM). Up to 20 artists per call.
- `get_artist_overview`: One artist's profile: monthly listeners, followers, world rank, top cities, top tracks with play counts, latest release, discography counts, related artists, biography and social links.
- `get_artists_stats`: Monthly listeners, followers, world rank, popularity, genres and top 5 cities (with listener counts) for up to 50 artists in one call.
- `get_chart`: Spotify Charts by country: top_tracks (Top 200), viral_tracks (Viral 50, daily only), top_artists or top_albums. Each entry has rank, previous and peak rank, days (or weeks) on the chart, movement and, for top_tracks, the streams in that period. Defaults to the latest published daily chart.
- `get_playlist`: A playlist's name, owner, followers and description, plus `limit` tracks (max 100) from `offset` with lifetime play counts. Use next_offset from the answer to page through long playlists (later pages skip the metadata and cost one request).
- `get_related_artists`: Artists Spotify lists as related to ("Fans also like") the given artist.
- `get_track_insights`: Genres, moods and activities (with Spotify's 0-1 weights), tempo in BPM, credits (writers, producers), lyrics flag and vocal languages for up to 50 tracks.
- `get_track_play_count`: Lifetime Spotify play counts (streams) for up to 50 tracks in one call, with track name, artists and release date. The fastest way to compare streams. A play count of 0 means fewer than 1,000 plays.
- `get_tracks`: Track details for up to 50 tracks in one call: name, artists, album, release date, duration, explicit flag, popularity, ISRC and (by default) lifetime play count. include_insights adds genres, moods, activities, BPM, credits, lyrics flag and languages. A play count of 0 means fewer than 1,000 plays.
- `isrc_lookup`: Find the Spotify track(s) for an ISRC (International Standard Recording Code), e.g. USUG11904206. Returns ids, names, artists, album and release date.
- `search`: Search the Spotify catalog by name to find ids for the other tools. `type` picks what to search: tracks, artists, albums or playlists. Returns up to `limit` hits (max 20) with id, name, key fields and open.spotify.com URL, plus `results` (id such as track:<id>, title, url) for the fetch tool. For track searches, include_play_counts adds each hit's lifetime play count.
