New Your team’s decisions, in one playbook every coding agent works from. Never answer your agent twice

Spotify

538 tools. 163 can modify or destroy data without limits.

29 destructive tools with no built-in limits. Policy required.

Last updated:

163 can modify or destroy data
375 read-only
538 tools total

Community server · catalogue entry checked 04/10/2026

How to control Spotify ↓

What Spotify exposes to your agents

Read (375) Write / Execute (133) Destructive / Financial (29)
Critical Risk

The most dangerous Spotify tools

163 of Spotify's 538 tools can modify, destroy, or commit something on every call — and an agent calls them with no built-in limits.

How to control Spotify

PolicyLayer is an MCP gateway — it sits between your AI agents and Spotify, and nothing reaches the server without passing your rules. These are the rules we recommend:

Deny destructive operations
{
  "archive_played_episodes": {
    "deny_if": [
      {
        "conditions": [],
        "on_deny": "Blocked by default. Requires approval."
      }
    ]
  }
}

Destructive tools should never be available to autonomous agents without human approval.

Rate limit write operations
{
  "add_to_playlist": {
    "limits": [
      {
        "counter": "add_to_playlist_per_hour",
        "window": "hour",
        "max": 30,
        "scope": "grant"
      }
    ]
  }
}

Prevents bulk unintended modifications from agents caught in loops.

Cap read operations
{
  "added_on_this_day": {
    "limits": [
      {
        "counter": "added_on_this_day_per_minute",
        "window": "minute",
        "max": 60,
        "scope": "grant"
      }
    ]
  }
}

Controls API costs and prevents retry loops from exhausting upstream rate limits.

  1. Create a free account and register Spotify — nothing to install.
  2. Add these rules — paste them, or build them visually. Tune the limits to your setup.
  3. Point your MCP client (Claude, Cursor, anything) at your gateway URL.
ENFORCE POLICY ON SPOTIFY →

Instant setup, no code required.

All 538 Spotify tools

