Skip to main content
Glama

Server Details

Builds narrated, playable music stories, explores sample lineage, and saves verified playlists.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over the last 24 hours
Last Tested
Transport
Streamable HTTP · MCP 2024-11-05
URL
ChatGPT
–
Claude
–

TDQS

A3.6/5.0

Scored across 18 tools

Disambiguation2/5

Several tools occupy the same conceptual space: create_playlist, make_playable, save_to_offstereo, save_session, and prepare_episode all sit on the 'turn this into a saved/playable artifact' path, and discover vs music_today vs make_playable cover overlapping lookup flows. The descriptions work hard to steer ('use X instead of Y', 'call exactly once'), which itself signals that an agent could easily pick the wrong one. Only the operator tools and get_story_audio are cleanly separated.

Naming Consistency4/5

The dominant convention is verb_noun (create_playlist, get_session, save_to_offstereo, steer_session, manage_owned_item, update_editorial_brief), which is predictable. Three outliers break the pattern: discover (bare verb), music_today (noun phrase), and my_offstereo (possessive noun), but the majority is coherent.

Tool Count3/5

18 tools is borderline heavy for a single server and the set mixes listener-facing, operator-only, and internal playback-plumbing concerns (resolve_media, get_session). Nothing is obviously trivial, but the count inflates because of the multiple near-parallel save/play paths rather than distinct capabilities.

Completeness3/5

The surface covers discovery, playable creation, saving, library management, story authoring, and editorial workflow, which is broad. However there are dangling references — get_story_audio instructs polling 'get_show until status is ready' but no get_show tool exists — and there is no explicit story search/listing beyond my_offstereo, leaving real dead ends.

Available Tools

18 tools
create_authored_storyCreate from your set list and notesAInspect

Use action=article with title, url and pasted text to draft a cited adaptation for review; this does not fetch the URL. Inspect its evidence and narration before action=review. Use action=intake with title and notes to organize a pasted document into an editable draft. Review all extracted identities and unassigned lines before action=review. Turn a supplied ordered set list and exact liner notes into a playable story without rewriting them. First use action=review with material, present the returned recordings, narration and issues for approval, then action=prepare with that reviewId after approval. To edit an owned story, action=revise takes sessionId and narration changes, returns a new review, and leaves the original unchanged. Reviews expire after 30 minutes. After preparation, export_video with sessionId and narration beatId creates a short narrated video; video_status with jobId reports progress and signed-in browser download links. Downloads require the same owner to sign in; these links are not public or bearer download URLs. Use credits with sessionId for the saved transcript, source credits, recording identities and owner-only return path. Does not publish or start playback. Music rights are not granted and narration export does not include music.

Inputs: action (required), url, text, jobId, +7 more.

create_playlistCreate a playlistAInspect

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. For the normal save flow, use save_to_offstereo with the returned preview id; it saves privately to OffStereo and offers Continue to Apple Music on the website. Only for an explicitly requested direct music-service save after approval, previewOnly=false with the approved tracks and the same concise editorial name creates one private playlist in the listener's active music service. Apple Music is the public save destination; Spotify saving requires an explicitly enabled test deployment. Pass service only when the listener explicitly names a destination. requiredArtists carries every artist the listener named as required. allowSecondPlaylist is true only for an explicit request for a separate additional playlist. Sign-in recovery preserves the exact request and pendingActionId for a safe retry.

Inputs: name, count, prompt, tracks, +5 more. Returns: A playlist result. status is preview (unsaved, hearable), preview_partial, save…

discoverDiscover musicA
Read-onlyIdempotent
Inspect

Discover genre-aware new releases or published OffStereo narrated shows. archive and search query only OffStereo stories, not YouTube, SoundCloud, or Internet Archive recordings. For original recordings, rare mixtapes, or DJ mixes, use external/provider media lookup first and make_playable with experience=media; do not default to an OffStereo archive search or a narrated story. 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 are not a discover mode. playableOnly limits results to music that plays in ChatGPT. allowBuild and allowSave preserve a read-only request. The result card already includes song playback; a separate one-song card is for an explicit request for a dedicated song card.

