LeashIndex Get the report

Index / storage

Spotify MCP

io-github-novalux12-spotify-mcp-server declares 131 capabilities across 131 tools, with 2 critical issues.

100/100 exposureHigh exposure

Manifest recorded 2026-10-13 from tools/list answered by the npm package @novalux12/spotify-mcp@3.1.1 (published to npm as @novalux12/spotify-mcp, listed in the official MCP registry as io.github.NovaLux12/spotify-mcp-server 3.1.1), run in an isolated container with no network access and placeholder credentials. The date changes only when the manifest does. Not verified by a maintainer.

Issues

These describe what this server's manifest declares. A product can provide controls that MCP has no way to express — token revocation, an admin console, audit logs — and this page cannot see them. The absence of a declaration is not evidence that a control is absent.

critical · no-revocation · All 131 tools

131 of 131 tools declare no way for the customer to switch them off once granted. This applies to every tool because MCP has no field in which to declare a revocation mechanism; the product may provide one outside MCP that a manifest cannot show.

critical · irreversible-uncapped · 21 of 131 tools

21 tools are classified as irreversible and declare no limit.

high · no-expiry · All 131 tools

131 of 131 tools declare no expiry. This applies to every tool because MCP has no field in which to declare an expiry; the product may provide one outside MCP that a manifest cannot show.

high · no-audit-trail · All 131 tools

131 of 131 tools declare no record of their actions that the customer can read. This applies to every tool because MCP has no field in which to declare an audit requirement; the product may provide one outside MCP that a manifest cannot show.

high · uncapped-write · 51 of 131 tools

51 tools can modify data and declare no limit.

low · uncapped-read · 59 of 131 tools

59 tools can read data and declare no limit.

Declared capabilities

How each tool was read. declared means the server's own annotation said so — self-reported and unverified. inferred is from the tool's name. assumed means nothing indicated either way.

ToolRead asBasis
searchread declared
get_saved_tracksread declared
get_saved_albumsread declared
get_saved_showsread declared
get_saved_episodesread declared
save_to_librarywrite assumed
remove_from_librarydestructive declared
get_saved_countsread declared
search_saved_albumsread declared
search_saved_showsread declared
search_saved_episodesread declared
search_saved_audiobooksread declared
check_in_libraryread declared
search_saved_tracksread declared
get_now_playingread declared
get_currently_playingread declared
play_from_searchread inferred
playwrite assumed
pausewrite assumed
skip_nextwrite assumed
skip_previouswrite assumed
seekwrite assumed
set_volumewrite inferred
set_shufflewrite inferred
set_repeatwrite inferred
get_queueread declared
add_to_queuewrite inferred
get_devicesread declared
transfer_playbackwrite inferred
get_followed_artistsread declared
check_following_artistsread declared
following_analyticswrite assumed
get_user_profileread declared
get_user_playlists_by_idread declared
get_user_playlistsread declared
get_playlistread declared
get_playlist_itemsread declared
get_playlist_coverread declared
upload_playlist_coverwrite inferred
create_playlistwrite inferred
add_to_playlistwrite inferred
remove_from_playlistdestructive declared
update_playlistwrite inferred
reorder_playlist_itemswrite inferred
replace_playlist_itemsdestructive declared
find_duplicates_in_playlistread declared
remove_duplicate_playlist_itemsdestructive declared
clean_all_playlistsdestructive declared
check_playlist_followingread declared
clone_playlist_coverwrite assumed
compare_playlist_coversread declared
get_playlist_snapshotread declared
playlist_collab_togglewrite assumed
playlist_sortwrite inferred
playlist_shufflewrite assumed
playlist_reversewrite assumed
playlist_unionwrite assumed
playlist_subtractdelete inferred
playlist_symmetric_differenceread inferred
playlist_trimwrite assumed
merge_playlistswrite inferred
diff_playlistsread declared
overlap_playlistsread inferred
batch_add_to_playlistwrite inferred
copy_playlistwrite assumed
move_items_between_playlistswrite inferred
follow_playlistwrite assumed
unfollow_playlistdestructive declared
pin_playlistwrite assumed
unpin_playlistdestructive declared
playlist_template_applywrite inferred
spotify_doctorread declared
list_accountsread declared
switch_accountdestructive declared
find_toolread declared
inspect_toolread declared
toolset_reportwrite assumed
call_tooldestructive declared
enable_toolsetread inferred
expand_mood_to_queriesread inferred
save_discover_weeklydelete inferred
save_release_radardelete inferred
export_library_jsonwrite assumed
export_followed_artistswrite assumed
export_profile_statewrite assumed
import_profile_statedelete inferred
export_listening_historyread inferred
export_all_playlistswrite assumed
library_snapshot_diffwrite assumed
history_searchread declared
import_from_sidecarwrite assumed
library_genre_reportread declared
filter_by_genreread declared
tag_managementwrite assumed
library_hygieneread inferred
show_new_episodesread declared
find_duplicate_saved_tracksread declared
plan_podcast_sessionread declared
start_podcast_sessionwrite assumed
backup_firstwrite inferred
backup_libraryread declared
list_backupsread declared
delete_backupdestructive declared
clean_backup_artifactsdestructive declared
restore_library_snapshotread inferred
undo_mutationdestructive declared
undo_last_mutationdestructive declared
verify_receiptread declared
whats_newwrite assumed
search_deepread declared
save_scenewrite assumed
list_scenesread declared
delete_scenedestructive declared
apply_scenewrite assumed
schedule_wind_downread inferred
wind_down_statusread inferred
cancel_wind_downdelete inferred
grow_playlistwrite assumed
export_playlistread inferred
import_playlistwrite assumed
create_smart_playlistwrite inferred
search_within_playlistread declared
search_history_statsread declared
audiobook_progresswrite assumed
unsave_orphan_tracksdestructive declared
playlist_to_librarywrite assumed
followed_playlists_auditwrite assumed
get_playlist_added_datesread declared
split_playlistwrite assumed
find_duplicate_tracks_across_playlistsread declared
remove_from_library_by_playlistdestructive declared
Answering this question about your own agent? The self-serve stack report applies the same reading to your own stack or server and gives you a dated document you can hand to a customer's security review. It is generated in your browser, with nobody to wait for. Buying one does not change this page, its score or its place in the index — see Independence.
Maintain this server? If this page misreads your manifest, or your server has changed, submit its current tools/list response and it will be re-scored and dated. Corrections are published alongside the original, not in place of it.