{"id":"f2a0d6cf-49a2-4c41-b7cf-07043b8ba066","entityType":"agent","slug":"clawhub-oomol-oo-spotify","name":"Spotify","canonicalUrl":"https://www.xpersona.co/agent/clawhub-oomol-oo-spotify","canonicalPath":"/agent/clawhub-oomol-oo-spotify","generatedAt":"2026-10-13T08:27:18.605Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T02:21:05.420Z","emptyReason":null},"description":"Spotify (spotify.com). Use this skill for ANY Spotify request — reading, creating, updating, and deleting data. Whenever a task involves Spotify, use this skill instead of calling the API directly.","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 955 downloads reported by the source. Last updated 10/12/2026.","installCommand":"clawhub skill install s1790xw8jww1c6hgm8aqy9q25187t1rg:oo-spotify","sourceUrl":"https://clawhub.ai/oomol/oo-spotify","homepage":"https://clawhub.ai/oomol/skills/oo-spotify","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/oomol/oo-spotify","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/oomol/skills/oo-spotify","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":60,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Spotify technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-12T02:21:05.420Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T02:21:05.420Z","emptyReason":null},"stars":null,"forks":null,"downloads":955,"likes":null,"task":null,"library":null,"packageName":null,"latestVersion":"1.0.4","tractionLabel":"955 downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T02:21:05.357Z","emptyReason":null},"lastUpdatedAt":"2026-10-12T02:21:05.420Z","lastCrawledAt":"2026-10-12T02:21:05.357Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-13T02:21:05.357Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.4","createdAt":"2026-09-20T03:37:39.736Z","changelog":"- Operate Spotify through the OOMOL-connected account using the `oo` CLI. - Search and retrieve Spotify artists, albums, tracks, playlists, shows, episodes, audiobooks, playback state, recommendations, and user libraries. - Manage playlists, saved content, follows, playback, queues, devices, volume, shuffle, repeat, and seeking. - Inspect live action schemas before constructing JSON payloads. - Require confirmation for state-changing actions and explicit approval for destructive operations. Source: `oomol-lab/skills@792ad44`","fileCount":3,"zipByteSize":4762},{"version":"1.0.3","createdAt":"2026-09-15T04:24:02.512Z","changelog":"- Operate Spotify through the OOMOL-connected account using the `oo` CLI. - Read, search, and inspect Spotify tracks, albums, artists, playlists, shows, episodes, audiobooks, playback, recommendations, and user libraries. - Create and manage playlists, saved content, follows, playback state, queues, volume, shuffle, repeat, and device transfers. - Fetch live action schemas before sending payloads for reliable input and output handling. - Require confirmation for state-changing actions and explicit approval for destructive operations. Source: `oomol-lab/skills@75bac03`","fileCount":3,"zipByteSize":4851},{"version":"1.0.1","createdAt":"2026-06-09T10:25:02.722Z","changelog":"- Operates Spotify through an OOMOL-connected account using the `oo` CLI, without exposing raw credentials. - Supports catalog lookup and search for tracks, albums, artists, shows, episodes, audiobooks, chapters, genres, markets, and playlists. - Reads personalized Spotify data including profile, playlists, saved library items, followed artists, top tracks/artists, queue, playback state, and recently played tracks. - Manages playlists and libraries with create, update, add, save, follow, unfollow, remove, and reorder actions. - Controls playback across devices, including play/resume, pause, skip, seek, shuffle, repeat, volume, queue, and transfer playback. - Documents safety rules for read, write, and destructive actions, with explicit confirmation required before state-changing operations. Source: `oomol-lab/skills@146ef20`","fileCount":3,"zipByteSize":4832},{"version":"1.0.0","createdAt":"2026-06-03T16:00:32.833Z","changelog":"- Introduces `oo-spotify`, an OOMOL skill for operating Spotify through a connected account via the `spotify` connector and `oo` CLI. - Provides 88 documented actions covering Spotify catalog lookup, search, recommendations, browse categories, albums, artists, tracks, shows, episodes, audiobooks, and chapters. - Supports user library workflows, including checking, saving, listing, and removing albums, tracks, shows, episodes, and audiobooks. - Enables playlist management, including creating playlists, reading playlist metadata and items, updating details, adding or removing items, reordering content, and managing follows. - Adds playback controls for current devices, queue, playback state, now playing, volume, repeat, shuffle, seek, pause, skip, transfer, and start/resume playback. - Documents safe execution patterns, including live schema inspection before each action and explicit confirmation requirements for state-changing or destructive operations.","fileCount":91,"zipByteSize":52500}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s1790xw8jww1c6hgm8aqy9q25187t1rg:oo-spotify","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s1790xw8jww1c6hgm8aqy9q25187t1rg:oo-spotify` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/oomol/oo-spotify before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-oomol-oo-spotify/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-oomol-oo-spotify/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-oomol-oo-spotify/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-oomol-oo-spotify/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-oomol-oo-spotify/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-oomol-oo-spotify/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-13T08:27:18.604Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-oomol-oo-spotify/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-oomol-oo-spotify/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-oomol-oo-spotify/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-oomol-oo-spotify/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-12T02:21:05.420Z","emptyReason":null},"readme":"Skill: Spotify\n\nOwner: oomol\n\nSummary: Spotify (spotify.com). Use this skill for ANY Spotify request — reading, creating, updating, and deleting data. Whenever a task involves Spotify, use this skill instead of calling the API directly.\n\nTags: latest:1.0.4\n\nVersion history:\n\nv1.0.4 | 2026-09-20T03:37:39.736Z | user\n\n- Operate Spotify through the OOMOL-connected account using the `oo` CLI.\n- Search and retrieve Spotify artists, albums, tracks, playlists, shows, episodes, audiobooks, playback state, recommendations, and user libraries.\n- Manage playlists, saved content, follows, playback, queues, devices, volume, shuffle, repeat, and seeking.\n- Inspect live action schemas before constructing JSON payloads.\n- Require confirmation for state-changing actions and explicit approval for destructive operations.\n\nSource: `oomol-lab/skills@792ad44`\n\nv1.0.3 | 2026-09-15T04:24:02.512Z | user\n\n- Operate Spotify through the OOMOL-connected account using the `oo` CLI.\n- Read, search, and inspect Spotify tracks, albums, artists, playlists, shows, episodes, audiobooks, playback, recommendations, and user libraries.\n- Create and manage playlists, saved content, follows, playback state, queues, volume, shuffle, repeat, and device transfers.\n- Fetch live action schemas before sending payloads for reliable input and output handling.\n- Require confirmation for state-changing actions and explicit approval for destructive operations.\n\nSource: `oomol-lab/skills@75bac03`\n\nv1.0.1 | 2026-06-09T10:25:02.722Z | user\n\n- Operates Spotify through an OOMOL-connected account using the `oo` CLI, without exposing raw credentials.\n- Supports catalog lookup and search for tracks, albums, artists, shows, episodes, audiobooks, chapters, genres, markets, and playlists.\n- Reads personalized Spotify data including profile, playlists, saved library items, followed artists, top tracks/artists, queue, playback state, and recently played tracks.\n- Manages playlists and libraries with create, update, add, save, follow, unfollow, remove, and reorder actions.\n- Controls playback across devices, including play/resume, pause, skip, seek, shuffle, repeat, volume, queue, and transfer playback.\n- Documents safety rules for read, write, and destructive actions, with explicit confirmation required before state-changing operations.\n\nSource: `oomol-lab/skills@146ef20`\n\nv1.0.0 | 2026-06-03T16:00:32.833Z | user\n\n- Introduces `oo-spotify`, an OOMOL skill for operating Spotify through a connected account via the `spotify` connector and `oo` CLI.\n- Provides 88 documented actions covering Spotify catalog lookup, search, recommendations, browse categories, albums, artists, tracks, shows, episodes, audiobooks, and chapters.\n- Supports user library workflows, including checking, saving, listing, and removing albums, tracks, shows, episodes, and audiobooks.\n- Enables playlist management, including creating playlists, reading playlist metadata and items, updating details, adding or removing items, reordering content, and managing follows.\n- Adds playback controls for current devices, queue, playback state, now playing, volume, repeat, shuffle, seek, pause, skip, transfer, and start/resume playback.\n- Documents safe execution patterns, including live schema inspection before each action and explicit confirmation requirements for state-changing or destructive operations.\n\nArchive index:\n\nArchive v1.0.4: 3 files, 4762 bytes\n\nFiles: skill-card.md (2015b), SKILL.md (11379b), _meta.json (129b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: oo-spotify\ndescription: \"Spotify (spotify.com). Use this skill for ANY Spotify request — reading, creating, updating, and deleting data. Whenever a task involves Spotify, use this skill instead of calling the API directly.\"\nallowed-tools: [Bash(oo *)]\nmetadata:\n  title: \"Spotify\"\n  author: \"OOMOL\"\n  version: \"1.0.4\"\n  services: [\"spotify\"]\n  icon: \"https://static.oomol.com/logo/third-party/spotify.svg\"\n---\n\n# Spotify\n\nOperate **Spotify** through your OOMOL-connected account. This skill calls the `spotify` connector with the [oo CLI](https://github.com/oomol-lab/oo-cli); OOMOL injects credentials server-side, so you never handle raw tokens.\n\n## Running an action\n\nAssume the user has already installed the oo CLI, signed in, and connected Spotify. **Do not run `oo auth login` or open the connection URL proactively — just run the action.** Fall back to [First-time setup](#first-time-setup) only when a command actually fails with an auth or connection error.\n\n**1. Inspect the contract** to get the authoritative input/output schema before building a payload:\n\n```bash\noo connector schema \"spotify\" --action \"<action_name>\"\n```\n\n**2. Run the action** with a JSON payload that matches the input schema:\n\n```bash\noo connector run \"spotify\" --action \"<action_name>\" --data '<json>' --json\n```\n\n- `--data` takes a JSON object string or `@path/to/file.json`; omit it to send `{}`.\n- The response is `{ \"data\": ..., \"meta\": { \"executionId\": \"...\" } }`; the execution id lives under `meta.executionId`.\n\nEach action is listed below with a one-line description; actions that change state carry a `[write]` or `[destructive]` tag. Before constructing `--data`, fetch the action's live schema with `oo connector schema` to get its authoritative input fields.\n\n## Available actions\n\n- `add_item_to_playback_queue` — Add a Spotify track or episode to the end of the playback queue. [write]\n- `add_items_to_playlist` — Add tracks or episodes to a Spotify playlist in the requested order. [write]\n- `change_playlist_details` — Update Spotify playlist metadata such as name, description, visibility, or collaborative state. [write]\n- `check_saved_albums` — Check whether the current authenticated Spotify user has saved the given albums.\n- `check_saved_audiobooks` — Check whether the current authenticated Spotify user has saved the given audiobooks.\n- `check_saved_episodes` — Check whether the current authenticated Spotify user has saved the given episodes.\n- `check_saved_shows` — Check whether the current authenticated Spotify user has saved the given shows.\n- `check_saved_tracks` — Check whether the current authenticated Spotify user has saved the given tracks.\n- `check_user_follows_artists_or_users` — Check whether the current authenticated Spotify user follows the given artists or users.\n- `check_users_follow_playlist` — Check whether the given Spotify users follow a playlist.\n- `create_playlist` — Create a Spotify playlist for a user account owned by the authenticated user. [write]\n- `follow_artists_or_users` — Follow one or more Spotify artists or users on behalf of the authenticated user. [write]\n- `follow_playlist` — Follow a Spotify playlist on behalf of the authenticated user. [write]\n- `get_album` — Get a Spotify album by its album ID.\n- `get_album_tracks` — Get the tracks for a Spotify album by its album ID.\n- `get_artist` — Get a Spotify artist by its artist ID.\n- `get_artist_albums` — Get Spotify albums for an artist by the artist ID.\n- `get_artist_related_artists` — Get related Spotify artists for an artist ID.\n- `get_artist_top_tracks` — Get top Spotify tracks for an artist ID in a given market.\n- `get_audiobook` — Get a Spotify audiobook by its audiobook ID.\n- `get_audiobook_chapters` — Get Spotify chapters for an audiobook ID.\n- `get_available_devices` — Get available Spotify playback devices for the current authenticated user.\n- `get_available_genre_seeds` — Get the genre seeds supported by Spotify recommendations.\n- `get_available_markets` — Get the markets supported by Spotify catalog APIs.\n- `get_browse_categories` — Get Spotify browse categories for a market and locale.\n- `get_browse_category` — Get a Spotify browse category by category ID.\n- `get_category_playlists` — Get Spotify playlists for a browse category ID.\n- `get_chapter` — Get a Spotify chapter by its chapter ID.\n- `get_current_user_playlists` — Get playlists for the current authenticated Spotify user.\n- `get_current_user_profile` — Get the current authenticated Spotify user's profile details.\n- `get_currently_playing_track` — Get the currently playing Spotify item for the authenticated user.\n- `get_episode` — Get a Spotify episode by its episode ID.\n- `get_featured_playlists` — Get Spotify featured playlists for a market and locale.\n- `get_followed_artists` — Get artists followed by the current authenticated Spotify user.\n- `get_new_releases` — Get Spotify new release albums for a market.\n- `get_playback_state` — Get the current Spotify playback state for the authenticated user.\n- `get_playlist` — Get metadata for a Spotify playlist by its playlist ID.\n- `get_playlist_cover_image` — Get Spotify cover images for a playlist ID.\n- `get_playlist_items` — Get playlist items for a Spotify playlist by its playlist ID.\n- `get_recently_played_tracks` — Get recently played Spotify tracks for the authenticated user.\n- `get_recommendations` — Get Spotify track recommendations from seed artists, tracks, or genres.\n- `get_several_albums` — Get multiple Spotify albums by album ID.\n- `get_several_artists` — Get multiple Spotify artists by artist ID.\n- `get_several_audiobooks` — Get multiple Spotify audiobooks by audiobook ID.\n- `get_several_chapters` — Get multiple Spotify chapters by chapter ID.\n- `get_several_episodes` — Get multiple Spotify episodes by episode ID.\n- `get_several_shows` — Get multiple Spotify shows by show ID.\n- `get_several_track_audio_features` — Get Spotify audio features for multiple track IDs.\n- `get_several_tracks` — Get multiple Spotify tracks by track ID.\n- `get_show` — Get a Spotify show by its show ID.\n- `get_show_episodes` — Get Spotify episodes for a show ID.\n- `get_track` — Get a Spotify track by its track ID.\n- `get_track_audio_analysis` — Get Spotify audio analysis for a track ID.\n- `get_track_audio_features` — Get Spotify audio features for a track ID.\n- `get_user_playlists` — Get playlists visible for a Spotify user ID.\n- `get_user_profile` — Get a Spotify user profile by Spotify user ID.\n- `get_user_queue` — Get the current Spotify queue for the authenticated user.\n- `get_user_saved_albums` — Get albums saved by the current authenticated Spotify user.\n- `get_user_saved_audiobooks` — Get audiobooks saved by the current authenticated Spotify user.\n- `get_user_saved_episodes` — Get episodes saved by the current authenticated Spotify user.\n- `get_user_saved_shows` — Get shows saved by the current authenticated Spotify user.\n- `get_user_saved_tracks` — Get tracks saved by the current authenticated Spotify user.\n- `get_user_top_artists` — Get the current Spotify user's top artists for a selected affinity time range.\n- `get_user_top_tracks` — Get the current Spotify user's top tracks for a selected affinity time range.\n- `pause_playback` — Pause Spotify playback on the targeted device or current active device. [destructive]\n- `remove_playlist_items` — Remove tracks or episodes from a Spotify playlist. [destructive]\n- `remove_user_s_saved_audiobooks` — Remove one or more Spotify audiobooks from the authenticated user's library. [destructive]\n- `remove_user_s_saved_episodes` — Remove one or more Spotify episodes from the authenticated user's library. [destructive]\n- `remove_user_s_saved_shows` — Remove one or more Spotify shows from the authenticated user's library. [destructive]\n- `remove_user_s_saved_tracks` — Remove one or more Spotify tracks from the authenticated user's library. [destructive]\n- `remove_users_saved_albums` — Remove one or more Spotify albums from the authenticated user's library. [destructive]\n- `save_albums_for_current_user` — Save one or more Spotify albums to the authenticated user's library. [write]\n- `save_audiobooks_for_current_user` — Save one or more Spotify audiobooks to the authenticated user's library. [write]\n- `save_episodes_for_current_user` — Save one or more Spotify episodes to the authenticated user's library. [write]\n- `save_shows_for_current_user` — Save one or more Spotify shows to the authenticated user's library. [write]\n- `save_tracks_for_current_user` — Save one or more Spotify tracks to the authenticated user's library. [write]\n- `search_items` — Search Spotify catalog content across one or more resource types with a keyword query.\n- `seek_to_position` — Seek the currently playing Spotify item to the given playback position. [write]\n- `set_playback_volume` — Set Spotify playback volume for the targeted playback device. [write]\n- `set_repeat_mode` — Set Spotify repeat mode for the targeted playback device. [write]\n- `skip_to_next` — Skip to the next item in the Spotify playback queue. [write]\n- `skip_to_previous` — Skip to the previous item in the Spotify playback queue. [write]\n- `start_resume_playback` — Start a new Spotify playback context or resume playback on the targeted device. [write]\n- `toggle_playback_shuffle` — Enable or disable Spotify playback shuffle on the targeted device. [write]\n- `transfer_playback` — Transfer Spotify playback to another available device. [write]\n- `unfollow_artists_or_users` — Unfollow one or more Spotify artists or users on behalf of the authenticated user. [destructive]\n- `unfollow_playlist` — Unfollow a Spotify playlist on behalf of the authenticated user. [destructive]\n- `update_playlist_items` — Replace all items in a Spotify playlist or reorder an existing range of items. [destructive]\n\n## Safety\n\n- Untagged actions are reads (get / list / search) — safe to run directly.\n- **Actions tagged `[write]` change Spotify state — confirm the exact payload and effect with the user before running.**\n- **Actions tagged `[destructive]` remove or overwrite data — always confirm the target and get explicit approval first.**\n\n## First-time setup\n\nThese are **one-time** steps — do not repeat them on every call. Run a step only when a command fails for the matching reason.\n\n- **`oo: command not found`** — install the oo CLI (other platforms: <https://cli.oomol.com/install-guide.md>):\n\n  ```bash\n  curl -fsSL https://cli.oomol.com/install.sh | bash    # macOS / Linux\n  ```\n\n  ```powershell\n  irm https://cli.oomol.com/install.ps1 | iex           # Windows PowerShell\n  ```\n\n- **Not signed in / authentication error** — sign in to your OOMOL account once:\n\n  ```bash\n  oo auth login\n  ```\n\n- **`scope_missing` / `credential_expired` / `app_not_ready` / `app_not_found`** — Spotify is not connected, or the connection expired or lacks a scope. Connect once (auth type: OAuth2) at:\n\n  ```text\n  https://console.oomol.com/app-connections?provider=spotify\n  ```\n\n- **HTTP 402 / `OOMOL_INSUFFICIENT_CREDIT`** — billing stop. Recharge at `https://console.oomol.com/billing/token-recharge` before retrying.\n\n## Resources\n\n- Spotify homepage: https://spotify.com\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn7btdcy6ktfj8aw5gc3yv9ssx87zr17\",\n  \"slug\": \"oo-spotify\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1789875459736\n}\n\nFile v1.0.4:skill-card.md\n\n## Description:\n\nSpotify skill for reading, creating, updating, and deleting Spotify data through an OOMOL-connected account.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[oomol](https://clawhub.ai/user/oomol)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to let an agent search Spotify content, inspect user library and playback state, and manage playlists, saved items, follows, queues, devices, and playback through the oo CLI after the account is connected.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Fallback setup includes direct remote installer commands for the oo CLI.\n\nMitigation: Do not allow an agent to run the installer automatically; install or verify the CLI through a trusted method before using the skill.\n\nRisk: Write and destructive Spotify actions can change playback, playlists, follows, saved content, queue state, or library contents.\n\nMitigation: Require confirmation for write actions and explicit approval for destructive actions, including the exact target and payload.\n\n## Reference(s):\n\n- [ClawHub Spotify Skill](https://clawhub.ai/oomol/skills/oo-spotify)\n- [oo CLI](https://github.com/oomol-lab/oo-cli)\n- [Spotify](https://spotify.com)\n\n## Skill Output:\n\n**Output Type(s):** [guidance, shell commands, configuration, text]\n\n**Output Format:** [Markdown instructions with shell command examples and JSON payload guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Commands use the oo CLI to inspect connector schemas and run Spotify actions; executed actions return JSON responses.]\n\n## Skill Version(s):\n\n1.0.4 (source: server evidence release.version and skill metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.3: 3 files, 4851 bytes\n\nFiles: skill-card.md (2294b), SKILL.md (11363b), _meta.json (129b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: oo-spotify\ndescription: \"Spotify (spotify.com). Use this skill for ANY Spotify request — reading, creating, updating, and deleting data. Whenever a task involves Spotify, use this skill instead of calling the API directly.\"\nallowed-tools: [Bash(oo *)]\nmetadata:\n  title: \"Spotify\"\n  author: \"OOMOL\"\n  version: \"1.0.3\"\n  services: [\"spotify\"]\n  icon: \"https://static.oomol.com/logo/third-party/spotify.svg\"\n---\n\n# Spotify\n\nOperate **Spotify** through your OOMOL-connected account. This skill calls the `spotify` connector with the [oo CLI](https://github.com/oomol-lab/oo-cli); OOMOL injects credentials server-side, so you never handle raw tokens.\n\n## Running an action\n\nAssume the user has already installed the oo CLI, signed in, and connected Spotify. **Do not run `oo auth login` or open the connection URL proactively — just run the action.** Fall back to [First-time setup](#first-time-setup) only when a command actually fails with an auth or connection error.\n\n**1. Inspect the contract** to get the authoritative input/output schema before building a payload:\n\n```bash\noo connector schema \"spotify\" --action \"<action_name>\"\n```\n\n**2. Run the action** with a JSON payload that matches the input schema:\n\n```bash\noo connector run \"spotify\" --action \"<action_name>\" --data '<json>' --json\n```\n\n- `--data` takes a JSON object string or `@path/to/file.json`; omit it to send `{}`.\n- The response is `{ \"data\": ..., \"meta\": { \"executionId\": \"...\" } }`; the execution id lives under `meta.executionId`.\n\nEach action is listed below with a one-line description; actions that change state carry a `[write]` or `[destructive]` tag. Before constructing `--data`, fetch the action's live schema with `oo connector schema` to get its authoritative input fields.\n\n## Available actions\n\n- `add_item_to_playback_queue` — Add a Spotify track or episode to the end of the playback queue. [write]\n- `add_items_to_playlist` — Add tracks or episodes to a Spotify playlist in the requested order. [write]\n- `change_playlist_details` — Update Spotify playlist metadata such as name, description, visibility, or collaborative state. [write]\n- `check_saved_albums` — Check whether the current authenticated Spotify user has saved the given albums.\n- `check_saved_audiobooks` — Check whether the current authenticated Spotify user has saved the given audiobooks.\n- `check_saved_episodes` — Check whether the current authenticated Spotify user has saved the given episodes.\n- `check_saved_shows` — Check whether the current authenticated Spotify user has saved the given shows.\n- `check_saved_tracks` — Check whether the current authenticated Spotify user has saved the given tracks.\n- `check_user_follows_artists_or_users` — Check whether the current authenticated Spotify user follows the given artists or users.\n- `check_users_follow_playlist` — Check whether the given Spotify users follow a playlist. [write]\n- `create_playlist` — Create a Spotify playlist for a user account owned by the authenticated user. [write]\n- `follow_artists_or_users` — Follow one or more Spotify artists or users on behalf of the authenticated user. [write]\n- `follow_playlist` — Follow a Spotify playlist on behalf of the authenticated user. [write]\n- `get_album` — Get a Spotify album by its album ID.\n- `get_album_tracks` — Get the tracks for a Spotify album by its album ID.\n- `get_artist` — Get a Spotify artist by its artist ID.\n- `get_artist_albums` — Get Spotify albums for an artist by the artist ID.\n- `get_artist_related_artists` — Get related Spotify artists for an artist ID.\n- `get_artist_top_tracks` — Get top Spotify tracks for an artist ID in a given market.\n- `get_audiobook` — Get a Spotify audiobook by its audiobook ID.\n- `get_audiobook_chapters` — Get Spotify chapters for an audiobook ID.\n- `get_available_devices` — Get available Spotify playback devices for the current authenticated user.\n- `get_available_genre_seeds` — Get the genre seeds supported by Spotify recommendations.\n- `get_available_markets` — Get the markets supported by Spotify catalog APIs.\n- `get_browse_categories` — Get Spotify browse categories for a market and locale.\n- `get_browse_category` — Get a Spotify browse category by category ID.\n- `get_category_playlists` — Get Spotify playlists for a browse category ID.\n- `get_chapter` — Get a Spotify chapter by its chapter ID.\n- `get_current_user_playlists` — Get playlists for the current authenticated Spotify user.\n- `get_current_user_profile` — Get the current authenticated Spotify user's profile details.\n- `get_currently_playing_track` — Get the currently playing Spotify item for the authenticated user.\n- `get_episode` — Get a Spotify episode by its episode ID.\n- `get_featured_playlists` — Get Spotify featured playlists for a market and locale.\n- `get_followed_artists` — Get artists followed by the current authenticated Spotify user.\n- `get_new_releases` — Get Spotify new release albums for a market.\n- `get_playback_state` — Get the current Spotify playback state for the authenticated user.\n- `get_playlist` — Get metadata for a Spotify playlist by its playlist ID.\n- `get_playlist_cover_image` — Get Spotify cover images for a playlist ID.\n- `get_playlist_items` — Get playlist items for a Spotify playlist by its playlist ID.\n- `get_recently_played_tracks` — Get recently played Spotify tracks for the authenticated user.\n- `get_recommendations` — Get Spotify track recommendations from seed artists, tracks, or genres.\n- `get_several_albums` — Get multiple Spotify albums by album ID.\n- `get_several_artists` — Get multiple Spotify artists by artist ID.\n- `get_several_audiobooks` — Get multiple Spotify audiobooks by audiobook ID.\n- `get_several_chapters` — Get multiple Spotify chapters by chapter ID.\n- `get_several_episodes` — Get multiple Spotify episodes by episode ID.\n- `get_several_shows` — Get multiple Spotify shows by show ID.\n- `get_several_track_audio_features` — Get Spotify audio features for multiple track IDs.\n- `get_several_tracks` — Get multiple Spotify tracks by track ID.\n- `get_show` — Get a Spotify show by its show ID.\n- `get_show_episodes` — Get Spotify episodes for a show ID.\n- `get_track` — Get a Spotify track by its track ID.\n- `get_track_audio_analysis` — Get Spotify audio analysis for a track ID.\n- `get_track_audio_features` — Get Spotify audio features for a track ID.\n- `get_user_playlists` — Get playlists visible for a Spotify user ID.\n- `get_user_profile` — Get a Spotify user profile by Spotify user ID.\n- `get_user_queue` — Get the current Spotify queue for the authenticated user.\n- `get_user_saved_albums` — Get albums saved by the current authenticated Spotify user.\n- `get_user_saved_audiobooks` — Get audiobooks saved by the current authenticated Spotify user.\n- `get_user_saved_episodes` — Get episodes saved by the current authenticated Spotify user.\n- `get_user_saved_shows` — Get shows saved by the current authenticated Spotify user.\n- `get_user_saved_tracks` — Get tracks saved by the current authenticated Spotify user.\n- `get_user_top_artists` — Get the current Spotify user's top artists for a selected affinity time range.\n- `get_user_top_tracks` — Get the current Spotify user's top tracks for a selected affinity time range.\n- `pause_playback` — Pause Spotify playback on the targeted device or current active device. [write]\n- `remove_playlist_items` — Remove tracks or episodes from a Spotify playlist. [destructive]\n- `remove_user_s_saved_audiobooks` — Remove one or more Spotify audiobooks from the authenticated user's library. [destructive]\n- `remove_user_s_saved_episodes` — Remove one or more Spotify episodes from the authenticated user's library. [destructive]\n- `remove_user_s_saved_shows` — Remove one or more Spotify shows from the authenticated user's library. [destructive]\n- `remove_user_s_saved_tracks` — Remove one or more Spotify tracks from the authenticated user's library. [destructive]\n- `remove_users_saved_albums` — Remove one or more Spotify albums from the authenticated user's library. [destructive]\n- `save_albums_for_current_user` — Save one or more Spotify albums to the authenticated user's library. [write]\n- `save_audiobooks_for_current_user` — Save one or more Spotify audiobooks to the authenticated user's library. [write]\n- `save_episodes_for_current_user` — Save one or more Spotify episodes to the authenticated user's library. [write]\n- `save_shows_for_current_user` — Save one or more Spotify shows to the authenticated user's library. [write]\n- `save_tracks_for_current_user` — Save one or more Spotify tracks to the authenticated user's library. [write]\n- `search_items` — Search Spotify catalog content across one or more resource types with a keyword query.\n- `seek_to_position` — Seek the currently playing Spotify item to the given playback position. [write]\n- `set_playback_volume` — Set Spotify playback volume for the targeted playback device. [write]\n- `set_repeat_mode` — Set Spotify repeat mode for the targeted playback device. [write]\n- `skip_to_next` — Skip to the next item in the Spotify playback queue. [write]\n- `skip_to_previous` — Skip to the previous item in the Spotify playback queue. [write]\n- `start_resume_playback` — Start a new Spotify playback context or resume playback on the targeted device. [write]\n- `toggle_playback_shuffle` — Enable or disable Spotify playback shuffle on the targeted device. [write]\n- `transfer_playback` — Transfer Spotify playback to another available device. [write]\n- `unfollow_artists_or_users` — Unfollow one or more Spotify artists or users on behalf of the authenticated user. [write]\n- `unfollow_playlist` — Unfollow a Spotify playlist on behalf of the authenticated user. [write]\n- `update_playlist_items` — Replace all items in a Spotify playlist or reorder an existing range of items. [write]\n\n## Safety\n\n- Untagged actions are reads (get / list / search) — safe to run directly.\n- **Actions tagged `[write]` change Spotify state — confirm the exact payload and effect with the user before running.**\n- **Actions tagged `[destructive]` remove or overwrite data — always confirm the target and get explicit approval first.**\n\n## First-time setup\n\nThese are **one-time** steps — do not repeat them on every call. Run a step only when a command fails for the matching reason.\n\n- **`oo: command not found`** — install the oo CLI (other platforms: <https://cli.oomol.com/install-guide.md>):\n\n  ```bash\n  curl -fsSL https://cli.oomol.com/install.sh | bash    # macOS / Linux\n  ```\n\n  ```powershell\n  irm https://cli.oomol.com/install.ps1 | iex           # Windows PowerShell\n  ```\n\n- **Not signed in / authentication error** — sign in to your OOMOL account once:\n\n  ```bash\n  oo auth login\n  ```\n\n- **`scope_missing` / `credential_expired` / `app_not_ready` / `app_not_found`** — Spotify is not connected, or the connection expired or lacks a scope. Connect once (auth type: OAuth2) at:\n\n  ```text\n  https://console.oomol.com/app-connections?provider=spotify\n  ```\n\n- **HTTP 402 / `OOMOL_INSUFFICIENT_CREDIT`** — billing stop. Recharge at `https://console.oomol.com/billing/token-recharge` before retrying.\n\n## Resources\n\n- Spotify homepage: https://spotify.com\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn7btdcy6ktfj8aw5gc3yv9ssx87zr17\",\n  \"slug\": \"oo-spotify\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1789446242512\n}\n\nFile v1.0.3:skill-card.md\n\n## Description:\n\nHelps agents operate Spotify through the OOMOL oo CLI for reading, searching, playback control, library management, and playlist changes.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[oomol](https://clawhub.ai/user/oomol)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to let an agent inspect Spotify catalog and account data, manage playlists and saved content, and control playback through an OOMOL-connected Spotify account.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Setup instructions include remote installer commands that execute downloaded shell or PowerShell content.\n\nMitigation: Use a verified package-manager or pinned installer path, and do not let an agent run installer commands automatically.\n\nRisk: The skill brokers Spotify requests through OOMOL and can access connected account data.\n\nMitigation: Install only if the user trusts OOMOL with the connected Spotify account and understands the data exposure.\n\nRisk: Write and destructive actions can change playback, playlists, follows, saved content, and library state.\n\nMitigation: Review exact payloads and effects before approving write actions, and require explicit approval for destructive operations.\n\n## Reference(s):\n\n- [ClawHub Spotify skill page](https://clawhub.ai/oomol/skills/oo-spotify)\n- [OOMOL publisher profile](https://clawhub.ai/user/oomol)\n- [oo CLI](https://github.com/oomol-lab/oo-cli)\n- [Spotify](https://spotify.com)\n\n## Skill Output:\n\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance]\n\n**Output Format:** [Markdown guidance with inline shell commands and JSON payload examples]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May produce Spotify connector action names, schemas, JSON payloads, execution commands, and confirmation prompts for write or destructive actions.]\n\n## Skill Version(s):\n\n1.0.3 (source: frontmatter and server release metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v1.0.1: 3 files, 4832 bytes\n\nFiles: skill-card.md (2257b), SKILL.md (11363b), _meta.json (129b)\n\nFile v1.0.1:SKILL.md\n\n---\nname: oo-spotify\ndescription: \"Spotify (spotify.com). Use this skill for ANY Spotify request — reading, creating, updating, and deleting data. Whenever a task involves Spotify, use this skill instead of calling the API directly.\"\nallowed-tools: [Bash(oo *)]\nmetadata:\n  title: \"Spotify\"\n  author: \"OOMOL\"\n  version: \"1.0.1\"\n  services: [\"spotify\"]\n  icon: \"https://static.oomol.com/logo/third-party/spotify.svg\"\n---\n\n# Spotify\n\nOperate **Spotify** through your OOMOL-connected account. This skill calls the `spotify` connector with the [oo CLI](https://github.com/oomol-lab/oo-cli); OOMOL injects credentials server-side, so you never handle raw tokens.\n\n## Running an action\n\nAssume the user has already installed the oo CLI, signed in, and connected Spotify. **Do not run `oo auth login` or open the connection URL proactively — just run the action.** Fall back to [First-time setup](#first-time-setup) only when a command actually fails with an auth or connection error.\n\n**1. Inspect the contract** to get the authoritative input/output schema before building a payload:\n\n```bash\noo connector schema \"spotify\" --action \"<action_name>\"\n```\n\n**2. Run the action** with a JSON payload that matches the input schema:\n\n```bash\noo connector run \"spotify\" --action \"<action_name>\" --data '<json>' --json\n```\n\n- `--data` takes a JSON object string or `@path/to/file.json`; omit it to send `{}`.\n- The response is `{ \"data\": ..., \"meta\": { \"executionId\": \"...\" } }`; the execution id lives under `meta.executionId`.\n\nEach action is listed below with a one-line description; actions that change state carry a `[write]` or `[destructive]` tag. Before constructing `--data`, fetch the action's live schema with `oo connector schema` to get its authoritative input fields.\n\n## Available actions\n\n- `add_item_to_playback_queue` — Add a Spotify track or episode to the end of the playback queue. [write]\n- `add_items_to_playlist` — Add tracks or episodes to a Spotify playlist in the requested order. [write]\n- `change_playlist_details` — Update Spotify playlist metadata such as name, description, visibility, or collaborative state. [write]\n- `check_saved_albums` — Check whether the current authenticated Spotify user has saved the given albums.\n- `check_saved_audiobooks` — Check whether the current authenticated Spotify user has saved the given audiobooks.\n- `check_saved_episodes` — Check whether the current authenticated Spotify user has saved the given episodes.\n- `check_saved_shows` — Check whether the current authenticated Spotify user has saved the given shows.\n- `check_saved_tracks` — Check whether the current authenticated Spotify user has saved the given tracks.\n- `check_user_follows_artists_or_users` — Check whether the current authenticated Spotify user follows the given artists or users.\n- `check_users_follow_playlist` — Check whether the given Spotify users follow a playlist. [write]\n- `create_playlist` — Create a Spotify playlist for a user account owned by the authenticated user. [write]\n- `follow_artists_or_users` — Follow one or more Spotify artists or users on behalf of the authenticated user. [write]\n- `follow_playlist` — Follow a Spotify playlist on behalf of the authenticated user. [write]\n- `get_album` — Get a Spotify album by its album ID.\n- `get_album_tracks` — Get the tracks for a Spotify album by its album ID.\n- `get_artist` — Get a Spotify artist by its artist ID.\n- `get_artist_albums` — Get Spotify albums for an artist by the artist ID.\n- `get_artist_related_artists` — Get related Spotify artists for an artist ID.\n- `get_artist_top_tracks` — Get top Spotify tracks for an artist ID in a given market.\n- `get_audiobook` — Get a Spotify audiobook by its audiobook ID.\n- `get_audiobook_chapters` — Get Spotify chapters for an audiobook ID.\n- `get_available_devices` — Get available Spotify playback devices for the current authenticated user.\n- `get_available_genre_seeds` — Get the genre seeds supported by Spotify recommendations.\n- `get_available_markets` — Get the markets supported by Spotify catalog APIs.\n- `get_browse_categories` — Get Spotify browse categories for a market and locale.\n- `get_browse_category` — Get a Spotify browse category by category ID.\n- `get_category_playlists` — Get Spotify playlists for a browse category ID.\n- `get_chapter` — Get a Spotify chapter by its chapter ID.\n- `get_current_user_playlists` — Get playlists for the current authenticated Spotify user.\n- `get_current_user_profile` — Get the current authenticated Spotify user's profile details.\n- `get_currently_playing_track` — Get the currently playing Spotify item for the authenticated user.\n- `get_episode` — Get a Spotify episode by its episode ID.\n- `get_featured_playlists` — Get Spotify featured playlists for a market and locale.\n- `get_followed_artists` — Get artists followed by the current authenticated Spotify user.\n- `get_new_releases` — Get Spotify new release albums for a market.\n- `get_playback_state` — Get the current Spotify playback state for the authenticated user.\n- `get_playlist` — Get metadata for a Spotify playlist by its playlist ID.\n- `get_playlist_cover_image` — Get Spotify cover images for a playlist ID.\n- `get_playlist_items` — Get playlist items for a Spotify playlist by its playlist ID.\n- `get_recently_played_tracks` — Get recently played Spotify tracks for the authenticated user.\n- `get_recommendations` — Get Spotify track recommendations from seed artists, tracks, or genres.\n- `get_several_albums` — Get multiple Spotify albums by album ID.\n- `get_several_artists` — Get multiple Spotify artists by artist ID.\n- `get_several_audiobooks` — Get multiple Spotify audiobooks by audiobook ID.\n- `get_several_chapters` — Get multiple Spotify chapters by chapter ID.\n- `get_several_episodes` — Get multiple Spotify episodes by episode ID.\n- `get_several_shows` — Get multiple Spotify shows by show ID.\n- `get_several_track_audio_features` — Get Spotify audio features for multiple track IDs.\n- `get_several_tracks` — Get multiple Spotify tracks by track ID.\n- `get_show` — Get a Spotify show by its show ID.\n- `get_show_episodes` — Get Spotify episodes for a show ID.\n- `get_track` — Get a Spotify track by its track ID.\n- `get_track_audio_analysis` — Get Spotify audio analysis for a track ID.\n- `get_track_audio_features` — Get Spotify audio features for a track ID.\n- `get_user_playlists` — Get playlists visible for a Spotify user ID.\n- `get_user_profile` — Get a Spotify user profile by Spotify user ID.\n- `get_user_queue` — Get the current Spotify queue for the authenticated user.\n- `get_user_saved_albums` — Get albums saved by the current authenticated Spotify user.\n- `get_user_saved_audiobooks` — Get audiobooks saved by the current authenticated Spotify user.\n- `get_user_saved_episodes` — Get episodes saved by the current authenticated Spotify user.\n- `get_user_saved_shows` — Get shows saved by the current authenticated Spotify user.\n- `get_user_saved_tracks` — Get tracks saved by the current authenticated Spotify user.\n- `get_user_top_artists` — Get the current Spotify user's top artists for a selected affinity time range.\n- `get_user_top_tracks` — Get the current Spotify user's top tracks for a selected affinity time range.\n- `pause_playback` — Pause Spotify playback on the targeted device or current active device. [write]\n- `remove_playlist_items` — Remove tracks or episodes from a Spotify playlist. [destructive]\n- `remove_user_s_saved_audiobooks` — Remove one or more Spotify audiobooks from the authenticated user's library. [destructive]\n- `remove_user_s_saved_episodes` — Remove one or more Spotify episodes from the authenticated user's library. [destructive]\n- `remove_user_s_saved_shows` — Remove one or more Spotify shows from the authenticated user's library. [destructive]\n- `remove_user_s_saved_tracks` — Remove one or more Spotify tracks from the authenticated user's library. [destructive]\n- `remove_users_saved_albums` — Remove one or more Spotify albums from the authenticated user's library. [destructive]\n- `save_albums_for_current_user` — Save one or more Spotify albums to the authenticated user's library. [write]\n- `save_audiobooks_for_current_user` — Save one or more Spotify audiobooks to the authenticated user's library. [write]\n- `save_episodes_for_current_user` — Save one or more Spotify episodes to the authenticated user's library. [write]\n- `save_shows_for_current_user` — Save one or more Spotify shows to the authenticated user's library. [write]\n- `save_tracks_for_current_user` — Save one or more Spotify tracks to the authenticated user's library. [write]\n- `search_items` — Search Spotify catalog content across one or more resource types with a keyword query.\n- `seek_to_position` — Seek the currently playing Spotify item to the given playback position. [write]\n- `set_playback_volume` — Set Spotify playback volume for the targeted playback device. [write]\n- `set_repeat_mode` — Set Spotify repeat mode for the targeted playback device. [write]\n- `skip_to_next` — Skip to the next item in the Spotify playback queue. [write]\n- `skip_to_previous` — Skip to the previous item in the Spotify playback queue. [write]\n- `start_resume_playback` — Start a new Spotify playback context or resume playback on the targeted device. [write]\n- `toggle_playback_shuffle` — Enable or disable Spotify playback shuffle on the targeted device. [write]\n- `transfer_playback` — Transfer Spotify playback to another available device. [write]\n- `unfollow_artists_or_users` — Unfollow one or more Spotify artists or users on behalf of the authenticated user. [write]\n- `unfollow_playlist` — Unfollow a Spotify playlist on behalf of the authenticated user. [write]\n- `update_playlist_items` — Replace all items in a Spotify playlist or reorder an existing range of items. [write]\n\n## Safety\n\n- Untagged actions are reads (get / list / search) — safe to run directly.\n- **Actions tagged `[write]` change Spotify state — confirm the exact payload and effect with the user before running.**\n- **Actions tagged `[destructive]` remove or overwrite data — always confirm the target and get explicit approval first.**\n\n## First-time setup\n\nThese are **one-time** steps — do not repeat them on every call. Run a step only when a command fails for the matching reason.\n\n- **`oo: command not found`** — install the oo CLI (other platforms: <https://cli.oomol.com/install-guide.md>):\n\n  ```bash\n  curl -fsSL https://cli.oomol.com/install.sh | bash    # macOS / Linux\n  ```\n\n  ```powershell\n  irm https://cli.oomol.com/install.ps1 | iex           # Windows PowerShell\n  ```\n\n- **Not signed in / authentication error** — sign in to your OOMOL account once:\n\n  ```bash\n  oo auth login\n  ```\n\n- **`scope_missing` / `credential_expired` / `app_not_ready` / `app_not_found`** — Spotify is not connected, or the connection expired or lacks a scope. Connect once (auth type: OAuth2) at:\n\n  ```text\n  https://console.oomol.com/app-connections?provider=spotify\n  ```\n\n- **HTTP 402 / `OOMOL_INSUFFICIENT_CREDIT`** — billing stop. Recharge at `https://console.oomol.com/billing/token-recharge` before retrying.\n\n## Resources\n\n- Spotify homepage: https://spotify.com\n\nFile v1.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn7btdcy6ktfj8aw5gc3yv9ssx87zr17\",\n  \"slug\": \"oo-spotify\",\n  \"version\": \"1.0.1\",\n  \"publishedAt\": 1781000702722\n}\n\nFile v1.0.1:skill-card.md\n\n## Description: <br>\nThis skill handles Spotify requests that read, create, update, or delete Spotify data through the OOMOL `oo` CLI connector. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[oomol](https://clawhub.ai/user/oomol) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nExternal users and developers use this skill to search Spotify, inspect account and catalog data, manage playlists and saved library items, and control playback from an OOMOL-connected Spotify account. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill can perform Spotify write actions that change playlists, saved library items, playback state, follows, queue, and device settings. <br>\nMitigation: Confirm the exact payload and intended effect with the user before running actions tagged as write. <br>\nRisk: The skill can perform destructive actions that remove or overwrite Spotify data. <br>\nMitigation: Require explicit approval for the target and action before running commands tagged as destructive. <br>\nRisk: Connector actions depend on account authentication, scopes, app readiness, and OOMOL account credit. <br>\nMitigation: Use first-time setup and connection recovery steps only after a command fails for the matching reason. <br>\n\n\n## Reference(s): <br>\n- [Spotify homepage](https://spotify.com) <br>\n- [oo CLI](https://github.com/oomol-lab/oo-cli) <br>\n- [oo CLI install guide](https://cli.oomol.com/install-guide.md) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [Text, Markdown, Shell commands, Configuration, Guidance] <br>\n**Output Format:** [Markdown guidance with inline shell commands and JSON payload examples] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [Uses live connector schemas before constructing action payloads.] <br>\n\n## Skill Version(s): <br>\n1.0.1 (source: server release metadata and skill frontmatter) <br>\n\n## Ethical Considerations: <br>\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment. <br>\n\nArchive v1.0.0: 91 files, 52500 bytes\n\nFiles: actions/add_item_to_playback_queue.md (867b), actions/add_items_to_playlist.md (847b), actions/change_playlist_details.md (759b), actions/check_saved_albums.md (716b), actions/check_saved_audiobooks.md (740b), actions/check_saved_episodes.md (728b), actions/check_saved_shows.md (710b), actions/check_saved_tracks.md (716b), actions/check_user_follows_artists_or_users.md (808b), actions/check_users_follow_playlist.md (739b), actions/create_playlist.md (826b), actions/follow_artists_or_users.md (741b), actions/follow_playlist.md (686b), actions/get_album_tracks.md (633b), actions/get_album.md (583b), actions/get_artist_albums.md (637b), actions/get_artist_related_artists.md (677b), actions/get_artist_top_tracks.md (665b), actions/get_artist.md (590b), actions/get_audiobook_chapters.md (653b), actions/get_audiobook.md (611b), actions/get_available_devices.md (726b), actions/get_available_genre_seeds.md (684b), actions/get_available_markets.md (657b), actions/get_browse_categories.md (661b), actions/get_browse_category.md (642b), actions/get_category_playlists.md (659b), actions/get_chapter.md (597b), actions/get_current_user_playlists.md (735b), actions/get_current_user_profile.md (727b), actions/get_currently_playing_track.md (748b), actions/get_episode.md (597b), actions/get_featured_playlists.md (667b), actions/get_followed_artists.md (708b), actions/get_new_releases.md (626b), actions/get_playback_state.md (703b), actions/get_playlist_cover_image.md (711b), actions/get_playlist_items.md (699b), actions/get_playlist.md (663b), actions/get_recently_played_tracks.md (737b), actions/get_recommendations.md (668b), actions/get_several_albums.md (632b), actions/get_several_artists.md (639b), actions/get_several_audiobooks.md (660b), actions/get_several_chapters.md (646b), actions/get_several_episodes.md (646b), actions/get_several_shows.md (625b), actions/get_several_track_audio_features.md (712b), actions/get_several_tracks.md (632b), actions/get_show_episodes.md (622b), actions/get_show.md (576b), actions/get_track_audio_analysis.md (664b), actions/get_track_audio_features.md (664b), actions/get_track.md (583b), actions/get_user_playlists.md (682b), actions/get_user_profile.md (628b), actions/get_user_queue.md (674b), actions/get_user_saved_albums.md (710b), actions/get_user_saved_audiobooks.md (734b), actions/get_user_saved_episodes.md (722b), actions/get_user_saved_shows.md (704b), actions/get_user_saved_tracks.md (710b), actions/get_user_top_artists.md (720b), actions/get_user_top_tracks.md (714b), actions/pause_playback.md (689b), actions/remove_playlist_items.md (845b), actions/remove_user_s_saved_audiobooks.md (914b), actions/remove_user_s_saved_episodes.md (902b), actions/remove_user_s_saved_shows.md (884b), actions/remove_user_s_saved_tracks.md (890b), actions/remove_users_saved_albums.md (885b), actions/save_albums_for_current_user.md (755b), actions/save_audiobooks_for_current_user.md (779b), actions/save_episodes_for_current_user.md (767b), actions/save_shows_for_current_user.md (749b), actions/save_tracks_for_current_user.md (755b), actions/search_items.md (648b), actions/seek_to_position.md (699b), actions/set_playback_volume.md (829b), actions/set_repeat_mode.md (805b)\n\nFile v1.0.0:SKILL.md\n\n---\nname: oo-spotify\ndescription: \"Spotify (spotify.com). Use this skill for ANY Spotify request — reading, creating, updating, and deleting data. Whenever a task involves Spotify, use this skill instead of calling the API directly.\"\nallowed-tools: [Bash(oo *)]\nmetadata:\n  title: \"Spotify\"\n  author: \"OOMOL\"\n  version: \"1.0.0\"\n  service: \"spotify\"\n  categories: \"Design & Media, Social\"\n  homepage: \"https://spotify.com\"\n  icon: \"https://static.oomol.com/logo/third-party/spotify.svg\"\n---\n\n# Spotify\n\nOperate **Spotify** through your OOMOL-connected account. This skill calls the `spotify` connector with the [oo CLI](https://github.com/oomol-lab/oo-cli); OOMOL injects credentials server-side, so you never handle raw tokens.\n\nCategory: Design & Media, Social. Exposes 88 action(s).\n\n## Running an action\n\nAssume the user has already installed the oo CLI, signed in, and connected Spotify. **Do not run `oo auth login` or open the connection URL proactively — just run the action.** Fall back to [First-time setup](#first-time-setup) only when a command actually fails with an auth or connection error.\n\n**1. Inspect the contract** to get the authoritative input/output schema before building a payload:\n\n```bash\noo connector schema \"spotify\" --action \"<action_name>\"\n```\n\n**2. Run the action** with a JSON payload that matches the input schema:\n\n```bash\noo connector run \"spotify\" --action \"<action_name>\" --data '<json>' --json\n```\n\n- `--data` takes a JSON object string or `@path/to/file.json`; omit it to send `{}`.\n- The response is `{ \"data\": ..., \"meta\": { \"executionId\": \"...\" } }`; the execution id lives under `meta.executionId`.\n\nEach action below links to a reference file with its purpose and exact commands. Read the linked file, then fetch the live schema with `oo connector schema` before constructing `--data`.\n\n## Available actions\n\n- [`add_item_to_playback_queue`](actions/add_item_to_playback_queue.md) — Add a Spotify track or episode to the end of the playback queue.\n- [`add_items_to_playlist`](actions/add_items_to_playlist.md) — Add tracks or episodes to a Spotify playlist in the requested order.\n- [`change_playlist_details`](actions/change_playlist_details.md) — Update Spotify playlist metadata such as name, description, visibility, or collaborative state.\n- [`check_saved_albums`](actions/check_saved_albums.md) — Check whether the current authenticated Spotify user has saved the given albums.\n- [`check_saved_audiobooks`](actions/check_saved_audiobooks.md) — Check whether the current authenticated Spotify user has saved the given audiobooks.\n- [`check_saved_episodes`](actions/check_saved_episodes.md) — Check whether the current authenticated Spotify user has saved the given episodes.\n- [`check_saved_shows`](actions/check_saved_shows.md) — Check whether the current authenticated Spotify user has saved the given shows.\n- [`check_saved_tracks`](actions/check_saved_tracks.md) — Check whether the current authenticated Spotify user has saved the given tracks.\n- [`check_user_follows_artists_or_users`](actions/check_user_follows_artists_or_users.md) — Check whether the current authenticated Spotify user follows the given artists or users.\n- [`check_users_follow_playlist`](actions/check_users_follow_playlist.md) — Check whether the given Spotify users follow a playlist.\n- [`create_playlist`](actions/create_playlist.md) — Create a Spotify playlist for a user account owned by the authenticated user.\n- [`follow_artists_or_users`](actions/follow_artists_or_users.md) — Follow one or more Spotify artists or users on behalf of the authenticated user.\n- [`follow_playlist`](actions/follow_playlist.md) — Follow a Spotify playlist on behalf of the authenticated user.\n- [`get_album`](actions/get_album.md) — Get a Spotify album by its album ID.\n- [`get_album_tracks`](actions/get_album_tracks.md) — Get the tracks for a Spotify album by its album ID.\n- [`get_artist`](actions/get_artist.md) — Get a Spotify artist by its artist ID.\n- [`get_artist_albums`](actions/get_artist_albums.md) — Get Spotify albums for an artist by the artist ID.\n- [`get_artist_related_artists`](actions/get_artist_related_artists.md) — Get related Spotify artists for an artist ID.\n- [`get_artist_top_tracks`](actions/get_artist_top_tracks.md) — Get top Spotify tracks for an artist ID in a given market.\n- [`get_audiobook`](actions/get_audiobook.md) — Get a Spotify audiobook by its audiobook ID.\n- [`get_audiobook_chapters`](actions/get_audiobook_chapters.md) — Get Spotify chapters for an audiobook ID.\n- [`get_available_devices`](actions/get_available_devices.md) — Get available Spotify playback devices for the current authenticated user.\n- [`get_available_genre_seeds`](actions/get_available_genre_seeds.md) — Get the genre seeds supported by Spotify recommendations.\n- [`get_available_markets`](actions/get_available_markets.md) — Get the markets supported by Spotify catalog APIs.\n- [`get_browse_categories`](actions/get_browse_categories.md) — Get Spotify browse categories for a market and locale.\n- [`get_browse_category`](actions/get_browse_category.md) — Get a Spotify browse category by category ID.\n- [`get_category_playlists`](actions/get_category_playlists.md) — Get Spotify playlists for a browse category ID.\n- [`get_chapter`](actions/get_chapter.md) — Get a Spotify chapter by its chapter ID.\n- [`get_current_user_playlists`](actions/get_current_user_playlists.md) — Get playlists for the current authenticated Spotify user.\n- [`get_current_user_profile`](actions/get_current_user_profile.md) — Get the current authenticated Spotify user's profile details.\n- [`get_currently_playing_track`](actions/get_currently_playing_track.md) — Get the currently playing Spotify item for the authenticated user.\n- [`get_episode`](actions/get_episode.md) — Get a Spotify episode by its episode ID.\n- [`get_featured_playlists`](actions/get_featured_playlists.md) — Get Spotify featured playlists for a market and locale.\n- [`get_followed_artists`](actions/get_followed_artists.md) — Get artists followed by the current authenticated Spotify user.\n- [`get_new_releases`](actions/get_new_releases.md) — Get Spotify new release albums for a market.\n- [`get_playback_state`](actions/get_playback_state.md) — Get the current Spotify playback state for the authenticated user.\n- [`get_playlist`](actions/get_playlist.md) — Get metadata for a Spotify playlist by its playlist ID.\n- [`get_playlist_cover_image`](actions/get_playlist_cover_image.md) — Get Spotify cover images for a playlist ID.\n- [`get_playlist_items`](actions/get_playlist_items.md) — Get playlist items for a Spotify playlist by its playlist ID.\n- [`get_recently_played_tracks`](actions/get_recently_played_tracks.md) — Get recently played Spotify tracks for the authenticated user.\n- [`get_recommendations`](actions/get_recommendations.md) — Get Spotify track recommendations from seed artists, tracks, or genres.\n- [`get_several_albums`](actions/get_several_albums.md) — Get multiple Spotify albums by album ID.\n- [`get_several_artists`](actions/get_several_artists.md) — Get multiple Spotify artists by artist ID.\n- [`get_several_audiobooks`](actions/get_several_audiobooks.md) — Get multiple Spotify audiobooks by audiobook ID.\n- [`get_several_chapters`](actions/get_several_chapters.md) — Get multiple Spotify chapters by chapter ID.\n- [`get_several_episodes`](actions/get_several_episodes.md) — Get multiple Spotify episodes by episode ID.\n- [`get_several_shows`](actions/get_several_shows.md) — Get multiple Spotify shows by show ID.\n- [`get_several_track_audio_features`](actions/get_several_track_audio_features.md) — Get Spotify audio features for multiple track IDs.\n- [`get_several_tracks`](actions/get_several_tracks.md) — Get multiple Spotify tracks by track ID.\n- [`get_show`](actions/get_show.md) — Get a Spotify show by its show ID.\n- [`get_show_episodes`](actions/get_show_episodes.md) — Get Spotify episodes for a show ID.\n- [`get_track`](actions/get_track.md) — Get a Spotify track by its track ID.\n- [`get_track_audio_analysis`](actions/get_track_audio_analysis.md) — Get Spotify audio analysis for a track ID.\n- [`get_track_audio_features`](actions/get_track_audio_features.md) — Get Spotify audio features for a track ID.\n- [`get_user_playlists`](actions/get_user_playlists.md) — Get playlists visible for a Spotify user ID.\n- [`get_user_profile`](actions/get_user_profile.md) — Get a Spotify user profile by Spotify user ID.\n- [`get_user_queue`](actions/get_user_queue.md) — Get the current Spotify queue for the authenticated user.\n- [`get_user_saved_albums`](actions/get_user_saved_albums.md) — Get albums saved by the current authenticated Spotify user.\n- [`get_user_saved_audiobooks`](actions/get_user_saved_audiobooks.md) — Get audiobooks saved by the current authenticated Spotify user.\n- [`get_user_saved_episodes`](actions/get_user_saved_episodes.md) — Get episodes saved by the current authenticated Spotify user.\n- [`get_user_saved_shows`](actions/get_user_saved_shows.md) — Get shows saved by the current authenticated Spotify user.\n- [`get_user_saved_tracks`](actions/get_user_saved_tracks.md) — Get tracks saved by the current authenticated Spotify user.\n- [`get_user_top_artists`](actions/get_user_top_artists.md) — Get the current Spotify user's top artists for a selected affinity time range.\n- [`get_user_top_tracks`](actions/get_user_top_tracks.md) — Get the current Spotify user's top tracks for a selected affinity time range.\n- [`pause_playback`](actions/pause_playback.md) — Pause Spotify playback on the targeted device or current active device.\n- [`remove_playlist_items`](actions/remove_playlist_items.md) — Remove tracks or episodes from a Spotify playlist.\n- [`remove_user_s_saved_audiobooks`](actions/remove_user_s_saved_audiobooks.md) — Remove one or more Spotify audiobooks from the authenticated user's library.\n- [`remove_user_s_saved_episodes`](actions/remove_user_s_saved_episodes.md) — Remove one or more Spotify episodes from the authenticated user's library.\n- [`remove_user_s_saved_shows`](actions/remove_user_s_saved_shows.md) — Remove one or more Spotify shows from the authenticated user's library.\n- [`remove_user_s_saved_tracks`](actions/remove_user_s_saved_tracks.md) — Remove one or more Spotify tracks from the authenticated user's library.\n- [`remove_users_saved_albums`](actions/remove_users_saved_albums.md) — Remove one or more Spotify albums from the authenticated user's library.\n- [`save_albums_for_current_user`](actions/save_albums_for_current_user.md) — Save one or more Spotify albums to the authenticated user's library.\n- [`save_audiobooks_for_current_user`](actions/save_audiobooks_for_current_user.md) — Save one or more Spotify audiobooks to the authenticated user's library.\n- [`save_episodes_for_current_user`](actions/save_episodes_for_current_user.md) — Save one or more Spotify episodes to the authenticated user's library.\n- [`save_shows_for_current_user`](actions/save_shows_for_current_user.md) — Save one or more Spotify shows to the authenticated user's library.\n- [`save_tracks_for_current_user`](actions/save_tracks_for_current_user.md) — Save one or more Spotify tracks to the authenticated user's library.\n- [`search_items`](actions/search_items.md) — Search Spotify catalog content across one or more resource types with a keyword query.\n- [`seek_to_position`](actions/seek_to_position.md) — Seek the currently playing Spotify item to the given playback position.\n- [`set_playback_volume`](actions/set_playback_volume.md) — Set Spotify playback volume for the targeted playback device.\n- [`set_repeat_mode`](actions/set_repeat_mode.md) — Set Spotify repeat mode for the targeted playback device.\n- [`skip_to_next`](actions/skip_to_next.md) — Skip to the next item in the Spotify playback queue.\n- [`skip_to_previous`](actions/skip_to_previous.md) — Skip to the previous item in the Spotify playback queue.\n- [`start_resume_playback`](actions/start_resume_playback.md) — Start a new Spotify playback context or resume playback on the targeted device.\n- [`toggle_playback_shuffle`](actions/toggle_playback_shuffle.md) — Enable or disable Spotify playback shuffle on the targeted device.\n- [`transfer_playback`](actions/transfer_playback.md) — Transfer Spotify playback to another available device.\n- [`unfollow_artists_or_users`](actions/unfollow_artists_or_users.md) — Unfollow one or more Spotify artists or users on behalf of the authenticated user.\n- [`unfollow_playlist`](actions/unfollow_playlist.md) — Unfollow a Spotify playlist on behalf of the authenticated user.\n- [`update_playlist_items`](actions/update_playlist_items.md) — Replace all items in a Spotify playlist or reorder an existing range of items.\n\n## Safety\n\n- Read actions (get / list / search) are safe to run directly.\n- **Create, update, send, or post actions change Spotify state — confirm the exact payload and effect with the user before running.**\n- **Delete or remove actions are destructive — always confirm the target and get explicit approval first.**\n\n## First-time setup\n\nThese are **one-time** steps — do not repeat them on every call. Run a step only when a command fails for the matching reason.\n\n- **`oo: command not found`** — install the oo CLI (other platforms: <https://cli.oomol.com/install-guide.md>):\n\n  ```bash\n  curl -fsSL https://cli.oomol.com/install.sh | bash    # macOS / Linux\n  ```\n\n  ```powershell\n  irm https://cli.oomol.com/install.ps1 | iex           # Windows PowerShell\n  ```\n\n- **Not signed in / authentication error** — sign in to your OOMOL account once:\n\n  ```bash\n  oo auth login\n  ```\n\n- **`scope_missing` / `credential_expired` / `app_not_ready` / `app_not_found`** — Spotify is not connected, or the connection expired or lacks a scope. Connect once (auth type: OAuth2) at:\n\n  ```text\n  https://console.oomol.com/app-connections?provider=spotify\n  ```\n\n- **HTTP 402 / `OOMOL_INSUFFICIENT_CREDIT`** — billing stop. Recharge at `https://console.oomol.com/billing/token-recharge` before retrying.\n\n## Resources\n\n- Spotify homepage: https://spotify.com\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7btdcy6ktfj8aw5gc3yv9ssx87zr17\",\n  \"slug\": \"oo-spotify\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1780502432833\n}\n\nFile v1.0.0:actions/add_item_to_playback_queue.md\n\n# Spotify · `add_item_to_playback_queue`\n\nAdd a Spotify track or episode to the end of the playback queue.\n\n- **Service**: `spotify`\n- **Action**: `add_item_to_playback_queue`\n- **Action id**: `spotify.add_item_to_playback_queue`\n- **Required scopes**: spotify.playback.write\n\n## Inspect the schema\n\nAlways fetch the authoritative input/output schema before building a payload — fields and defaults can change upstream:\n\n```bash\noo connector schema \"spotify\" --action \"add_item_to_playback_queue\"\n```\n\n## Run\n\n```bash\noo connector run \"spotify\" --action \"add_item_to_playback_queue\" --data '{}' --json\n```\n\nReplace `{}` with a JSON object that matches the input schema. The response is `{ \"data\": ..., \"meta\": { \"executionId\": \"...\" } }`.\n\n> **Write action.** This changes Spotify state. Confirm the exact payload and intended effect with the user before running.\n\nFile v1.0.0:actions/add_items_to_playlist.md\n\n# Spotify · `add_items_to_playlist`\n\nAdd tracks or episodes to a Spotify playlist in the requested order.\n\n- **Service**: `spotify`\n- **Action**: `add_items_to_playlist`\n- **Action id**: `spotify.add_items_to_playlist`\n- **Required scopes**: spotify.playlists.write\n\n## Inspect the schema\n\nAlways fetch the authoritative input/output schema before building a payload — fields and defaults can change upstream:\n\n```bash\noo connector schema \"spotify\" --action \"add_items_to_playlist\"\n```\n\n## Run\n\n```bash\noo connector run \"spotify\" --action \"add_items_to_playlist\" --data '{}' --json\n```\n\nReplace `{}` with a JSON object that matches the input schema. The response is `{ \"data\": ..., \"meta\": { \"executionId\": \"...\" } }`.\n\n> **Write action.** This changes Spotify state. Confirm the exact payload and intended effect with the user before running.\n\nFile v1.0.0:actions/change_playlist_details.md\n\n# Spotify · `change_playlist_details`\n\nUpdate Spotify playlist metadata such as name, description, visibility, or collaborative state.\n\n- **Service**: `spotify`\n- **Action**: `change_playlist_details`\n- **Action id**: `spotify.change_playlist_details`\n- **Required scopes**: spotify.playlists.write\n\n## Inspect the schema\n\nAlways fetch the authoritative input/output schema before building a payload — fields and defaults can change upstream:\n\n```bash\noo connector schema \"spotify\" --action \"change_playlist_details\"\n```\n\n## Run\n\n```bash\noo connector run \"spotify\" --action \"change_playlist_details\" --data '{}' --json\n```\n\nReplace `{}` with a JSON object that matches the input schema. The response is `{ \"data\": ..., \"meta\": { \"executionId\": \"...\" } }`.\n\nFile v1.0.0:actions/check_saved_albums.md\n\n# Spotify · `check_saved_albums`\n\nCheck whether the current authenticated Spotify user has saved the given albums.\n\n- **Service**: `spotify`\n- **Action**: `check_saved_albums`\n- **Action id**: `spotify.check_saved_albums`\n- **Required scopes**: spotify.library.read\n\n## Inspect the schema\n\nAlways fetch the authoritative input/output schema before building a payload — fields and defaults can change upstream:\n\n```bash\noo connector schema \"spotify\" --action \"check_saved_albums\"\n```\n\n## Run\n\n```bash\noo connector run \"spotify\" --action \"check_saved_albums\" --data '{}' --json\n```\n\nReplace `{}` with a JSON object that matches the input schema. The response is `{ \"data\": ..., \"meta\": { \"executionId\": \"...\" } }`.\n\nFile v1.0.0:actions/check_saved_audiobooks.md\n\n# Spotify · `check_saved_audiobooks`\n\nCheck whether the current authenticated Spotify user has saved the given audiobooks.\n\n- **Service**: `spotify`\n- **Action**: `check_saved_audiobooks`\n- **Action id**: `spotify.check_saved_audiobooks`\n- **Required scopes**: spotify.library.read\n\n## Inspect the schema\n\nAlways fetch the authoritative input/output schema before building a payload — fields and defaults can change upstream:\n\n```bash\noo connector schema \"spotify\" --action \"check_saved_audiobooks\"\n```\n\n## Run\n\n```bash\noo connector run \"spotify\" --action \"check_saved_audiobooks\" --data '{}' --json\n```\n\nReplace `{}` with a JSON object that matches the input schema. The response is `{ \"data\": ..., \"meta\": { \"executionId\": \"...\" } }`.\n\nFile v1.0.0:actions/check_saved_episodes.md\n\n# Spotify · `check_saved_episodes`\n\nCheck whether the current authenticated Spotify user has saved the given episodes.\n\n- **Service**: `spotify`\n- **Action**: `check_saved_episodes`\n- **Action id**: `spotify.check_saved_episodes`\n- **Required scopes**: spotify.library.read\n\n## Inspect the schema\n\nAlways fetch the authoritative input/output schema before building a payload — fields and defaults can change upstream:\n\n```bash\noo connector schema \"spotify\" --action \"check_saved_episodes\"\n```\n\n## Run\n\n```bash\noo connector run \"spotify\" --action \"check_saved_episodes\" --data '{}' --json\n```\n\nReplace `{}` with a JSON object that matches the input schema. The response is `{ \"data\": ..., \"meta\": { \"executionId\": \"...\" } }`.\n\nFile v1.0.0:actions/check_saved_shows.md\n\n# Spotify · `check_saved_shows`\n\nCheck whether the current authenticated Spotify user has saved the given shows.\n\n- **Service**: `spotify`\n- **Action**: `check_saved_shows`\n- **Action id**: `spotify.check_saved_shows`\n- **Required scopes**: spotify.library.read\n\n## Inspect the schema\n\nAlways fetch the authoritative input/output schema before building a payload — fields and defaults can change upstream:\n\n```bash\noo connector schema \"spotify\" --action \"check_saved_shows\"\n```\n\n## Run\n\n```bash\noo connector run \"spotify\" --action \"check_saved_shows\" --data '{}' --json\n```\n\nReplace `{}` with a JSON object that matches the input schema. The response is `{ \"data\": ..., \"meta\": { \"executionId\": \"...\" } }`.\n\nFile v1.0.0:actions/check_saved_tracks.md\n\n# Spotify · `check_saved_tracks`\n\nCheck whether the current authenticated Spotify user has saved the given tracks.\n\n- **Service**: `spotify`\n- **Action**: `check_saved_tracks`\n- **Action id**: `spotify.check_saved_tracks`\n- **Required scopes**: spotify.library.read\n\n## Inspect the schema\n\nAlways fetch the authoritative input/output schema before building a payload — fields and defaults can change upstream:\n\n```bash\noo connector schema \"spotify\" --action \"check_saved_tracks\"\n```\n\n## Run\n\n```bash\noo connector run \"spotify\" --action \"check_saved_tracks\" --data '{}' --json\n```\n\nReplace `{}` with a JSON object that matches the input schema. The response is `{ \"data\": ..., \"meta\": { \"executionId\": \"...\" } }`.\n\nFile v1.0.0:actions/check_user_follows_artists_or_users.md\n\n# Spotify · `check_user_follows_artists_or_users`\n\nCheck whether the current authenticated Spotify user follows the given artists or users.\n\n- **Service**: `spotify`\n- **Action**: `check_user_follows_artists_or_users`\n- **Action id**: `spotify.check_user_follows_artists_or_users`\n- **Required scopes**: spotify.follow.read\n\n## Inspect the schema\n\nAlways fetch the authoritative input/output schema before building a payload — fields and defaults can change upstream:\n\n```bash\noo connector schema \"spotify\" --action \"check_user_follows_artists_or_users\"\n```\n\n## Run\n\n```bash\noo connector run \"spotify\" --action \"check_user_follows_artists_or_users\" --data '{}' --json\n```\n\nReplace `{}` with a JSON object that matches the input schema. The response is `{ \"data\": ..., \"meta\": { \"executionId\": \"...\" } }`.\n\nFile v1.0.0:actions/check_users_follow_playlist.md\n\n# Spotify · `check_users_follow_playlist`\n\nCheck whether the given Spotify users follow a playlist.\n\n- **Service**: `spotify`\n- **Action**: `check_users_follow_playlist`\n- **Action id**: `spotify.check_users_follow_playlist`\n- **Required scopes**: spotify.playlists.read\n\n## Inspect the schema\n\nAlways fetch the authoritative input/output schema before building a payload — fields and defaults can change upstream:\n\n```bash\noo connector schema \"spotify\" --action \"check_users_follow_playlist\"\n```\n\n## Run\n\n```bash\noo connector run \"spotify\" --action \"check_users_follow_playlist\" --data '{}' --json\n```\n\nReplace `{}` with a JSON object that matches the input schema. The response is `{ \"data\": ..., \"meta\": { \"executionId\": \"...\" } }`.","readmeExcerpt":"Skill: Spotify Owner: oomol Summary: Spotify (spotify.com). Use this skill for ANY Spotify request — reading, creating, updating, and deleting data. Whenever a task involves Spotify, use this skill instead of calling the API directly. Tags: latest:1.0.4 Version history: v1.0.4 | 2026-09-20T03:37:39.736Z | user - Operate Spotify through the OOMOL-connected account using the oo CLI. - Search and retrieve Spotify artist","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"oo connector schema \"spotify\" --action \"<action_name>\""},{"language":"bash","snippet":"oo connector run \"spotify\" --action \"<action_name>\" --data '<json>' --json"},{"language":"bash","snippet":"curl -fsSL https://cli.oomol.com/install.sh | bash    # macOS / Linux"},{"language":"bash","snippet":"curl -fsSL https://cli.oomol.com/install.sh | bash    # macOS / Linux"},{"language":"powershell","snippet":"irm https://cli.oomol.com/install.ps1 | iex           # Windows PowerShell"},{"language":"bash","snippet":"oo auth login"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: oo-spotify\ndescription: \"Spotify (spotify.com). Use this skill for ANY Spotify request — reading, creating, updating, and deleting data. Whenever a task involves Spotify, use this skill instead of calling the API directly.\"\nallowed-tools: [Bash(oo *)]\nmetadata:\n  title: \"Spotify\"\n  author: \"OOMOL\"\n  version: \"1.0.4\"\n  services: [\"spotify\"]\n  icon: \"https://static.oomol.com/logo/third-party/spotify.svg\"\n---\n\n# Spotify\n\nOperate **Spotify** through your OOMOL-connected account. This skill calls the `spotify` connector with the [oo CLI](https://github.com/oomol-lab/oo-cli); OOMOL injects credentials server-side, so you never handle raw tokens.\n\n## Running an action\n\nAssume the user has already installed the oo CLI, signed in, and connected Spotify. **Do not run `oo auth login` or open the connection URL proactively — just run the action.** Fall back to [First-time setup](#first-time-setup) only when a command actually fails with an auth or connection error.\n\n**1. Inspect the contract** to get the authoritative input/output schema before building a payload:\n\n```bash\noo connector schema \"spotify\" --action \"<action_name>\"\n```\n\n**2. Run the action** with a JSON payload that matches the input schema:\n\n```bash\noo connector run \"spotify\" --action \"<action_name>\" --data '<json>' --json\n```\n\n- `--data` takes a JSON object string or `@path/to/file.json`; omit it to send `{}`.\n- The response is `{ \"data\": ..., \"meta\": { \"executionId\": \"...\" } }`; the execution id lives under `meta.executionId`.\n\nEach action is listed below with a one-line description; actions that change state carry a `[write]` or `[destructive]` tag. Before constructing `--data`, fetch the action's live schema with `oo connector schema` to get its authoritative input fields.\n\n## Available actions\n\n- `add_item_to_playback_queue` — Add a Spotify track or episode to the end of the playback queue. [write]\n- `add_items_to_playlist` — Add tracks or episodes to a Spotify playlist in the requested order. [write]\n- `change_playlist_details` — Update Spotify playlist metadata such as name, description, visibility, or collaborative state. [write]\n- `check_saved_albums` — Check whether the current authenticated Spotify user has saved the given albums.\n- `check_saved_audiobooks` — Check whether the current authenticated Spotify user has saved the given audiobooks.\n- `check_saved_episodes` — Check whether the current authenticated Spotify user has saved the given episodes.\n- `check_saved_shows` — Check whether the current authenticated Spotify user has saved the given shows.\n- `check_saved_tracks` — Check whether the current authenticated Spotify user has saved the given tracks.\n- `check_user_follows_artists_or_users` — Check whether the current authenticated Spotify user follows the given artists or users.\n- `check_users_follow_playlist` — Check whether the given Spotify users follow a playlist.\n- `create_playlist` — Create a Spotify playlist for a user account owned by the authenticated user. [w"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7btdcy6ktfj8aw5gc3yv9ssx87zr17\",\n  \"slug\": \"oo-spotify\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1789875459736\n}"},{"path":"skill-card.md","content":"## Description:\n\nSpotify skill for reading, creating, updating, and deleting Spotify data through an OOMOL-connected account.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[oomol](https://clawhub.ai/user/oomol)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nExternal users and developers use this skill to let an agent search Spotify content, inspect user library and playback state, and manage playlists, saved items, follows, queues, devices, and playback through the oo CLI after the account is connected.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Fallback setup includes direct remote installer commands for the oo CLI.\n\nMitigation: Do not allow an agent to run the installer automatically; install or verify the CLI through a trusted method before using the skill.\n\nRisk: Write and destructive Spotify actions can change playback, playlists, follows, saved content, queue state, or library contents.\n\nMitigation: Require confirmation for write actions and explicit approval for destructive actions, including the exact target and payload.\n\n## Reference(s):\n\n- [ClawHub Spotify Skill](https://clawhub.ai/oomol/skills/oo-spotify)\n- [oo CLI](https://github.com/oomol-lab/oo-cli)\n- [Spotify](https://spotify.com)\n\n## Skill Output:\n\n**Output Type(s):** [guidance, shell commands, configuration, text]\n\n**Output Format:** [Markdown instructions with shell command examples and JSON payload guidance]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Commands use the oo CLI to inspect connector schemas and run Spotify actions; executed actions return JSON responses.]\n\n## Skill Version(s):\n\n1.0.4 (source: server evidence release.version and skill metadata)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1403,"uniquenessScore":42,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-12T02:21:05.420Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-12T02:21:05.420Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-13T08:27:18.605Z","emptyReason":null},"items":[{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}