DESTRUCTIVE 29 tools
Destructive archive_played_episodes Remove fully-played episodes from your episode library in bulk (checks resume_point.fully_played). Batch DELET Destructive cancel_wind_down Cancel the in-process wind-down ramp, if one is running Destructive clean_backup_artifacts Delete the NON-library files sharing SPOTIFY_MCP_BACKUP_DIR with your library backups: closed listening sessio Destructive delete_backup Delete one library backup file (and its metadata sidecar) from SPOTIFY_MCP_BACKUP_DIR. Irreversible — the libr Destructive delete_playback_bookmark Delete one saved playback position — a capture_playback_position bookmark, an exhaust2 checkpoint or a playbac Destructive delete_playlist_snapshot Delete one local playlist snapshot file; dry_run=true (default) only reports what would be removed Snapshot gu Destructive delete_scene Delete a saved playback scene from the local sidecar Destructive playlist_dedupe_advanced Remove duplicate items from a playlist under the Destructive playlist_exclude_artists Remove every track by one or more artists from a playlist — the Destructive playlist_keep_artist Inverse filter: keep ONLY tracks by one artist in a playlist and drop everything else. The Destructive playlist_keep_only Inverse removal: keep only matching items (by uri / artist / type / query) and drop Destructive playlist_remove_artist Remove every track by one artist from a playlist. The reference is matched against every credited Destructive playlist_strip_episodes Purify a playlist after collab drift: strip every podcast EPISODE (or every TRACK) with one Destructive playlist_subtract Remove tracks of B..N from A by REWRITING A: one PUT replaces every row with the ones that survive, so any row Destructive playlist_trim Trim playlist to N items (keep first/last/random) by OVERWRITING the playlist: every row outside the kept set Destructive prune_old_snapshots Delete old local snapshots, keeping the newest N per playlist and optionally dropping those older than a cutof Destructive remove_duplicate_playlist_items Remove duplicate items from a playlist: keeps the first occurrence of each track and removes Destructive remove_from_library Preferred. Accepts the widest URI mix (track, album, episode, show, audiobook, user, playlist) in one request. Destructive remove_from_library_by_playlist Remove from Liked Songs any tracks that also appear in a given playlist. Quota: 2 GETs + DELETE (chunked). PRE Destructive remove_from_playlist Remove tracks or episodes from a playlist. Max 100 entries per call. Destructive remove_playlist_range Delete a positional range of a playlist (0-based start, EXCLUSIVE end; negative values Destructive remove_saved_episode Remove episodes from your library via DELETE /me/library (the Feb 2026 replacement for the removed DELETE /me/ Destructive remove_saved_shows Bulk-remove shows from your library via DELETE /me/library (the Feb 2026 replacement for the removed DELETE /m Destructive remove_unavailable_playlist_items Remove unavailable (null track) rows from a playlist — actionable companion to playlist_health_check. Targets Destructive undo_last_mutation Undo the most recent reversible mutation (receipt FIFO). Same inversion semantics as undo_mutation: add/save → Destructive unfollow_playlist Unfollow a playlist — remove it from your Spotify library — via DELETE /me/library. Always asks before writing Destructive unpin_playlist DEPRECATED, use unfollow_playlist. This tool never unpinned anything; it has always removed the playlist from Destructive unsave_orphan_tracks Find saved tracks that appear in no playlist (orphans) and optionally unsave them. Quota: walks library + all Destructive unsubscribe_from_show Remove ONE saved show from your library via DELETE /me/library (the Feb 2026 replacement for the removed DELET
EXECUTE 26 tools
Execute apply_scene Apply a saved scene: resolve its device hint, transfer playback, then set volume/shuffle/repeat and start the Execute continue_last Resume the most recent saved playback position without knowing its name (newest by saved_at across the shared Execute episode_resume Jump straight back to the newest (or a named) episode bookmark: transfer + play with position + seek (2-3 writ Execute jump_to_chapter Start playing a specific audiobook chapter (1-based number) by resuming the audiobook context at that chapter. Execute pause Pause playback on the active device Execute pause_everywhere Pause every live Connect device (attempts PUT /me/player/pause per non-restricted device) — kills the Execute play Start or resume playback. Optionally target specific content. Execute play_at Start playback at a specific position — accepts H:MM:SS / MM:SS / seconds string or position_ms. Wraps PUT /me Execute play_from_search Search Spotify by name and immediately play the best match. Works for songs and podcast episodes — no URI need Execute play_on Play a context/uris/search query on a named device (resolves device name → id via GET /me/player/devices, then Execute queue_playlist Queue all tracks from a playlist/album/artist URI in order (cap 200). mode=append adds to end; mode=replace is Execute queue_replace_via_playlist Honest no-clear-endpoint workaround to replace the live queue: snapshot it, optionally filter (drop dupes / ke Execute restore_playback_state Restore a saved playback state snapshot: replays the saved item at its offset inside the saved context (album/ Execute resume_playback_position Resume a captured playback bookmark: transfer playback to the bookmarked device and seek to the bookmarked pos Execute schedule_wind_down Preview or start a volume wind-down: absolute-minute volume steps, then pause. Set dry_run to preview without Execute search_rerun Re-execute a stored search, clamping stale limits. Execute seek Seek to a position in the current track Execute seek_relative Relative seek — forward/back by delta_ms from current progress (GET /me/player then PUT /me/player/seek, clamp Execute set_volume Set playback volume on one device, on a selection of devices, or across every live device. Execute skip_n Advance N tracks at once via N sequential POST /me/player/next calls. Quota: N writes (1-20, one call per skip Execute skip_next Skip to the next track in the queue or context. Execute skip_previous Skip to the previous track. If more than 3 seconds in, restarts the current track first. Execute sleep_timer Keep music playing and auto-pause after N minutes: registers an in-process timer (cancel-safe; calling again r Execute start_podcast_session Plan a podcast session (see plan_podcast_session) and start it on a device. Limitation: Spotify cannot apply r Execute transfer_playback Move playback to a different Spotify Connect device, named by exact id, by the label you gave it, or by a case Execute volume_ramp Generic volume ramp to a target percent over N minutes (up OR down, step-controlled, optional end-state pause/
WRITE 107 tools
Write add_to_playlist Add tracks or episodes to a playlist. Max 100 URIs per call. Write add_to_queue Add a track or episode to the end of the playback queue. Write album_representative_plan Builds a deterministic Write apply_snapshot_changes Execute a merge plan on the live playlist (replay the changes between two snapshots); dry_run=true (default) o Write artist_complete_check Collector completeness: the artist Write artist_release_type_breakdown Break an artist\ Write backup_first Create a pre-flight library snapshot before a destructive operation. Returns snapshot file path and counts for Write batch_add_to_playlist Add tracks from multiple source URIs (tracks, albums, artists, playlists) to a target playlist in one call. De Write batch_add_to_queue Add multiple URIs to the playback queue in one shot. POSTs each URI to /me/player/queue and returns a summary Write checkpoint_playback One-shot timestamped auto-named playback checkpoint (cp-2026-08-27T21:05 style) — saves you naming slots for s Write collab_mix_from_followed Build a collaborative-style mix playlist from your FOLLOWED artists\ Write copy_playlist Duplicate an existing playlist into a new playlist, preserving track order. Creates the new playlist then adds Write create_playlist Create a new playlist for the current user. Set dry_run=true to preview without creating. Write create_smart_playlist Create a playlist from rules over your own listening data: top tracks (by time range), Write decade_sampler_plan Read-only sampling plan across decades: groups your saved albums by release decade and deterministically picks Write dedupe_playlist_apply Remove duplicate uris from a playlist keeping the first (or last) occurrence: backs up Write dedupe_playlist_plan Census every duplicate uri in a playlist — groups, all positions, and the exact keep- Write device_type_census Census of available Spotify devices grouped by type, with counts, names and volume range per group. Read-only. Write diff_playlist_snapshots Diff two local snapshots of a playlist and report every added and removed track between them Snapshot guide: t Write export_all_playlists Export every owned (or all) playlist with metadata + items to a sidecar file. Quota: GET /me/playlists + N×GET Write export_followed_artists Export your followed artists to a local directory as JSON or CSV. Fields: uri, name, genres. The file\ Write export_library_json Export your full library (saved tracks, albums, shows, episodes, audiobooks) to a local directory as JSON or C Write export_listening_history Export your listening history (recently played) to a JSON or CSV sidecar by walking /me/player/recently-played Write export_playlist Export a playlist Write export_playlist_json Full-fidelity JSON export of one playlist: items + added_at + added_by + URIs (the Write export_playlist_markdown Export one playlist as a paste-ready markdown table (the doc-friendly variant of Write export_profile_state Export local sidecar stores (scenes, genre-tags, playback-ext, search-history, mutations, artist-watchlist) to Write export_shows_opml Export your saved shows as OPML XML — the interchange format podcast apps speak. Write export_snapshot_bundle Bundle selected snapshots (all of one playlist, or explicit ids) into a single portable JSON export file local Write follow_playlist Follow a playlist — save it to your Spotify library — via PUT /me/library. Spotify removed the playlist-follow Write front_to_back_plan Full front-to-back listening plan for one album: ordered track listing with cumulative start times and Write import_from_sidecar Additive restore from a library.json sidecar written by export_library_json: re-adds every missing saved item Write import_playlist Parse an M3U or CSV document (the inverse of export_playlist) and append its Spotify URIs to a target playlist Write import_profile_state Restore local sidecar stores from a profile-state archive. merge unions each store on its own keys and de-dupl Write interleave_playlists_plan Plan (and optionally commit) interleaving 2–10 playlists — round-robin one track each or Write library_growth_timeline Show how fast your saved-track library grew: adds per month, busiest month, and your longest/current monthly a Write listening_clock Profile when you listen by UTC hour (24-bucket histogram plus daypart totals, peak hour and quietest hour) fro Write listening_history_export Export your recently-played history as a paginated chronological table (oldest→newest; supports offset continu Write listening_session_close Close a listening session: captures an end-of-session playback snapshot, stamps the duration and marks the ses Write listening_session_start Start a local listening-session log: captures the current playback snapshot into a session file under the back Write mark_episode_played_plan Plan (never execute — Spotify removed the mark-played API, issue 230) which episodes to Write merge_playlists Merge multiple playlists into one. Deduplicates tracks across sources (first-seen order wins) and adds them in Write merge_playlists_plan Plan (and optionally commit) merging 2–10 playlists in order into a NEW playlist Write merge_snapshot_changes_plan Read-only plan to replay the changes between two snapshots onto the live playlist (add new and/or remove lost Write migrate_playback_positions One-time, idempotent import of every legacy playback position (exhaust2 checkpoints, playback-ext states, back Write move_items_between_playlists Bulk rehome items between playlists. Mode copy keeps the source intact; mode move removes from source after co Write move_tracks_between_playlists Move matching tracks (by uris, name substring, or artist) from one playlist to another: Write mutation_log_export Render the JSONL mutation history as a CSV or markdown report, date/uri-filtered — Write pin_playlist DEPRECATED, use follow_playlist. This tool never pinned anything; it has always saved the playlist to your Spo Write plan_podcast_session Greedy-pack your saved podcast episodes into a listening session of a given length. Episodes play their remain Write playlist_add_by_search playlist_add_by_search Write playlist_chunk_preview Read-only pagination preview: how a playlist splits into write-sized chunks (the 100-URI Write playlist_cover_from_track Set the playlist cover from a track album art: pick by position in the playlist, pass any track URI, or defaul Write playlist_difference_plan Plan (and optionally commit) the set difference Write playlist_edit_journal Journal a playlist\ Write playlist_expression_algebra Mini set-algebra over playlists: Write playlist_fill_from_search Grow a playlist to N items from search queries you supply: round-robin one pick per query per pass, first unse Write playlist_filter_runtime Keep only items whose duration falls inside a window (e.g. min_sec 120 → drop intros/interludes; Write playlist_from_tags Create or refresh a playlist from saved library items whose artists carry the given Write playlist_move_block Move a contiguous block of items (1-based start + count) so its first item lands at a target Write playlist_move_to_top Bring matching items (uris / artist / query) to the FRONT of a playlist in one atomic Write playlist_slice Copy a slice of one playlist — positions start..end, first/last N, or an added-at date Write playlist_template_apply Create an instant mood/vibe playlist from a template (focus, wind-down, gym, commute) composed from your exist Write playlist_to_library Save all tracks of a playlist to your Liked Songs (library). Quota: GET playlist items + PUT /me/tracks (chunk Write queue_next Queue a track/episode to play next (tail insert with honest disclosure — Spotify has no insert-next API; tail Write queue_next_episode Find the next unplayed episode of a show (not in recently-played and not fully played) within an episodes_back Write queue_prune_plan Plan pruning the upcoming queue: identify redundant duplicate entries (and optionally podcast episodes) to dro Write quick_save_now One-call Write refresh_smart_playlist Rebuild a playlist from its persisted rule: resolve candidates, then replace the contents (PUT /playlists/{id} Write rename_device Rename a device locally (sidecar label — Spotify has no rename endpoint). Write replace_playlist_items Replace ALL items in a playlist with the supplied URIs, overwriting the current contents. Lists longer than 10 Write replay_session Replay a tagged listening session: queue its tracks or create a playlist. Write resolve_artist Resolve an artist name or URI to a Spotify artist ID via search Write restore_library_snapshot STRICTLY ADDITIVE restore of a library snapshot written by backup_library (see list_backups). Adds only what i Write restore_playlist_from_snapshot Make a live playlist match a snapshot (add missing, remove extra tracks); dry_run=true (default) returns the d Write restore_playlist_plan Read-only plan of exactly which tracks would be added/removed to make a live playlist match a snapshot — never Write reverse_playlist_plan Plan (and optionally commit) reversing a playlist\ Write rotate_playlist_plan Plan (and optionally commit) rotating a playlist by N positions — positive moves the Write save_artist_new_releases Find new releases for an artist and save unsaved albums to Your Library (diffs against /me/library/contains) Write save_discover_weekly Archive your Discover Weekly into a regular playlist (creates or overwrites the archive). Resolves Discover We Write save_episode Save episodes to your library via PUT /me/library (the Feb 2026 replacement for the removed PUT /me/episodes) Write save_playback_state Snapshot current playback state to a named local slot (sidecar JSON). Write save_queue_as_playlist Capture the current playback queue as a durable playlist. Reads GET /me/player/queue, creates (or appends to) Write save_release_radar Archive your Release Radar into a regular playlist (creates or overwrites the archive). Resolves Release Radar Write save_scene Save a named playback scene (device + volume + shuffle/repeat + optional context) to the local sidecar (~/.spo Write save_show_digest Show-radar digest: create or append. Later calls reuse the first call\ Write save_smart_playlist_rule Persist a smart-playlist rule to the local sidecar so refresh_smart_playlist can rebuild the playlist later. Write save_to_library Preferred. Accepts the widest URI mix (track, album, episode, show, audiobook, user, playlist) in one request. Write saved_albums_by_type Group your saved albums by album_type (album / single / compilation / EP). Read-only. Write saved_track_age_report Histogram of when you saved each liked track (added_at): age buckets plus a per-year add histogram. Read-only. Write set_device_volume_preset Store a per-device volume preset (0–100) in the local sidecar. Write set_repeat Set repeat mode: off, context (repeat playlist/album), or track (repeat single track) Write set_shuffle Enable or disable shuffle mode Write sidecar_export_bundle One-call export of ALL local sidecar state (scenes, device presets, tags, smart rules, Write sleep_timer_plan Plan a sleep timer: pick the leading queue items whose cumulative runtime best approximates a target duration, Write sort_playlist_apply Sort a playlist in place by name, artist, album, duration, added-at date or release era: Write sort_playlist_plan Plan a sort of a playlist by name, artist, album, duration, added-at date or release era Write split_queue_plan Plan splitting the upcoming queue into runtime-bounded playlist chunks (default 30 minutes each). Commits by d Write stale_saved_shows_plan Build a PLAN for pruning saved shows that have published nothing within the staleness Write statsfm_resolve_user Resolve a stats.fm user id or customId to their profile (falls back to user search) Write switch_account Change which registered account this session acts as. Takes effect for every subsequent call Write tag_management Declare or retract genre tags for an artist in your local sidecar (~/.spotify-mcp/genre-tags.json), which libr Write taste_checkpoint Save a snapshot of your current top artists/tracks/genres to a dated sidecar slot for Write undo_mutation Undo a specific mutation by receipt ID. Inverts the recorded direction: an add/save is undone by removing, a r Write update_playlist Update a playlist Write upload_playlist_cover Replace a playlist Write week_in_review_playlist Create a
READ 375 tools
Read added_on_this_day Show tracks you saved on this calendar day (month + day) in previous years — your library Read album_anniversary_check Upcoming album anniversaries for an artist within the next Read album_duration_report Runtime profile for an artist\ Read album_edition_lint Lint your saved albums for the same record kept across multiple editions (same name after edition-noise stripp Read album_focus_report Deep focus report on one album: track-by-track listing with cumulative runtime, duration statistics, edition Read album_openers_report List track 1 (the side-A opener) of every studio album by an artist, chronologically — the Read album_track_explorer Full track listing for one album with per-track cross-album duplicate counts — spot which songs are unique to Read album_track_stats [local-compute] Track-length statistics for one album: min/max/mean/median plus a longest-track callout, Read albums_runtime_batch [local-compute] Runtime per album — total and mean track length — for up to 20 albums in one pass Read artist_album_completeness Checks how complete your saved-album library is for one artist: canonical studio-album titles from the Read artist_album_timeline [local-compute] Chronological release table (oldest → newest) with inter-release gap days, median gap and the Read artist_catalog_stats Numbers-only catalog profile for one artist: release totals by group, summed track counts, average tracks per Read artist_collab_network [local-compute] Featured/collab artists extracted from an artist\ Read artist_collaboration_network Builds a depth-2 collaboration web for one artist from discography walks alone: first-degree collaborators Read artist_collection_gaps List an artist\ Read artist_completeness_score For your top N saved-track artists, fetch each artist\u2019s top tracks and score how many of them you have sa Read artist_debut_release_finder Dig up an artist\ Read artist_decade_span Histogram of an artist\ Read artist_deep_cuts Finds an artist\ Read artist_deep_dive Builds a one-artist dossier from the artist object plus a full discography walk: genres, release counts by Read artist_discography_explorer Overview stats for one artist\ Read artist_discography_gaps Chronological discography table (oldest to newest by default) with per-release gap-in-days versus the previous Read artist_discography_search Full-text filter over an artist\ Read artist_discography_stats [local-compute] Discography shape for one artist: release counts by album/single/compilation, first and Read artist_discography_timeline [local-compute] Chronological release table (year · type · name · tracks) built from a paginated Read artist_era_map Cluster an artist\ Read artist_era_sampler Splits an artist discography into equal year-span eras and deterministically picks representative releases per Read artist_first_release Locates an artist\ Read artist_genres_compact Up to 50 artist IDs → name·genres two-column projection (compact roster view). Read artist_latest_release_report Reports on an artist\ Read artist_latest_releases Fetch the most recent N releases from an artist\ Read artist_listening_clock Profile WHEN you play one specific artist (UTC hour-of-day histogram plus UTC daypart split; defaults to your Read artist_live_albums_finder List an artist\ Read artist_name_disambiguator Resolves an ambiguous artist name: runs a typed artist search and profiles each candidate (genres, active Read artist_reissue_detector Detect alternate versions (live/deluxe/remaster/expanded editions) in an artist\ Read artist_release_digest Show a digest of new releases since the last check for a watchlist. Read artist_representation_census Census of your saved tracks by credited artist: rank the top N artists by how many saved tracks they appear on Read artist_scout_from_playlists Find new-to-you artists: pull the artist roster from one of your playlists and rank the ones you have NOT save Read artist_singles_timeline Chronological singles timeline for an artist (date · title · track count). Quota: one paginated /artists/{id}/ Read artist_top_vs_saved Compares your top artists (from /me/top/artists) against your own library: saved-album and saved-track counts Read artist_velocity_report Classify each top artist’s momentum by comparing short_term and long_term ranks (surging / climbing / steady / Read artistwatch_new_additions Watches your FOLLOWED artists for new material: walks /me/following, probes each artist\ Read audiobook_chapter_map [local-compute] Chapter-by-chapter duration map, total runtime and the mid-point chapter for one audiobook. Read audiobook_library_progress All saved audiobooks with % complete and estimated time remaining, sorted by progress — Read audiobook_progress Audiobook progress rollup: chapters total, played count, current chapter, percent complete. Walks every chapte Read audiobooks_by_author Author catalogue via the Read b_sides_detector Detect B-sides: tracks that appear on an artist\ Read b_sides_finder Surfaces an artist\ Read backup_library Snapshot your ENTIRE library to a local JSON file (read-only against Spotify): liked tracks, saved albums/show Read balance_playlist_pairs Plan (and optionally commit) rebalancing 2–10 playlists to similar track counts or Read binge_detector_report Flag artists whose recently-played counts exceed a play threshold (default ≥5 plays) with span and track cover Read browse_category_deepdive Category → playlists → optional items peek in one call. Removed Feb 2026, no replacement endpoint. Quota: 2–3 Read canonicalize_spotify_uri Canonicalise up to 500 equivalent Spotify IDs, URIs, links, and official share URLs to spotify:<kind>:<id>. Read capture_playback_position Bookmark the current track, playback position and device so it can be resumed later with resume_playback_posit Read catalog_batch_lookup Resolve a mixed list of Spotify URIs (tracks/albums/artists/shows/episodes/audiobooks/chapters) in partitioned Read category_resolver Free-text genre/vibe → best-matching browse category ID via local fuzzy match over GET /browse/categories Read chapter_bookmarks Named chapter+position bookmarks per audiobook, stored in the local sidecar (jump later Read check_artist_releases Check watched artists for new releases since last check (or within lookback_days). Read check_episode_saved Check which episodes are already saved in your library via GET /me/library/contains (the Feb 2026 replacement Read check_following_artists Check if the user follows specific artists — this tests FOLLOW state, not library-saved state (for that use ch Read check_in_library Preferred. Accepts the widest URI mix (track, album, episode, show, audiobook, artist, user, playlist) in one Read check_playlist_following Check if you follow 1–50 playlists. Follow state: GET /me/library/contains?uris=spotify:playlist:<id>,… (40/re Read clean_all_playlists Scan every playlist in your library for duplicate items (repeated URIs, and on opt-in Read clone_playlist_cover Copy cover image from source playlist to target. Quota: GET images + PUT images (plus image fetch). Read collab_density_report Measure collaboration density: how many of your saved tracks credit 2+ artists, with the top collaborations ra Read compare_devices List every available Spotify device ranked by active state, then device type (Computer > Smartphone > Tablet > Read compare_playlist_covers compare_playlist_covers Read daily_pick Deterministic Read dead_library_finder Find saved tracks that never appear in your recent history AND sit in none of your Read dedupe_spotify_uris Deduplicate equivalent Spotify references by canonical URI, preserving first-seen order and retaining invalid Read deep_cuts_finder Deep cuts per album: tracks past position 2 that are neither the title track nor among the SCANNED singles. Bo Read deep_dive_report Deep-dive one artist: recently-played counts, which of their tracks rotate, and their rank in each top-artists Read describe_listening_session Playback history timeline from recently-played, optionally grouped into sessions (30-min gap via detectSession Read device_health Device availability & capability report — merges GET /me/player/devices + GET /me/player active id + sidecar l Read device_sync_state Reconcile sidecar device labels/volume presets (and scene device hints) against the Read diff_playlists Compare two playlists up to the configured source cap: tracks only in A, only in B (by track ID), and tracks p Read diff_since_snapshot Compare current playlist state to a stored snapshot Read discover_weekly_diff This week\ Read discovery_digest One combined discovery digest from your own data: latest releases from your top artists with freshness flags, Read discovery_ratio Measure what share of your recently-played tracks are NOT in your top tracks (discovery vs staple listening; d Read duplicate_saved_versions Find songs you saved more than once from different albums (same normalised track name + primary artist, distin Read episode_bookmark Bookmark the current podcast-episode position to the sidecar (title, show, progress, optional note) — where_wa Read episode_context_bundle Episode + parent show + neighbouring episodes (prev/next by release date) in one card. Read episode_guest_census Census recurring GUESTS across a show\ Read episode_runtime_report Runtime statistics for one show\ Read era_distribution_report Histogram of releases across eras: pass artist_id for that artist\ Read era_preference_report Compare the decade mix (album release eras) of your recently-played tracks against a top-tracks window, highli Read expand_mood_to_queries Turn a free-text listening mood into search terms (genres, keywords, terms to avoid) for search. Read explicit_content_ratio Share of your saved tracks flagged explicit, with the top explicit artists. Read-only. Read extract_playlist_range Extract a positional range of a playlist (0-based start, EXCLUSIVE end; negative values Read featuring_density_report Measure how many of your saved track titles carry a Read filter_by_genre List URIs of your saved tracks or albums whose artists carry a given genre tag (case-insensitive tag-name matc Read filter_playlist_by_artist Filter a playlist by artist (IDs/URIs or names, matched on id or exact name) and either Read filter_playlist_by_duration Filter a playlist by track duration (min/max seconds) and either report the matches Read filter_playlist_by_era Filter a playlist by album release era (decade and/or year window) and either report the Read find_canonical_track [local-compute] Given a title + artist, search all versions, group by (artist, title) and rank them — Read find_collaborations Finds tracks where two artists appear together: walks artist A\ Read find_duplicate_playlists Scan your playlists for exact and near-duplicate track sets. Exact = identical URI sets (order-insensitive); n Read find_duplicate_saved_tracks Read-only duplicate detection over your saved (liked) tracks. Exact groups require the Read find_duplicate_tracks_across_playlists Find tracks that appear in more than one of the given playlists (cross-playlist dupes). Quota: N GETs (one per Read find_duplicates_in_playlist Find duplicate tracks in a playlist under one published matching rule. Read find_lost_since_snapshot Compare a live playlist against a snapshot and list snapshot tracks that have since disappeared from the playl Read find_new_since_snapshot Compare a live playlist against a snapshot and list tracks added to the playlist since it was taken Snapshot g Read find_show_by_publisher Search the catalog and match shows whose PUBLISHER (network) matches your query — the Read find_tool Search the live tool registry by name or description substring — the fastest way to discover which of the 500+ Read followed_playlists_audit Inventory of followed vs owned playlists: counts, collab, public, follower totals. Quota: GET /me/playlists pa Read following_analytics Followed-artist rollups from the tag sidecar; popularity/followers unavailable (Spotify no longer returns thos Read format_spotify_uri Validate an entity kind and Spotify ID pair, then format its canonical spotify: URI. Read genre_dive_search Search artists by genre keyword (e.g. Read genre_trends_over_time How your taste shifts — per-period top genres from user-declared tags, with deltas and emerging/declining tags Read get_album Get album details and track list by ID Read get_album_tracks List the tracks of an album with pagination Read get_artist Get artist info by ID Read get_artist_albums List an artist Read get_artist_appearances List albums an artist appears on (GET /artists/{id}/albums?include_groups=appears_on). Quota: 1 call. Read get_artist_discography Get filtered discography for an artist (GET /artists/{id}/albums with album-type filtering) Read get_artist_genres Get genres for an artist (focused view of GET /artists/{id}) Read get_artist_singles List an artist Read get_artist_top_tracks Get an artist Read get_audiobook Get full details for an audiobook by ID.${MARKET_NOTE} Read get_audiobook_chapters List the chapters of an audiobook with pagination.${MARKET_NOTE} Read get_available_markets List the country codes of every market where Spotify is available. Removed by Spotify\u2019s February 2026 Web Read get_category Get a single Spotify browse category by ID. Removed Feb 2026, no replacement endpoint. Quota: 1 call. Read get_chapter Get full details for a single audiobook chapter by ID. Resume position requires the user-read-playback-positio Read get_context_inspect Inspect the currently-playing context (playlist/album/artist) in detail, including the position of the current Read get_currently_playing Lightweight poll of what is playing right now: the item and progress only. For full session state (shuffle/rep Read get_device_volume_report Report volume_percent, supports_volume and active state for every Spotify device, highlighting the currently a Read get_devices List available Spotify Connect devices. The same rows are readable as a resource with no tool call at spotify: Read get_episode Get full details for a podcast episode Read get_episode_details Fetch full metadata for one episode (duration, release date, resume point, show, description). Read get_followed_artists Get the artists the user follows. fetch_all=true walks every page; limit/after page manually. Read get_me Get the current user Read get_newly_released_episodes Collect episodes released since a date across ALL saved shows, merged newest-first and Read get_now_playing Full device/session state for what is playing right now — item, progress, plus shuffle/repeat mode, active dev Read get_playback_context Resolve the current playback context URI (from GET /me/player) to catalog metadata — playlist/album/artist/sho Read get_playback_snapshot Return the full current playback state compactly: device, track/episode, position, shuffle/repeat and context. Read get_playlist Get a playlist Read get_playlist_added_dates List when each track was added to a playlist (added_at + added_by). Quota: GET /playlists/{id}/items paged. Read get_playlist_cover Get a playlist Read get_playlist_followers Get follower count for a playlist, optionally including public owner profile Read get_playlist_items List a playlist Read get_playlist_snapshot Expose snapshot_id + item count for optimistic concurrency. Quota: 2 GETs. Read get_queue Read the playback queue. Use this for queue CONTENTS (what is playing, what is up next, how long it runs, what Read get_recently_played Get recently played tracks with timestamps Read get_saved_albums Get albums saved in the user Read get_saved_audiobooks List the audiobooks saved in the current user Read get_saved_counts Library size snapshot: counts for tracks/albums/shows/episodes/audiobooks/playlists via limit=1 reads — no ite Read get_saved_episodes Get podcast episodes saved in the user Read get_saved_shows Get podcast shows saved in the user Read get_saved_tracks Get tracks saved in the user Read get_several_albums Get full details for several albums by ID in a single call (up to 20 per request) Read get_several_artists Get full details for several artists by ID in a single call (up to 50 per request) Read get_several_audiobooks Get full details for several audiobooks by ID in a single call (up to 50 per request). Audiobooks are only ava Read get_several_chapters Get full details for several audiobook chapters by ID in a single call (up to 50 per request) Read get_several_episodes Get full details for several podcast episodes by ID in a single call (up to 50 per request) Read get_several_shows Get full details for several podcast shows by ID in a single call (up to 50 per request) Read get_several_tracks Get full details for several tracks by ID in a single call (up to 50 per request) Read get_show Get full details for a podcast show Read get_show_details Fetch full metadata for one show (description, publisher, episode count, languages, media type). Read get_show_latest_episode Return the single newest episode of a show with duration, description, and resume point — Read get_top_artists Get the user Read get_top_tracks Get the user Read get_track Get full details for a track by ID Read get_user_playlists List the current user Read get_user_playlists_by_id List another Spotify user Read get_user_profile Get any Spotify user Read grow_playlist Propose tracks to grow one of your playlists using ONLY your own listening data (no recommendations): finds tr Read history_search Search portability, backup and mutation-history stores; hits name their source. Quota: local only (no API). Read inspect_tool Show one tool\ Read is_local_census Count your saved tracks flagged as local files (is_local true) and list them — these often fail to play on oth Read label_discography_explorer Group an artist\ Read label_explorer Census of record labels across your saved albums (label comes from a per-id full-album fan-in); pass a label Read lane_status Check one or more lanes: does the lane resolve, does its playlist still exist, how many tracks does it Read last_heard For 1-10 artists: when did you last actually play them (recently-played cursor walk) + the gap — answers Read library_coverage_report Report coverage between your saved tracks and playlists: orphan saved tracks (liked but not in any playlist) a Read library_genre_report Aggregate your saved library by user-declared genre tags. Scans all saved tracks and albums, joins each item\ Read library_growth_report How fast your library is growing — buckets saved tracks/albums/shows/episodes by added_at period (weekly/month Read library_hygiene Read-only album hygiene over your liked tracks: flags near-complete albums worth saving and Read library_snapshot_diff Diff two sidecar JSON files (library.json or playlists.json): added/removed counts + samples. Quota: local onl Read library_to_playlist Export saved tracks, or playable track URIs expanded from saved albums, into a NEW Read library_value_summary One mega-report over your saved library: totals, runtime, explicit/local/unplayable counts, collab + featuring Read list_accounts List every local account this server can act as, and which one it is acting as now. Read list_all_chapters List every chapter of an audiobook in one table (index, name, duration, resume point). Walks all pages of the Read list_backups List complete and partial library backups (newest first) using bounded metadata sidecar reads, with a bounded Read list_device_presets List stored device name labels and volume presets. Read list_lanes List the lane registry: every lane name defined in the lane manifest, the playlist it resolves to, Read list_playback_bookmarks List every saved playback position in the one shared record, whatever created it — capture_playback_position b Read list_playback_states List saved playback state snapshots from the local sidecar. Read list_playlist_snapshots List stored snapshots (optionally filtered by playlist_id) Read list_saved_shows List the shows saved in your library with publisher, episode count, and saved date — Read list_saved_snapshots List local playlist snapshots (newest first) with path, creation time, size, and the _meta summary; optionally Read list_scenes List saved playback scenes from the local sidecar Read list_sessions List tagged listening sessions (optionally filter by tag). Auto-detect mode can also scan recently-played gaps Read list_show_episodes Page one show\ Read listening_clock_heatmap Render a UTC weekday × UTC hour listening heatmap from recently-played history with the peak cell highlighted Read listening_consistency_score Score how consistent your listening is (0-100) from recently-played history: active-day coverage, UTC hour spr Read listening_gaps_report Find the quiet stretches in your recently-played history: every inactivity gap above a threshold (default ≥120 Read listening_heatmap When do you listen? Buckets recently-played tracks into 168 hourly slots (24h x 7d) in the requested time zone Read listening_journal_append Attach a timestamped note to today\ Read listening_recap_brief Produce a one-call recap of your recent listening: headline plays, top artist/track, leaderboard leaders, peak Read listening_report Aggregate listening report: compares your top tracks between two time windows (rising / constant / fading), pl Read listening_session_report Report a listening session (or the most recent one when no id is given): duration, start/end snapshots and clo Read listening_streak_report Compute consecutive-day listening streaks from recently-played history, including the longest streak and wheth Read listening_streaks Compute consecutive-day listening streaks from recently-played history (up to 150 items, or max_items if lower Read listening_week_in_time Charts for any specific past week within the ~90-day recently-played window, via a Read longest_saved_tracks Rank your saved tracks by duration, longest first. Read-only. Read lyric_snippet_search Finds candidate tracks for a remembered lyric or title fragment: runs quoted-phrase /search over tracks and Read market_availability Per-entity multi-market preview — checks if a track/episode/album is playable in each of 1-10 given markets (N Read market_validate Validate ISO 3166-1 market codes against GET /markets (cached) and optionally return the account market from / Read monthly_listening_report Calendar-month listening report: top tracks/artists, estimated minutes, active days and Read mood_bucket_report Segment recently-played plays into UTC daypart × familiarity buckets (fresh tracks vs staples from your top tr Read morning_briefing Daily digest in one call: new releases from followed artists + new episodes from saved Read most_replayed Most-replayed tracks in the recent window: play counts per track from recently-played, deduped — Read never_played_saved List saved tracks absent from your recently-played window. Honest bounds: recently-played only covers roughly Read new_music_from_saved_artists Newest releases across the artists you follow (and optionally those in your saved albums), sorted by release d Read new_music_from_top_artists Fresh-music digest from YOUR listening: probes the latest release of each of your top artists (from Read now_playing_history Merged listening stream — recently-played plus currently-playing item on top (deduped). Quota: 2 reads. Read-o Read orphaned_artist_check Find asymmetries in your library: artists you saved tracks from but never saved an album of, and vice versa. R Read overlap_playlists Find tracks shared across playlists: reports how many playlists each track appears in and lists tracks present Read parse_spotify_uri Parse and validate one Spotify ID, spotify: URI, spotify:// link, or official open.spotify.com share URL using Read parse_spotify_uris Parse and validate up to 500 Spotify references using the shared single-source policy. Read peek_next Short lookahead at the queue: the next N items with durations and total runway. Use get_queue for the whole qu Read playback_compare_states Diff two saved playback snapshots (sidecar only, no API). Shows item/shuffle/repeat/progress/device/context ch Read playback_health_check Probe the playback stack end to end: token validity, available devices, current playback state and queue reada Read playback_timeline Progress forecast — elapsed/remaining for current track and optional queue runway, plus ETA wall-clock. Quota: Read playback_timer_status Read sleep_timer and volume_ramp progress, including every applied, failed, or pending step. Quota: local in-p Read playlist_artist_heat Local artist-concentration check: top-artist share, an HHI concentration index, and the Read playlist_balance Split a playlist into N balanced new playlists: sequential chunks (part 1 = first third, …) Read playlist_changelog Diff ONE playlist across two backup snapshots (older → newer): tracks added, removed, and Read playlist_clone_live Clone a playlist AS IT IS RIGHT NOW into a NEW playlist (name, optional description and Read playlist_clone_snapshot Restore a playlist from a local backup snapshot as a NEW playlist (never overwrites the Read playlist_collab_toggle Toggle collaborative/public flags (guards public=true && collaborative=true 400). Quota: GET + PUT. Read playlist_collaboration_report Report who added what to a playlist (counts + first/last timestamps, most-active) Read playlist_diff Compare two playlists: what is only in A, only in B, and in both — plus whether the shared Read playlist_era_profile Local release-era profile: decade histogram, median track age, and a time-capsule verdict. Read playlist_flip_order Reverse a playlist: last item becomes first, written as one atomic replace. The standard Read playlist_health_check Audit a playlist for unavailable, local, duplicate, and empty issues (read-only). Duplicates are Read playlist_history List local backup snapshots (from backup_library): filename, created timestamp, per-snapshot counts. Read playlist_intersect Keep only the tracks present in ALL of 2–10 playlists, written as one atomic replace — Read playlist_intersection Report the tracks present in ALL of 2–10 playlists, including which of the source Read playlist_names_bulk_normalize One-shot name hygiene across your library: strip Read playlist_overlap_matrix Pairwise Jaccard overlap for 2–10 playlists — which of your mixes have drifted into the Read playlist_pair_check Pairwise relationship report for two playlists: sizes, overlap, Jaccard similarity, and Read playlist_resequence Sort a playlist in place — by track name, artist, album, duration, or date added — written Read playlist_reverse Reverse a playlist in one atomic replace. Quota: GET all + PUT/POST. Read playlist_rotate Rotate a playlist by N positions: positive N moves the first N items to the end, negative N Read playlist_seed_shuffle Shuffle a playlist in place (Fisher–Yates) with an optional deterministic seed — same seed, Read playlist_shuffle Fisher-Yates shuffle a playlist (seeded optional). Quota: GET all + PUT/POST. Read playlist_snapshot_detail Inspect one playlist inside a local backup snapshot: its item_count as recorded plus the Read playlist_sort Sort a playlist in place by added_at/name/artist/duration. Quota: GET all + PUT/POST. popularity is not a sort Read playlist_staleness_report Per-playlist staleness report: newest/oldest added_at, median item age and count added Read playlist_staleness_score Local staleness check: days since the most-recent / median added_at in a playlist, a Read playlist_swap_positions Swap the items at two 1-based positions — e.g. flip tracks 3 and 7. Positions may be any Read playlist_symmetric_difference Tracks in exactly one of two playlists (XOR). Quota: 2 GETs. Read playlist_table_of_contents Build a table of contents for a playlist: totals, runtime, and Read playlist_trim_to_duration Fit a playlist to a target runtime (e.g. Read playlist_union Union of 2–10 playlists into target (deduped, first-seen order). An empty union empties the target the same wa Read playlist_union_preview Preview the union of 2–10 playlists as a first-seen-ordered sequence, with per-playlist Read publisher_portfolio Per-publisher portfolio across saved shows: show count, listed episode totals, and sampled Read quota_probe Fire 2-3 lightweight authenticated reads and report Retry-After / quota state plus a Read read_playlist_snapshot Read one local playlist snapshot and return its meta plus the captured track rows (truncated by max_results) S Read receipt_lookup Find mutation receipts by id, date range or affected URI — closes the receipts loop Read reorder_playlist_items Move a range of items within a playlist. Spotify semantics: when insert_before > range_start, the effective de Read repeat_listener_report Quantify repeat listening in recently-played history: share of plays going to tracks heard more than once plus Read repeat_queue_toggle One-call queue-repeat helper — sets repeat=context/off and optionally shuffle in 1-2 writes. Quota: 1-2 writes Read sample_playlist_tracks Draw a uniform random sample of N tracks from a playlist — deterministic when a seed is Read saved_albums_by_decade Group your saved albums by release decade (from each album release_date) and show a histogram. Read-only. Read saved_albums_by_label Group your saved albums by record label (from each album payload) and rank labels by count. Read-only. Read saved_albums_by_year Histogram of your saved albums by release year. Read-only. Read saved_library_delta Diff your current saved tracks/albums against a local backup snapshot (from backup_library): Read saved_runtime_by_era Total listening runtime of your saved tracks grouped by the release decade of each track\u2019s album. Read-on Read saved_shows_publisher_census Count your saved shows by publisher and rank the biggest presses in your subscriptions — Read saved_tracks_by_artist List your SAVED tracks for one artist ( Read saved_tracks_roulette Deal N random cards from a saved shelf into a FRESH playlist. Album shelves are expanded Read saved_vs_playlist_coverage Report which of your saved tracks appear in none of your owned/followed playlists, with a coverage ratio. Read Read scene_sampler_search Build a scene sampler: search artists by a scene/genre keyword, then fetch each act\ Read scope_audit Decode the current token Read search Search Spotify Read search_advanced Structured advanced-search composer: builds a valid Spotify filter query from typed fields and runs it. Read search_by_isrc Exact track resolution from an ISRC via the Read search_deep Paged catalog search that walks past the API limit of 10 results per type. Fetches up to 5 pages of 10 results Read search_fresh Query-scoped newness: runs your query with Spotify\ Read search_history Recall past searches (local sidecar, 90-day expiry). Optionally filter by query substring. Recorded by search/ Read search_history_stats Analytics over the local search-history sidecar: top queries, type breakdown, recency. Quota: local only (no A Read search_market_diff Same query run in two markets with the result sets diffed — availability/regional insight in one card. Read search_saved_albums Search saved albums (client-side filter over bounded walk). Quota: GET /me/albums paged. Read search_saved_audiobooks Search saved audiobooks (bounded walk + client-side filter). Quota: GET /me/audiobooks paged. Read search_saved_episodes Search saved episodes (bounded walk + client-side filter). Quota: GET /me/episodes paged. Read search_saved_shows Search saved podcast shows (bounded walk + client-side filter). Quota: GET /me/shows paged. Read search_saved_tracks Search your Liked Songs (saved tracks) by text query and optional facets — client-side filter over a bounded w Read search_within_playlist Text search inside a single playlist: a client-side filter over the rows the walk read, cheaper than paging ge Read session_length_report Split recently-played history into listening sessions by inactivity gap (default 30 minutes) and report size/d Read session_stats Session-size distribution from recently-played via detectSessions (30-min gap): session count, median/mean tra Read shortest_saved_tracks Rank your saved tracks by duration, shortest first. Read-only. Read show_activity_feed Chronological feed of the most recent episodes across ALL your saved shows, merged and Read show_backlog_plan Plan (dry-run only, never mutates) your podcast backlog: unlistened episodes across saved Read show_backlog_report Per saved podcast show: unplayed episodes (resume_point), hours of backlog and Read show_episode_search Full-text search within one show\ Read show_episode_timeline [local-compute] One show\ Read show_new_episodes Find new episodes across your saved podcast shows: reports episodes Read show_recommendation_brief Cross-reference newly released episodes against your episode library and each episode\ Read show_runtime_stats [local-compute] Runtime profile for one show: total and average episode runtime plus release cadence Read shows_release_calendar Estimate each saved show\ Read shows_without_new_episodes Find saved shows with no episode released inside the lookback window ( Read shuffle_state_report Report the current shuffle and repeat state, the device they apply to and the active context. Read-only. Read snapshot_added_at_report Report when the tracks in a snapshot were added to the playlist, bucketed by month (YYYY-MM) Snapshot guide: t Read snapshot_changelog Build a chronological changelog of a playlist from every local snapshot, describing the changes between consec Read snapshot_diff_summary One-paragraph summary of the differences between two snapshots: counts plus the first few changed tracks Snaps Read snapshot_disk_usage Report disk usage of the snapshot directory: total size, file count, per-playlist breakdown, and the largest f Read snapshot_integrity_check Validate one snapshot (or all of them): JSON parses, required _meta keys exist, and the declared track_count m Read snapshot_integrity_report Aggregate health report over all local snapshots: valid vs corrupt files, per-playlist coverage, and the age o Read snapshot_new_tracks List only the tracks added between an older and a newer snapshot of a playlist Snapshot guide: take_playlist_s Read snapshot_playlist Snapshot a playlist\ Read snapshot_registry_report Registry view of every local snapshot: per playlist, all snapshot ids with taken_at and track counts, plus nam Read snapshot_removed_tracks List only the tracks removed between an older and a newer snapshot of a playlist Snapshot guide: take_playlist Read snapshot_retention_plan Report which snapshots a keep-last-N (+ optional age cutoff) retention policy would keep or delete — never del Read snapshot_stats_report Compute stats for one snapshot: track count, unique URIs, duplicates, and the oldest/newest added_at dates Sna Read split_playlist Split a playlist into N chunks (new playlists). Quota: GET all + N POST /me/playlists + N POST items. Read split_playlist_by_count Split a playlist into N roughly-equal parts, each written to a NEW playlist named Read split_playlist_by_duration Split a playlist greedily into consecutive parts of a target runtime (e.g. 60-minute Read spotify_doctor Run read-only diagnostics: token presence/expiry, auth-time scopes vs write tools enabled by active toolsets, Read spotify_uri_stats Summarise Spotify references by validity, form, or entity kind using the shared parser. Read statsfm_charts_users Rank a stats.fm user Read statsfm_friend_count How many friends a stats.fm user has Read statsfm_friends List a stats.fm user Read statsfm_genre_artists Artists tagged with a genre in the stats.fm catalog Read statsfm_jukebox Propose replacements and appends for a playlist from a stats.fm user Read statsfm_now_playing What a stats.fm user is playing right now (null when idle) Read statsfm_recaps Year-in-review recap: stream totals and catalog breadth for one calendar year Read statsfm_recent_streams A stats.fm user Read statsfm_records_artists Record-holding artists of a stats.fm user (longest streaks, top milestones) Read statsfm_search Search the stats.fm catalog (tracks, artists, albums, playlists, users) Read statsfm_streams_stats Aggregate listening stats (totals, percentiles, catalog cardinality) for a user, optionally windowed Read subscribe_to_show Save one or more shows to your library via PUT /me/library (the Feb 2026 replacement for the removed PUT /me/s Read surprise_me surprise_me Read tag_listening_session Tag a listening session (auto-detected 30-min gaps from recently-played) with labels. Read take_playlist_snapshot Capture a live playlist’s items (uri, name, added_at) into a timestamped local JSON snapshot file; dry_run=tru Read taste_checkpoint_diff Diff two saved taste checkpoints: new entrants, drop-offs, genre drift and Jaccard Read taste_daily_brief Yesterday (or a given date) in brief: top-3 tracks, 2 revival picks, novelty share vs the lifetime core. Read- Read taste_diamond_rotation Diamond-mining rotation: mid-tier lifetime tracks (rank ~20–60) absent from recent streams — deep cuts to re-p Read taste_era_playlist Era window → representative track list: pick a listening era and get its playlist spec. Read-only, no auth. Read taste_forgotten_bangers Forgotten-bangers playlist spec: lifetime tops missing from the recent sample, ranked with a revival pick. Rea Read taste_genre_bridge Genre-bridge playlist spec: picks spanning two genres with evidence + risk per pick. Read-only, no auth. Read taste_listening_clock Listening-clock summary: day-part split (UTC), peak window, and a sequencing note for playlist order. Read-onl Read taste_novelty_loyalty Loyalty-vs-novelty report: top-5 share, recent-outside-core share, and a verdict (comfort / balanced / explore Read taste_obsession_ladder Obsession ladder: artists ranked by stream share, each with an exposure tier. Read-only, no auth. Read taste_revival_queue Revival queue builder: ordered re-listen queue from forgotten favorites + dormant-affinity artists, each with Read taste_shift_report Compare short_term vs long_term top artists+tracks: rising/falling + Jaccard similarity, null when both window Read taste_to_playlist Taste profile → playlist: blend lifetime tops with recent streams into a track list. Read taste_weekly_recap Week-in-review brief: stream count, top artists/tracks of the window, busiest day, novelty share. Read-only, n Read title_length_outliers Statistical outliers in saved-track title length (characters): mean/median plus the longest and shortest title Read toolset_report Report the active toolsets and registration modules, plus the live registered tool count — answers Read top_artist_leaderboard Score top artists across all three time windows with recency-weighted points (short×3, medium×2, long×1) and r Read top_artist_ranking_delta Show how each top artist’s rank moved between two time windows (climbers first; default compares short_term ag Read top_artists_by_range Top artists per time window; with time_range Read top_genre_census Build a weighted genre census from your top artists (rank-weighted across the three windows; genres resolved p Read top_track_leaderboard Score top tracks across all three time windows with recency-weighted points (short×3, medium×2, long×1) and ra Read top_track_ranking_delta Show how each top track’s rank moved between two time windows (climbers first; default compares short_term aga Read track_album_bundle Context card for one track: the track plus its full album metadata and the album\ Read track_enrichment_batch Up to 50 track IDs → enriched rows: album release date, label and artist genres joined back onto each track. Read track_release_origin Find where a track first appeared: walks an artist\ Read track_rotation_report Report how many times each track appears in recently-played history and bucket them into heavy/regular/light r Read undo_preview Dry-run for undo_mutation: shows exactly what a receipt-driven revert WOULD do (diff of Read unplayable_saved_check Audit your saved library for tracks the API marks unplayable (is_playable false or a restrictions block) and s Read verify_receipt verify_receipt Read volume_report Read-only volume snapshot across all devices, including sidecar presets vs live deltas — Read watch_artists Add artists to a watchlist sidecar for new-release polling. File ~/.spotify-mcp/artist-watchlist.json (SPOTIFY Read weekday_heatmap Plays bucketed by UTC weekday × daypart (morning/afternoon/evening/night) — the hour-of-day histogram counterp Read weekday_listening_report Break recently-played history down by UTC weekday (plays, unique tracks, unique artists, busiest day; Mon→Sun Read weekly_rotation_report Track UTC day-by-day rotation from recently-played history: plays, unique tracks/artists, and first-heard-this Read whats_new Personal new-releases radar: derive what Read where_was_i Orient yourself in an audiobook: matches current playback against the fetched chapter list (fetch-all cap may Read wind_down_status Read the current or most recent wind-down progress, including per-step failures Read year_explorer Time-machine view of one release year built from your own library plus a small catalog supplement: saved Read year_in_review Spotify-Wrapped substitute: top tracks/artists across all top-list time ranges, decade
OTHER 1 tools

Related servers

Other MCP servers with similar tools — same risk classification, starter policies for each.

Questions about Spotify

Can an AI agent delete data through the Spotify MCP server? +

Yes. The Spotify server exposes 29 destructive tools including archive_played_episodes, cancel_wind_down, clean_backup_artifacts. These permanently remove resources with no undo. PolicyLayer blocks destructive tools by default so they never reach the upstream server.

How do I prevent bulk modifications through Spotify? +

The Spotify server has 107 write tools including add_to_playlist, add_to_queue, album_representative_plan. Set a rate limit in your policy -- for example, 10 calls per hour prevents an agent from making more than 10 modifications per hour. PolicyLayer enforces this at the gateway, before calls reach Spotify.

How many tools does the Spotify MCP server expose? +

538 tools across 5 categories: Destructive, Execute, Financial, Read, Write. 375 are read-only. 163 can modify, create, or delete data.

How do I enforce a policy on Spotify? +

Register the Spotify MCP server in PolicyLayer, apply the suggested rules above (adjust the limits to your use case), and point your AI client at the PolicyLayer proxy URL instead of the server directly. Your agents keep the same tools; PolicyLayer evaluates every call against policy before it executes. Nothing to install, live in minutes.

Enforce policy on every Spotify tool call.

Deterministic rules across all 538 Spotify tools. Per-identity grants. Full audit log. Live in minutes. Nothing to install.

Instant setup, no code required.

538 Spotify tools catalogued and risk-classified — across an index of 46,500+ MCP servers.

// WHERE THIS COMES FROM

These policies come from Spotify's registry record.

The record behind this page: verified identity, auth posture, risk grade, every tool classified, recommended policy — re-checked continuously.

Teams ship this data inside their own products. See what a licence covers →

// GET IN TOUCH

Have a question or want to learn more? Send us a message.

Message sent.

We'll get back to you soon.