Critical-risk tools in Spotify
31 of the 544 tools in Spotify are classified as critical risk. This page profiles those tools specifically, with recommended policy actions and the attack patterns that target them.
Every operation listed below is an action PolicyLayer recommends controlling at the transport layer. Open any tool to see the full profile, risk score, and YAML policy snippet.
Tools at critical risk
-
cancel_wind_downDestructiveCancel the in-process wind-down ramp, if one is running
-
dedupe_spotify_urisDestructiveRemove duplicate Spotify references from a list, preserving first-seen order, comparing canonical URI forms where possible — local, no network.
-
delete_playback_bookmarkDestructiveDelete one captured playback bookmark file from the local backup dir. Preview by default — pass dry_run=false to delete.
-
delete_playlist_snapshotDestructiveDelete one local playlist snapshot file; dry_run=true (default) only reports what would be removed
-
delete_sceneDestructiveDelete a saved playback scene from the local sidecar
-
playlist_dedupe_advancedDestructiveRemove duplicate items from a playlist, matching by URI (exact copies) OR by track name
-
playlist_exclude_artistsDestructiveRemove every track by one or more artist IDs from a playlist — the
-
playlist_filter_runtimeDestructiveKeep only items whose duration falls inside a window (e.g. min_sec 120 → drop intros/interludes;
-
playlist_keep_artistDestructiveInverse filter: keep ONLY tracks by one artist in a playlist and drop everything else.
-
playlist_keep_onlyDestructiveInverse removal: keep only matching items (by uri / artist / type / query) and drop
-
playlist_remove_artistDestructiveRemove every track by one artist from a playlist (match by artist name, case-insensitive,
-
playlist_subtractDestructiveRemove tracks of B..N from A. Quota: 🟢 N GETs + DELETE or PUT.
-
prune_old_snapshotsDestructiveDelete old local snapshots, keeping the newest N per playlist and optionally dropping those older than a cutoff; dry_run=true (default) only reports what would go
-
queue_playlistDestructiveQueue all tracks from a playlist/album/artist URI in order (cap 200). mode=append adds to end; mode=replace is not supported — Spotify has no queue-clear endpoint.
-
remove_duplicate_playlist_itemsDestructiveRemove duplicate items from a playlist: keeps the first occurrence of each track and removes
-
remove_from_libraryDestructivePreferred. Accepts the widest URI mix (track, album, episode, show, audiobook, user, playlist) in one request. Remove one or more items from the user
-
remove_from_library_by_playlistDestructiveRemove from Liked Songs any tracks that also appear in a given playlist. Quota: 🟡 2 GETs + DELETE (chunked).
-
remove_from_playlistDestructiveRemove tracks or episodes from a playlist. Max 100 entries per call.
-
remove_playlist_rangeDestructiveDelete a positional range of a playlist (0-based start, EXCLUSIVE end; negative values
-
remove_saved_episodeDestructiveRemove episodes from your library (DELETE /me/episodes) after cross-checking which are
-
remove_saved_itemsDestructiveLegacy per-type variant (kept for grandfathered app credentials that lack unified /me/library access). Prefer remove_from_library. Remove one or more items from the user
-
remove_saved_showsDestructiveBulk-remove shows from your library (DELETE /me/shows) after cross-checking which of the
-
remove_unavailable_playlist_itemsDestructiveRemove unavailable (null track) items from a playlist — actionable companion to playlist_health_check. Targets only unavailable occurrences by position so healthy copies are pre...
-
sleep_timerDestructiveKeep music playing and auto-pause after N minutes: registers an in-process timer (cancel-safe; calling again replaces it) that fires PUT /me/player/pause on expiry. No fade — di...
-
tag_managementDestructiveDeclare or retract genre tags for an artist in your local sidecar (~/.spotify-mcp/genre-tags.json), which library_genre_report and filter_by_genre consume. add requires at least...
-
taste_checkpoint_diffDestructiveDiff two saved taste checkpoints: new entrants, drop-offs, genre drift and Jaccard
-
undo_mutationDestructiveUndo a specific mutation by receipt ID. Inverts: playlist_items add→remove, library save→remove. Non-reversible kinds return not reversible. Supports dry_run.
-
unpin_playlistDestructiveUnfollow (unpin) a playlist. DELETE /playlists/{id}/followers. Supports dry_run and elicitation for bulk use.
-
volume_rampDestructiveGeneric volume ramp to a target percent over N minutes (up OR down, step-controlled, optional end-state pause/play) — a superset of schedule_wind_down (which is down-only with f...
-
transfer_playbackFinancialMove playback to a different Spotify Connect device
-
transfer_playback_with_stateFinancialTransfer playback to another device while restoring the full state: same track, position, shuffle and repeat. Preview by default — pass dry_run=false to execute the transfer.
Attacks that target this class
Critical-risk tools in any server share these documented attack patterns. Each links to the full case and the defensive policy.