{"apiVersion":"v1","directorySlug":"offstereo-mcp-2fe77f3b34","title":"Offstereo","description":null,"pageUrl":"https://www.mcpbundles.com/skills/offstereo-mcp-2fe77f3b34","connectPath":"importable","connectAction":"import_server","catalogListing":false,"bundleSlug":null,"listingKind":"remote_mcp","kind":"provider","transportUrl":"https://www.offstereo.com/api/mcp","hostedMcpUrl":null,"toolCount":12,"toolInventoryStatus":"observed","refreshedAt":"2026-11-03T13:26:00.516172+00:00","registryName":"com.offstereo/offstereo-mcp-2fe77f3b34","registryVersion":"2026.11.3","registryEligible":true,"tools":[{"name":"make_playable","description":"Create one playable OffStereo card for a direct standalone-song or narrated-story request. Discovery and Music Today already play their songs, so keep those results in their original card unless the listener asks for dedicated controls. experience=single_track returns exactly one recording with no narration or library save; pass artist plus track. experience=story progressively creates a sourced story; mode=fresh starts a new build. Pass artist plus album for an exact record and trackCount for a","inputSchema":{"type":"object","properties":{"mode":{"enum":["auto","fresh"],"type":"string"},"album":{"type":"string"},"track":{"type":"string"},"artist":{"type":"string"},"length":{"enum":["short","standard"],"type":"string"},"prompt":{"type":"string"},"tracks":{"type":"array","items":{"type":"object","required":["artist","title"],"properties":{"artist":{"type":"string"}}}},"sourceUrl":{"type":"string"},"videoMode":{"type":"boolean"},"experience":{"enum":["story","single_track"],"type":"string"},"sourceText":{"type":"string"},"trackCount":{"type":"number"},"resumeShowId":{"type":"string"},"personalization":{"enum":["library","none"],"type":"string"},"existingSessionId":{"type":"string"}}},"title":"Play music or a story","logicalName":"make_playable","displayName":"Play music or a story","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_session","description":"Application polling for an already-mounted OffStereo card. It refreshes one PlayableSession in place. A selected library story opens through make_playable(existingSessionId), while playback and contextual follow-ups use steer_session.","inputSchema":{"type":"object","required":["sessionId"],"properties":{"sessionId":{"type":"string"}}},"title":"Refresh the player","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_session","displayName":"Refresh the player"},{"name":"steer_session","description":"Control and contextual follow-ups for the active player: pause, resume, skip, play the next song, append one exact next song, adjust the music level, explain why a song is present, open an explicitly requested documented sample lineage, or return to the story. The result updates the mounted card in place. For an AI-DJ transition to a newly chosen record, pass queueTrack with exact artist and title; OffStereo resolves it and appends it to this same widget so the current song can finish and auto-a","inputSchema":{"type":"object","required":["instruction"],"properties":{"sessionId":{"type":"string"},"positionMs":{"type":"number"},"queueTrack":{"type":"object","required":["artist","title"],"properties":{"artist":{"type":"string"},"reason":{"type":"string"}}},"instruction":{"type":"string"},"activeItemId":{"type":"string"},"playbackState":{"enum":["playing","paused"],"type":"string"},"acknowledgeDirectiveId":{"type":"string"}}},"title":"Steer the listening session","logicalName":"steer_session","displayName":"Steer the listening session","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"discover","description":"Discover genre-aware new releases, strong public-archive matches, or popular OffStereo shows. Call exactly once per listener request: put every positive genre into the same genres array, use [] when none were requested, and avoid one call or card per genre. query carries the listener's full wording, exclusions, counts, and no-padding constraint. Results remain relevant rather than padding a requested genre or archive search with unrelated rows. Dated music-history requests use music_today and ar","inputSchema":{"type":"object","required":["type","genres"],"properties":{"type":{"enum":["new_releases","archive","search","popular"],"type":"string"},"limit":{"type":"number"},"query":{"type":"string"},"genres":{"type":"array","items":{"type":"string"}},"allowSave":{"type":"boolean"},"allowBuild":{"type":"boolean"},"playableOnly":{"type":"boolean"},"perGenreLimit":{"type":"number"}}},"title":"Discover music","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"discover","displayName":"Discover music"},{"name":"music_today","description":"Call exactly once for a 'today in music' or dated music-history request. One response already combines album anniversaries, artist birthdays and memorials, current releases, current US song-chart context, and related playable OffStereo stories; use that one combined call rather than separate history, releases, charts, or shows calls. dateMode=today uses the listener's current day and omits date; dateMode=explicit pairs with a named YYYY-MM-DD date. limit is the maximum total across the combined","inputSchema":{"type":"object","required":["dateMode"],"properties":{"date":{"type":"string"},"limit":{"type":"number"},"dateMode":{"enum":["today","explicit"],"type":"string"},"allowSave":{"type":"boolean"},"allowBuild":{"type":"boolean"},"playableOnly":{"type":"boolean"}}},"title":"Music today","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"music_today","displayName":"Music today"},{"name":"explore_lineage","description":"Explore documented sample lineage. Pass artist + track for one song, or topic for one multi-song narrated lineage story. OffStereo only returns connections it can source and withholds uncertain matches rather than guessing.","inputSchema":{"type":"object","properties":{"topic":{"type":"string"},"track":{"type":"string"},"artist":{"type":"string"}}},"title":"Explore sample lineage","logicalName":"explore_lineage","displayName":"Explore sample lineage","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"create_playlist","description":"Create one playlist from a natural-language idea or explicit track list. Call exactly once per listener turn: do not inspect the result and make a corrective second call or stack another playlist card in the same response. previewOnly=true returns one authoritative playlist that can be heard before saving and needs no music-service connection. After explicit approval, previewOnly=false with the approved tracks and the same concise editorial name creates one private playlist in the listener's act","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"count":{"type":"number"},"prompt":{"type":"string"},"tracks":{"type":"array","items":{"type":"object","required":["artist","title"],"properties":{"artist":{"type":"string"}}}},"service":{"enum":["spotify","apple_music"],"type":"string"},"previewOnly":{"type":"boolean"},"pendingActionId":{"type":"string"},"requiredArtists":{"type":"array","items":{"type":"string"}},"allowSecondPlaylist":{"type":"boolean"}}},"title":"Create a playlist","logicalName":"create_playlist","displayName":"Create a playlist","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"save_session","description":"Explicitly save the matched music from one listening session as a private playlist in the listener's active music service. Pass service only when the listener explicitly names Spotify or Apple Music. Unmatched songs are excluded and reported. If sign-in is needed, OffStereo preserves the request for one safe retry.","inputSchema":{"type":"object","properties":{"name":{"type":"string"},"service":{"enum":["spotify","apple_music"],"type":"string"},"sessionId":{"type":"string"},"pendingActionId":{"type":"string"}}},"title":"Save the story playlist","logicalName":"save_session","displayName":"Save the story playlist","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"prepare_episode","description":"Prepare one finished OffStereo story to become a private Spotify episode after the listener explicitly asks. OffStereo packages its completed intro, ordered narration, sign-off, branded title, show notes, OffStereo cover, chapters, and song timeline, then returns an honest handoff: the episode is not in Spotify until the listener finishes with Spotify's Save to Spotify helper on their own computer. Use the active or selected story's sessionId. This is for a narrated story, not a playlist or an u","inputSchema":{"type":"object","required":["sessionId"],"properties":{"sessionId":{"type":"string"}}},"title":"Prepare a Spotify episode","logicalName":"prepare_episode","displayName":"Prepare a Spotify episode","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"manage_owned_item","description":"Manage the signed-in listener's own OffStereo stories or service playlists. Removing an OffStereo story is a recoverable archive operation, and restore brings it back. Removing an owned Spotify playlist means remove from library because Spotify does not permanently delete playlists; the operation follows an explicit confirmation turn. Apple Music's public API does not expose playlist deletion, so that case returns an honest unsupported handoff. confirm=true records explicit confirmation of the n","inputSchema":{"type":"object","required":["itemType","id","action"],"properties":{"id":{"type":"string"},"action":{"enum":["archive","restore","remove"],"type":"string"},"confirm":{"type":"boolean"},"service":{"enum":["spotify","apple_music"],"type":"string"},"itemType":{"enum":["story","playlist"],"type":"string"}}},"title":"Manage my library","logicalName":"manage_owned_item","displayName":"Manage my library","annotations":{"untrustedContentHint":true,"readOnlyHint":true}},{"name":"get_story_audio","description":"Get a finished OffStereo story as ONE downloadable MP3 — the narrated story, without the records. Use this on any surface where a player card cannot render: send it as a WhatsApp or Telegram voice note, attach it to an email, play it over a phone or speaker, or hand it to someone as a file. The URL is public and needs no OffStereo account, so it can be forwarded to anyone. It is narration only, which is why it is freely shareable — say so rather than promising the songs; the songs are at webUrl.","inputSchema":{"type":"object","properties":{"slug":{"type":"string"},"showId":{"type":"string"}}},"title":"get story audio","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"get_story_audio","displayName":"get story audio"},{"name":"my_offstereo","description":"Call once to return the signed-in listener's OffStereo library overview, currently including their completed, unarchived shows. This is the primary personal-library tool.","inputSchema":{"type":"object","properties":{"limit":{"type":"number"}}},"title":"My OffStereo","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"logicalName":"my_offstereo","displayName":"My OffStereo"}],"toolSource":"directory_preview","agentAction":"both","installLinks":[{"id":"cursor","label":"Cursor","href":"cursor://anysphere.cursor-deeplink/mcp/install?name=Offstereo&config=eyJ1cmwiOiAiaHR0cHM6Ly93d3cub2Zmc3RlcmVvLmNvbS9hcGkvbWNwIn0%3D"},{"id":"vscode","label":"VS Code","href":"vscode:mcp/install?%7B%22name%22%3A%22Offstereo%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fwww.offstereo.com%2Fapi%2Fmcp%22%7D"},{"id":"vscode-insiders","label":"VS Code Insiders","href":"vscode-insiders:mcp/install?%7B%22name%22%3A%22Offstereo%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fwww.offstereo.com%2Fapi%2Fmcp%22%7D"},{"id":"claude-web","label":"Claude.ai","href":"https://claude.ai/customize/connectors?modal=add-custom-connector&connectorName=Offstereo&connectorUrl=https%3A%2F%2Fwww.offstereo.com%2Fapi%2Fmcp"},{"id":"codex","label":"Codex","copyText":"codex mcp add \"Offstereo\" --url \"https://www.offstereo.com/api/mcp\""},{"id":"chatgpt","label":"ChatGPT","href":"https://www.mcpbundles.com/docs/integrations/chatgpt"}],"catalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/offstereo-mcp-2fe77f3b34","callUrl":"https://www.mcpbundles.com/api/directory/v1/servers/offstereo-mcp-2fe77f3b34/tools/{tool}","mcpServerUrl":"https://www.offstereo.com/api/mcp","liveCatalogUrl":"https://www.mcpbundles.com/api/directory/v1/servers/offstereo-mcp-2fe77f3b34?live=1"}