Inputs: type (required), genres (required), limit, query, +4 more. Returns: A discovery card. object is 'discovery' (new releases or music-today) or 'show_…

explore_lineageExplore sample lineageAInspect

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.

Inputs: topic, track, artist. Returns: A PlayableSession: one canonical OffStereo card with its ordered narration-and-…

get_editorial_briefget editorial briefA
Read-onlyIdempotent
Inspect

Operator only. Read the persisted OffStereo nightly brief: the proposed lineup, ALL alternative candidates and the revision/deadline. Reading does not generate stories or approve publication. For a scheduled text, send the selected titles, why-now and listening payoff, alternatives and Pacific deadline. The lineup builds automatically unless redirected before 06:30 America/Los_Angeles.

Inputs: date.

get_editorial_statusget editorial statusA
Read-onlyIdempotent
Inspect

Operator only. Read the saved OffStereo edition production status, substitutions and held pitches. Includes production.alerts for depleted provider credits. Notify the editor by text when authorized, deduplicate by alert id, and do not claim delivery without a phone receipt. Report actionable failures or substitutions; no generation and no publication mutation.

Inputs: date.

get_sessionRefresh the playerA
Idempotent
Inspect

Application polling for an already-mounted OffStereo card. It refreshes one PlayableSession in place. An optional narration playback receipt can continue the existing research run and requires write access. A selected library story opens through make_playable(existingSessionId), while playback and contextual follow-ups use steer_session.

Inputs: sessionId (required), playingItemId. Returns: A PlayableSession: one canonical OffStereo card with its ordered narration-and-…

get_story_audioget story audioA
Read-onlyIdempotent
Inspect

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. Prefer this over reading a summary aloud in your own synthetic voice: this is the produced story, already voiced. Only finished shows have audio — poll get_show until status is ready.

Inputs: slug, showId.

make_playablePlay music or a storyAInspect

Create one playable OffStereo card for an ordered listening queue, recording, video, or narrated story. For original recordings, rare mixtapes, or DJ mixes, look on external music/video providers first and use experience=media. Do not search the OffStereo story archive first or create a narrated story unless the listener asks for an OffStereo story. For a quick playlist without narration, use experience=media with tracks for exact catalog songs, or mediaItems to interleave catalog songs, YouTube videos, SoundCloud recordings, and Internet Archive tracks in the requested order. Repeated entries are preserved. Verify any claimed sample relationships before selecting pairs; a quick queue does not require producing a researched story. A bare Archive item URL queues its complete ordered track list; an exact file URL selects that recording. A single external recording can also use sourceUrl or provider-specific search fields. Catalog songs use available previews; external recordings retain their provider's playback limits. Discovery and Music Today already play their songs, so keep those results in their original card unless dedicated controls are requested. experience=single_track remains a one-song shortcut with artist plus track. experience=story progressively creates requested narration; mode=fresh starts a new build. Pass artist plus album for an album story and trackCount for its requested length. Direct queues do not save to a library; save_to_offstereo preserves the selection, while create_playlist exports eligible songs to a music service. existingSessionId opens a saved session; get_session polls an already mounted card. The mounted card owns live progress and playback; avoid restating transient stages in prose. A tool call opens the card without starting playback.

Inputs: mode, album, title, track, +15 more. Returns: A PlayableSession: one canonical OffStereo card with its ordered narration-and-…

manage_owned_itemManage my libraryA
Destructive
Inspect

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 named item and operation.

Inputs: id (required), action (required), itemType (required), confirm, +1 more. Returns: Result of managing an owned OffStereo story or service playlist.

music_todayMusic todayA
Read-onlyIdempotent
Inspect

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 response, playableOnly limits rows to music that plays in ChatGPT, and allowBuild=false plus allowSave=false preserves a read-only request. This is the only dated-music tool in the current schema.

Inputs: dateMode (required), date, limit, allowSave, +2 more. Returns: A discovery card. object is 'discovery' (new releases or music-today) or 'show_…

my_offstereoMy OffStereoA
Read-onlyIdempotent
Inspect

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.

Inputs: limit. Returns: The signed-in listener's OffStereo library overview (their completed, unarchive…

