Play music or a story
make_playableCreate one playable OffStereo card for a recording, video, or narrated story. experience=media plays YouTube, SoundCloud, or Internet Archive directly using a source link or provider-specific search fields. 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 an exact requested length. Spotify, Apple Music, and SoundCloud URLs are story seeds unless the listener requests only the recording. Playlist requests use create_playlist with previewOnly=true; saving to OffStereo uses save_to_offstereo. existingSessionId opens a selected library story; get_session is reserved for card polling. The mounted card owns live progress and playback. Assistant prose should avoid restating transient stages such as building, recording, or still working because they become stale as the card updates, and should wait for Ready before stating final counts. A tool call opens the card without starting playback.
Tool call template
This tool declares no required parameters. Add optional parameters from the input schema as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {},
"name": "make_playable"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| mode | No | fresh starts an explicitly new story; auto may reuse an exact strong match. | |
| album | No | Exact album or EP title, paired with artist when the listener names or shows a specific record. | |
| title | No | Short canonical artist, track, album, or subject title for the card, especially useful for an identified image or a prompt that also contains workflow instructions. | |
| track | No | Exact song title, paired with artist for reliable single_track matching. | |
| artist | No | Exact artist, paired with track for a one-song card or with album for an album-focused story. | |
| length | No | short fits an explicitly quick, brief, or concise narrated story and targets three narration-and-record chapters; standard keeps the full editorial arc. | |
| prompt | No | What the listening experience should explain. | |
| tracks | No | Optional: exact records the story should always include as playable tracks — e.g. every song a paired video names. They are pinned into the show in this order and curation fills the remaining slots up to trackCount, so a companion keeps the records the video discusses. Leave unset for normal curation. | |
| requestId | No | Optional UUID for a new progressive story request. Reuse the same UUID when retrying the same request to avoid duplicate work. | |
| sourceUrl | No | An http(s) article or source URL to adapt. | |
| videoMode | No | When true, the story opens on a third-person editorial hook with no DJ greeting or time-of-day welcome — for a companion story paired with a video. Pair with an explicit `title` so page title, URL, and register all match the video. | |
| experience | No | media plays a YouTube video, SoundCloud recording, or Internet Archive file directly; pass sourceUrl or provider-specific search fields. single_track means one immediate song card; story means progressive narration. Direct playback creates only a recording card. | |
| sourceText | No | Source text or conversation context to adapt. | |
| trackCount | No | Exact number of songs requested for a narrated story (2-12). Use 1 with experience=single_track. | |
| resumeShowId | No | Rebuild an unfinished show in place, keeping its id and URL, instead of creating a second one. Pass the id of a show whose `retryable` is true. Rejected for a show that already finished or that belongs to someone else. | |
| mediaProvider | No | Provider for experience=media. auto identifies the provider from sourceUrl. YouTube and Archive accept a search prompt; SoundCloud needs a track URL or exact artist plus track. Archive albums/concerts require the exact audio file link. | |
| personalization | No | library uses connected-listener taste as retrieval seeds; none is the default. | |
| existingSessionId | No | The chosen library story id for opening through the canonical player contract; get_session remains application polling. |
Output Schema
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Stable session id, reused for get_session and steer_session. | |
| mode | No | ||
| queue | No | Ordered narration and track items. | |
| title | Yes | ||
| object | Yes | playable_session, lineage, or lineage_show. | |
| status | Yes | Lifecycle: building, partial, ready, failed, and similar. | |
| thesis | No | ||
| webUrl | No | ||
| actions | No | ||
| chapters | No | ||
| progress | No | Current build stage and message. | |
| warnings | No | ||
| webLabel | No | ||
| citations | No | ||
| storyScope | No | Count-level result assessment. | |
| description | No | ||
| queueUpdate | No | Most recent model-authored queue change. | |
| resumeStack | No | ||
| activeBranch | No | ||
| nowPlayingContext | No | ||
| playbackDirective | No | One-shot transport request the mounted card applies. |