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

Spotify

544 tools. 168 can modify or destroy data without limits.

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

Last updated:

168 can modify or destroy data
376 read-only
544 tools total

Community server · catalogue entry checked 31/08/2026

How to control Spotify ↓

What Spotify exposes to your agents

Read (376) Write / Execute (137) Destructive / Financial (31)
Critical Risk

The most dangerous Spotify tools

168 of Spotify's 544 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:

Block financial tools by default
{
  "transfer_playback": {
    "deny_if": [
      {
        "conditions": [],
        "on_deny": "Requires human approval."
      }
    ]
  }
}

Financial tools should be explicitly enabled per use case, not open by default.

Deny destructive operations
{
  "cancel_wind_down": {
    "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 544 Spotify tools

DESTRUCTIVE 29 tools
Destructive cancel_wind_down Cancel the in-process wind-down ramp, if one is running Destructive dedupe_spotify_uris Remove duplicate Spotify references from a list, preserving first-seen order, comparing canonical URI forms wh Destructive delete_playback_bookmark Delete one captured playback bookmark file from the local backup dir. Preview by default — pass dry_run=false Destructive delete_playlist_snapshot Delete one local playlist snapshot file; dry_run=true (default) only reports what would be removed Destructive delete_scene Delete a saved playback scene from the local sidecar Destructive playlist_dedupe_advanced Remove duplicate items from a playlist, matching by URI (exact copies) OR by track name Destructive playlist_exclude_artists Remove every track by one or more artist IDs from a playlist — the Destructive playlist_filter_runtime Keep only items whose duration falls inside a window (e.g. min_sec 120 → drop intros/interludes; Destructive playlist_keep_artist Inverse filter: keep ONLY tracks by one artist in a playlist and drop everything else. 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 (match by artist name, case-insensitive, Destructive playlist_subtract Remove tracks of B..N from A. Quota: 🟢 N GETs + DELETE or PUT. Destructive prune_old_snapshots Delete old local snapshots, keeping the newest N per playlist and optionally dropping those older than a cutof Destructive queue_playlist Queue all tracks from a playlist/album/artist URI in order (cap 200). mode=append adds to end; mode=replace is 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). 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 (DELETE /me/episodes) after cross-checking which are Destructive remove_saved_items Legacy per-type variant (kept for grandfathered app credentials that lack unified /me/library access). Prefer Destructive remove_saved_shows Bulk-remove shows from your library (DELETE /me/shows) after cross-checking which of the Destructive remove_unavailable_playlist_items Remove unavailable (null track) items from a playlist — actionable companion to playlist_health_check. Targets Destructive sleep_timer Keep music playing and auto-pause after N minutes: registers an in-process timer (cancel-safe; calling again r Destructive tag_management Declare or retract genre tags for an artist in your local sidecar (~/.spotify-mcp/genre-tags.json), which libr Destructive taste_checkpoint_diff Diff two saved taste checkpoints: new entrants, drop-offs, genre drift and Jaccard Destructive undo_mutation Undo a specific mutation by receipt ID. Inverts: playlist_items add→remove, library save→remove. Non-reversibl Destructive unpin_playlist Unfollow (unpin) a playlist. DELETE /playlists/{id}/followers. Supports dry_run and elicitation for bulk use. Destructive volume_ramp Generic volume ramp to a target percent over N minutes (up OR down, step-controlled, optional end-state pause/
EXECUTE 20 tools
Execute artistwatch_new_additions Watches your FOLLOWED artists for new material: walks /me/following, probes each artist\ Execute base62_to_uri Reinterpret a base62 ID string as a Spotify entity ID and build the full spotify: URI for a given kind, offlin Execute batch_parse_spotify_uris Parse a batch of Spotify references into kind/ID parts in one local pass — no network calls; one result row pe Execute collab_mix_from_followed Build a collaborative-style mix playlist from your FOLLOWED artists\ Execute jump_to_chapter Start playing a specific audiobook chapter (1-based number) by resuming the audiobook context at that chapter. Execute listening_session_report Report a listening session (or the most recent one when no id is given): duration, start/end snapshots and clo Execute listening_session_start Start a local listening-session log: captures the current playback snapshot into a session file under the back Execute new_music_from_saved_artists Newest releases across the artists you follow (and optionally those in your saved albums), sorted by release d Execute new_music_from_top_artists Fresh-music digest from YOUR listening: probes the latest release of each of your top artists (from Execute parse_spotify_uri Parse a single spotify: URI into its entity kind and ID parts without any network call; reports validity and a 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 playlist_slice Copy a slice of one playlist — positions start..end, first/last N, or an added-at date Execute playlist_table_of_contents Build a table of contents for a playlist: totals, runtime, and Execute shows_without_new_episodes Find saved shows with no episode released inside the lookback window ( Execute spotify_doctor Run local diagnostics: token presence/expiry, auth-time scopes vs write tools enabled by active toolsets, Prem Execute start_podcast_session Plan a podcast session (see plan_podcast_session) and start it on a device. Limitation: Spotify cannot apply r Execute top_genre_census Build a weighted genre census from your top artists (rank-weighted across the three windows; genres resolved v Execute undo_preview Dry-run for undo_mutation: shows exactly what a receipt-driven revert WOULD do (diff of Execute whats_new Personal new-releases radar: derive what
WRITE 117 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_device_presets Apply all stored per-device volume presets via PUT /me/player/volume. Write apply_scene Apply a saved scene: resolve its device hint, transfer playback, then set volume/shuffle/repeat and start the Write apply_snapshot_changes Execute a merge plan on the live playlist (replay the changes between two snapshots); dry_run=true (default) o Write apply_volume_plan Set one target volume level across all (or selected) Spotify devices via per-device PUT /me/player/volume. Pre Write archive_played_episodes Remove fully-played episodes from your episode library in bulk (checks resume_point.fully_played). Batch DELET 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 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 episode_resume Jump straight back to the newest (or a named) episode bookmark: transfer + play with position + seek (2-3 writ 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_artists Follow one or more artists (1–50 IDs). Requires user-follow-modify. Write front_to_back_plan Full front-to-back listening plan for one album: ordered track listing with cumulative start times and Write handoff Move playback to another device preserving the current track and play position (and optionally set the target Write import_from_sidecar Additive restore from a portability sidecar (library.json / playlists.json): re-adds missing saved items and c 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 adds to existing stores; overwrite replaces t 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_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 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 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 mute Set volume to 0 while remembering the previous level in the sidecar — one word beats volume_step ×N. unmute re Write open_url_to_spotify_uri Convert an open.spotify.com URL (including /embed/ forms with ?si= tracking params) into a canonical spotify: Write pin_playlist Follow (pin) a playlist to your library. PUT /playlists/{id}/followers. Write plan_podcast_session Greedy-pack your saved podcast episodes into a listening session of a given length. Episodes play their remain Write plan_volume_level_across_devices Plan setting every (volume-capable) Spotify device to one target volume level — returns the exact per-device P Write play_on Play a context/uris/search query on a named device (resolves device name → id via GET /me/player/devices, then 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_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_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 (ch 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 queue_replace_via_playlist Honest no-clear-endpoint workaround to replace the live queue: snapshot it, optionally filter (drop dupes / ke Write quick_save_now One-call 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_snapshot. Adds only what is missing: Write restore_playback_state Restore a saved playback state snapshot (seeks, shuffle/repeat, queue context) to a device. 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 resume_playback_position Resume a captured playback bookmark: transfer playback to the bookmarked device and seek to the bookmarked pos 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 (PUT /me/episodes) — previews a PLAN with episode names by Write save_items Legacy per-type variant (kept for grandfathered app credentials that lack unified /me/library access). Prefer 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 Create or update a digest playlist from the latest show_new_episodes radar (auto-save helper). Write save_smart_playlist_rule Persist a smart-playlist rule to the local sidecar for later refresh (mirrors backup sidecar pattern). 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 schedule_wind_down Ramp playback volume down to a floor over N minutes (stepping every step_minutes), then pause. Runs in-process Write seek_relative Relative seek — forward/back by delta_ms from current progress (GET /me/player then PUT /me/player/seek, clamp 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 set_volume Set playback volume (0–100) 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). Preview by d Write spotify_uri_to_open_url Convert a spotify: URI (or bare ID + kind) into its https://open.spotify.com share URL locally, stripping noth Write stale_saved_shows_plan Build a PLAN for pruning saved shows that have published nothing within the staleness Write switch_device Transfer playback to a device by fuzzy name or sidecar label — pure handoff, no content args (complements play Write taste_checkpoint Save a snapshot of your current top artists/tracks/genres to a dated sidecar slot for Write unfollow_artists Unfollow one or more artists (1–50 IDs). Requires user-follow-modify. Set dry_run=true to preview. Write unmute Restore the volume level remembered by mute (falls back to 50% if nothing remembered). Quota: 🟢 1 write (side Write update_playlist Update a playlist Write upload_playlist_cover Replace a playlist Write volume_step Nudge volume up/down by a step (reads current volume via GET /me/player, then PUT /me/player/volume clamped 0- Write week_in_review_playlist Create a
READ 376 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 over several-artists). 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 (hour-of-day histogram plus daypart split; defaults to your most-pla 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) — the 45-rpm history in one table. Q 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 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. Quota: 🟡 2 GETs ( 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 (GET /browse/categories/{id} + /playlists (+ /playlists Read canonicalize_spotify_uri Canonicalise a batch of Spotify references in one local pass: scheme, known kind, 22-char base62 ID, tracking Read capture_playback_position Bookmark the current track, playback position and device to a local JSON file under the backup dir so it can b 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 (GET /me/episodes/contains) — 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 (fans out one call per playlist, concurrency 5). Quota: 🟢 1–50 GETs. Read check_saved_items Legacy per-type variant (kept for grandfathered app credentials that lack unified /me/library access). Prefer Read classify_spotify_uris Classify each reference in a batch: reference form, entity kind, canonical-form verdict, and per-row issues — 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 two playlists covers: URL equality, dimensions. Quota: 🟢 2 GETs. Read continue_last Resume the most recent checkpoint without knowing its name (sidecar lookup by saved_at). Pairs with checkpoint Read count_uris_by_type Count how many references in a batch belong to each entity kind (track, album, artist, …) — a local tally, no 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 deep_cuts_finder Surface deep cuts: album tracks past position 2 that are neither the title track nor released as singles — the 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 describe_queue Enriched queue view: currently playing + up-next with durations, total remaining, and source context label. 🟢 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_playlist_snapshots Diff two local snapshots of a playlist and report every added and removed track between them Read diff_playlists Compare two playlists fully paged: tracks only in A, only in B (by track ID), and tracks present in both but a 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 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 extract_spotify_id Extract the bare 22-char entity ID from any Spotify reference — URI, open.spotify.com URL (embed/intl forms ok 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: flags the same recording Read find_duplicate_spotify_uris List duplicate Spotify references in a batch with counts and positions, comparing canonical URI forms — comput 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 Read find_duplicates_in_playlist Find duplicate tracks in a playlist: repeated URIs plus relinked copies of the same song appearing under diffe 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 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 Read following_analytics Analytics over followed artists: genre/popularity rollups via batch /artists?ids= enrichment. Quota: 🟢 GET /m Read format_spotify_uri Format an entity kind + ID pair into a canonical spotify: URI locally; validates the ID shape and returns null Read genre_dive_search Search artists by genre keyword (e.g. Read genre_trends_over_time How your taste shifts — per-period top genres via artist genres/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: 🟢 single. 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_categories List Spotify browse categories (GET /browse/categories) Read get_category Get a single Spotify browse category by ID (GET /browse/categories/{id}). Quota: 🟢 single. Read get_category_playlists Get playlists for a browse category (GET /browse/categories/{id}/playlists) 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 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 all artists the user follows (cursor-based pagination) 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 Get the current playback queue Read get_queue_snapshot Return the full upcoming queue with per-track runtime and the total queue runtime. Read-only. 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: total counts for tracks/albums/shows/episodes/audiobooks/playlists via limit=1 reads — 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_episodes List a podcast show 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 local portability/backups for files matching a query (filename substring). 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 is_valid_spotify_uri Boolean validity check for a single Spotify reference — true only for well-formed spotify: URIs with a 22-char Read join_uri_list Join an array of Spotify references into a single delimited string — comma, semicolon, newline, or a custom gl Read label_discography_explorer Group an artist\ Read label_explorer Census of record labels across your saved albums (label comes from chunked full-album fan-in); pass a label 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 completion & consolidation analysis over your liked tracks: flags Read library_snapshot_diff Diff two portability/library sidecar JSON files (library.json or playlists.json): added/removed counts + sampl Read library_to_playlist Export your saved tracks (or saved albums\ Read library_value_summary One mega-report over your saved library: totals, runtime, explicit/local/unplayable counts, collab + featuring Read list_all_chapters List every chapter of an audiobook in one complete table (index, name, duration, resume point). Walks all page Read list_backups List previous library backups (newest first) with path, creation date, size, and the _meta.counts summary from Read list_device_presets List stored device name labels and volume presets. Read list_playback_bookmarks List all captured playback bookmarks stored locally under the backup dir, newest last. Read-only. 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 Profile when you listen by local hour (24-bucket histogram plus daypart totals and peak hour) from recently-pl Read listening_clock_heatmap Render a weekday × hour listening heatmap from recently-played history with the peak cell highlighted (default Read listening_consistency_score Score how consistent your listening is (0-100) from recently-played history: active-day coverage, hour spread, 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) and reports peak/quiet win 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_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). Quota: GET /me/playe 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 make_spotify_uri Construct a spotify: URI from kind + ID with strict validation — rejects wrong-length IDs and unknown kinds be 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 daypart × familiarity buckets (fresh tracks vs staples from your top tracks 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 normalize_spotify_uri Normalise any accepted Spotify reference form (URI with extra segments, URL with tracking params, bare ID) int Read now_playing_history Merged listening stream — recently-played plus currently-playing item on top (deduped). 🟡 (2 reads). Read-onl 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 pause Pause playback on the active device Read pause_everywhere Pause every live Connect device (attempts PUT /me/player/pause per non-restricted device) — kills the Read peek_next Queue lookahead — next N tracks with durations and total runway. Right-sized via max_results. 🟢 (1 read). Rea Read play_from_search Search Spotify by name and immediately play the best match. Works for songs and podcast episodes — no URI need 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. 🟢/🟡 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) Read playlist_history List your local backup snapshots (from backup_now): file name, created timestamp, and the 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/popularity. Quota: 🟢 GET all + PUT/POST. 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_strip_episodes Purify a playlist after collab drift: strip every podcast EPISODE (or every TRACK) with one 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_trim Trim playlist to N items (keep first/last/random). Quota: 🟢 GET all + PUT/POST. 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). Quota: 🟢 N GETs + PUT/POST. Read playlist_union_preview Preview the union of 2–10 playlists as a first-seen-ordered sequence, with per-playlist Read predict_next_tracks Predict the next N tracks that will play from the queue, each with its own runtime and the cumulative time unt Read publisher_portfolio Per-publisher portfolio across your saved shows: show count, listed episode totals, and Read queue_duplicate_check Check the upcoming queue for duplicate tracks/episodes and report each duplicate group with its positions and Read queue_profile Composition profile of the current queue: unique artists, albums, track-vs-episode mix, longest consecutive bl Read queue_runtime_report Compute runtime statistics for the upcoming queue: total, average, longest and shortest items plus time remain 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) Read receipt_lookup Find mutation receipts by id, date range or affected URI — closes the receipts loop Read refresh_smart_playlist Refresh a persisted smart playlist: rebuild candidates from the stored rule and recreate the playlist content. 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. 🟢. Read room_level Level the room: read the active device volume and apply the same percent to every other live device. Quota: 🟡 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_now): 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 your saved tracks into a FRESH playlist — an instant rediscovery 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. Read search_history_stats Analytics over the local search-history sidecar: top queries, type breakdown, recency. Quota: 🟢 local only (n Read search_market_diff Same query run in two markets with the result sets diffed — availability/regional insight in one card. Read search_rerun Re-execute a stored search by history id via GET /search. 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 (client-side filter over full item walk). Quota: 🟢 GET /playlists/{id}/i Read seek Seek to a position in the current track 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 saved-episode and recently-played 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 shuffle_state_report Report the current shuffle and repeat state, the device they apply to and the active context. Read-only. Read skip_n Advance N tracks at once via N sequential POST /me/player/next calls. Quota: 🔴 N writes (1-20, one call per s Read skip_next Skip to the next track in the queue or context Read skip_previous Skip to the previous track. If more than 3 seconds in, restarts the current track first. Read snapshot_added_at_report Report when the tracks in a snapshot were added to the playlist, bucketed by month (YYYY-MM) 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 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 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 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 Read sort_uris_by_kind Sort Spotify references into deterministic groups by entity kind (track, album, artist, playlist, show, episod 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 split_uri_list Split a delimited string of Spotify references into a clean array — accepts comma, semicolon, whitespace, or n Read spotify_uri_kind Report the entity kind of a single Spotify reference (uri/url/bare ID) locally, or null when the kind segment Read subscribe_to_show Save one or more shows to your library (PUT /me/shows) — previews a deterministic PLAN by 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_shift_report Compare short_term vs long_term top artists+tracks: rising/falling + Jaccard similarity. Quota: 4× GET /me/top 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 for each time window with rank deltas (short vs long). Quota: up to 3× GET /me/top/artists. 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_last_mutation Undo the most recent reversible mutation (receipt FIFO). Same inversion semantics as undo_mutation. Supports d Read unplayable_saved_check Audit your saved library for tracks the API marks unplayable (is_playable false or a restrictions block) and s Read unsave_orphan_tracks Find saved tracks that appear in no playlist (orphans) and optionally unsave them. Quota: 🟡 walks library + a Read unsubscribe_from_show Remove ONE saved show from your library (DELETE /me/shows) after confirming what it is — Read uri_kind_stats Aggregate statistics over a batch of Spotify references: counts per form, per kind, share percentages, and the Read uri_namespace_census Census of a batch of Spotify references grouped by reference form (uri/url/id/invalid) and by entity kind — a Read uri_shorthand_expand Expand shorthand Spotify refs like Read uri_to_base62 Strip a spotify: URI (or URL) down to its raw base62 ID string, locally; null when the reference has no extrac Read validate_spotify_uri Validate a Spotify reference against the URI grammar and 22-char base62 ID rule locally, returning a field-by- Read verify_receipt Verify that a previous mutation actually landed on Spotify by looking up its receipt Read volume_report Read-only volume snapshot across all devices, including sidecar presets vs live deltas — Read watch_artists Add artists to a local watchlist sidecar for new-release polling Read weekday_heatmap Plays bucketed by weekday × daypart (morning/afternoon/evening/night) — listening_heatmap is hour-of-day; this Read weekday_listening_report Break recently-played history down by weekday (plays, unique tracks, unique artists, busiest day; Mon→Sun orde Read weekly_rotation_report Track day-by-day rotation from recently-played history: plays, unique tracks/artists, and first-heard-this-win Read where_was_i Orient yourself in an audiobook: matches current playback against the full chapter list and reports which chap 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

Related servers

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

Questions about Spotify

Can an AI agent move money through the Spotify MCP server? +

Yes. The Spotify server exposes 2 financial tools including transfer_playback, transfer_playback_with_state. Without a policy, an autonomous agent can call these with no spend caps, no rate limits, and no approval flow. PolicyLayer lets you block financial tools by default, require human approval, or set per-tool rate limits — enforced on every call.

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

Yes. The Spotify server exposes 29 destructive tools including cancel_wind_down, dedupe_spotify_uris, delete_playback_bookmark. 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 117 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? +

544 tools across 5 categories: Destructive, Execute, Financial, Read, Write. 376 are read-only. 168 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 544 Spotify tools. Per-identity grants. Full audit log. Live in minutes. Nothing to install.

Instant setup, no code required.

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