prepare_episodePrepare a Spotify episodeA
Idempotent
Inspect

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 unfinished build.

Inputs: sessionId (required). Returns: A prepared Spotify episode handoff bundle. OffStereo produces the finished audi…

resolve_mediaPrepare this recordingB
Idempotent
Inspect

Application-only playback resolution for an item already admitted to the current card. Refreshes expiring media URLs without changing the recording or queue. It can persist the SoundCloud full-recording or preview timing basis, so it requires read and write access.

Inputs: itemId (required), sessionId (required). Returns: ok, error, media, streamKind

save_sessionSave the story playlistAInspect

Explicitly save the matched music from one listening session as a private playlist in the listener's active music service. Apple Music is the public save destination; Spotify saving requires an explicitly enabled test deployment. Pass service only when the listener explicitly names a destination. Unmatched songs are excluded and reported. If sign-in is needed, OffStereo preserves the request for one safe retry.

Inputs: name, service, sessionId, pendingActionId. Returns: A playlist result. status is preview (unsaved, hearable), preview_partial, save…

save_to_offstereoSave to OffStereoA
Idempotent
Inspect

Save the exact existing playlist preview or listening selection privately to OffStereo, without creating an Apple Music playlist, researching, rematching, or starting playback. Pass playlistId from create_playlist(previewOnly=true), or sessionId from the active player. Repeated saves of the same selection return the same saved item. The result offers Continue to Apple Music on the website, where the listener explicitly saves using their browser's Apple session. Preserve videos and other media on OffStereo; only matched songs are eligible for Apple export. Call only after the listener asks to save.

Inputs: requestId, sessionId, playlistId. Returns: A playlist result. status is preview (unsaved, hearable), preview_partial, save…

steer_sessionSteer the listening sessionAInspect

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-advance. Keeping the transition in this queue avoids a second make_playable call. Use instruction='Queue this as the next song without interrupting the current song' to queue ahead, or 'Play this next now' to append and immediately advance. A why-this-song question preserves the queue. sessionId identifies the active session, and activeItemId plus positionMs preserve exact continuity when the card supplies them.

Inputs: instruction (required), sessionId, positionMs, queueTrack, +3 more. Returns: A PlayableSession: one canonical OffStereo card with its ordered narration-and-…

update_editorial_briefupdate editorial briefA
Idempotent
Inspect

Operator only. Apply the editor’s explicit reply to a previously read brief. Requires its current revision and a stable unique requestId reused on retries. Select three IDs, choose a lead, change an angle, add a source-backed candidate, or hold/resume BEFORE the build deadline. add_candidate requires pitch with a unique ID, title, dated whyNow, discovery, listeningPayoff, source URLs and named mediaIdeas. It only adds an unverified proposal; use a separate select action for an explicitly requested swap after reading the new revision. Existing research and playback verification still apply. Requires an explicit editor instruction; locked editions cannot be changed. Does not modify saved stories.

Inputs: date (required), change (required), revision (required), requestId (required).

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables DJs to retrieve BPM, key/Camelot, energy, and other track metadata with provider provenance, score transitions, plan setlists, and control Spotify playlists and playback with staged, revalidated writes for safety.
      MIT
    • A
      license
      A
      quality
      A
      maintenance
      Analyze listening patterns, create custom playlists, discover missing albums, validate radio streams, and provide personalized recommendations through natural language.
      2
      77 npm
      94
      AGPL 3.0
    • A
      license
      A
      quality
      C
      maintenance
      Enables secure interaction with and analysis of a user's Spotify data through the Model Context Protocol, with planned Spotify OAuth 2.0 authorization and Web API integrations. Roadmap includes read-only tools for profiles, playlists, saved tracks, top tracks and artists, recently played items, plus playlist creation and listening analytics.
      1
      MIT
    • A
      license
      Not graded
      quality
      B
      maintenance
      Enables AI assistants to turn music requests into traceable local DJ collections by scanning and indexing audio, planning tracklists, managing durable download jobs, and preparing hash-checked playlists, manifests, and experimental rekordbox exports for DJ app handoff.
      MIT
    Try in Browser

    Glama MCP Gateway

    Add one secure layer between your agents and this server.

    Resources