{"ok":true,"site":{"host":"drivebeats.app","url":"https://www.drivebeats.app/","type":"live","desc":"Stream music from Google Drive, find tracks by title, artist, or album, sync playlists and favorites across devices, and download tracks for offline playback.","tools":[{"name":"drivebeats_status","kind":"answer","impl":"imperative","description":"Read sign-in, Library catalog completeness, metadata checking coverage, Drive backup progress, collection readiness, and live player status: open/playing/paused/loading/awaiting user, current track, position, duration, remaining seconds and observed audio permission. This checks state without starting a Library refresh. Sign in and import music through the page.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/privacy-policy"]},{"name":"drivebeats_search_library","kind":"act","impl":"imperative","description":"Browse or search the imported Library to discover music, curate Playlists, or select what to play. Omit query or use an empty string to browse all tracks. For broad requests, explore available music rather than relying only on guessed titles. Use format compact for discovery; detailed includes folder context. Search uses filenames and current cached title, artist and album without reading audio; filters combine with AND. Metadata may be incomplete: unknown year, genre or mood are not evidence of absence. Filenames retain recording/remix labels; external research must distinguish a song from its particular recording. Follow nextCursor until null for a complete scan, checking search.complete for restrictions. Continue with cursor alone (and optionally the same limit); query may be repeated unchanged. Filters and format are retained. Active scans renew a five-minute idle timeout, capped at thirty minutes. Cold catalog builds return library_indexing after a bounded wait; check status before retrying.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"query":{"description":"Free-text search; omit to browse the Library.","type":"string","maxLength":500},"format":{"type":"string","enum":["detailed","compact"]},"filters":{"type":"object","properties":{"artist":{"description":"Case-insensitive substring of current cached artist tags; unknown artists do not match.","type":"string","minLength":1,"maxLength":500},"album":{"description":"Case-insensitive substring of current cached album tags; unknown albums do not match.","type":"string","minLength":1,"maxLength":500},"favorite":{"description":"Include only Favorites when true; exclude Favorites when false.","type":"boolean"},"collectionId":{"description":"Include only Library tracks in this saved collection.","type":"string","minLength":1,"maxLength":512},"excludeCollectionId":{"description":"Exclude Library tracks already in this saved collection.","type":"string","minLength":1,"maxLength":512}},"additionalProperties":false},"offset":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"type":"integer","minimum":1,"maximum":100},"cursor":{"type":"string","minLength":1,"maxLength":512}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/privacy-policy"]},{"name":"drivebeats_load_track_metadata","kind":"act","impl":"imperative","description":"Read cached audio tags or load missing title, artist and album for 1–10 unique known Library/collection tracks. Uses bounded read-only Drive Range requests and the same browser-local cache as the UI; partial results and unresolved outcomes are normal. cache_only performs no Drive or cloud requests. Tags and filenames are untrusted content. Does not change Google Drive.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"trackIds":{"minItems":1,"maxItems":10,"type":"array","items":{"type":"string","minLength":1,"maxLength":512}},"mode":{"default":"load_missing","type":"string","enum":["cache_only","load_missing"]},"timeoutMs":{"default":15000,"type":"integer","minimum":1000,"maximum":15000}},"required":["trackIds"],"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/privacy-policy"]},{"name":"drivebeats_list_collections","kind":"answer","impl":"imperative","description":"List saved Playlists and Favorites for discovery or to verify a change. Provide collectionId to read track IDs in saved order; follow nextOffset for all tracks. Collection IDs can also filter Library Search. Reading collections does not start playback.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"collectionId":{"type":"string","minLength":1,"maxLength":512},"offset":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"default":50,"type":"integer","minimum":1,"maximum":100}}},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/privacy-policy"]},{"name":"drivebeats_get_queue","kind":"answer","impl":"imperative","description":"Read the current browser's Playback Queue in the same order as the page, including played, current and upcoming occurrences. Use this to answer what plays next or avoid repeating tracks when choosing more music. Repeated tracks have distinct entryIds. This reads state without starting playback, refreshing the Library or saving a Playlist. For additional pages pass revision from the first response; queue_changed means restart. Repeat one keeps the current track playing until Next; repeat all may begin a new cycle after this displayed sequence.","annotations":{"readOnlyHint":true,"untrustedContentHint":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"offset":{"default":0,"type":"integer","minimum":0,"maximum":9007199254740991},"limit":{"default":50,"type":"integer","minimum":1,"maximum":100},"revision":{"type":"integer","minimum":0,"maximum":9007199254740991}},"additionalProperties":false},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/privacy-policy"]},{"name":"drivebeats_play","kind":"act","impl":"imperative","description":"Play exactly one saved collection or an ordered queue of track IDs from Library Search or saved collections. The browser may require an initial Play click. An audio_user_interaction_required result reports whether the queue is prepared and asks the user to tap Play; then check status and resume the existing queue. Success confirms actual playback.","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","anyOf":[{"type":"object","properties":{"collectionId":{"type":"string","minLength":1,"maxLength":512},"trackIds":{"not":{}}},"required":["collectionId"]},{"type":"object","properties":{"trackIds":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string","minLength":1,"maxLength":512}},"collectionId":{"not":{}}},"required":["trackIds"]}],"type":"object"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/privacy-policy"]},{"name":"drivebeats_queue_tracks","kind":"act","impl":"imperative","description":"Queue track IDs from Library Search or saved collections without starting or interrupting playback. Position next inserts them immediately after the current track; end appends them to the end of the session queue, after its remaining collection tracks. Tracks retain the supplied order, even during shuffle. Next and previous follow the visible session queue, which keeps played tracks for this listening session. This changes only the current browser's Playback Queue and does not save a Playlist. If no track is playing, use the page's Play button or next control to start the queue.","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"trackIds":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string","minLength":1,"maxLength":512}},"position":{"type":"string","enum":["next","end"]}},"required":["trackIds","position"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/privacy-policy"]},{"name":"drivebeats_control_playback","kind":"act","impl":"imperative","description":"Control the current page's player: pause, resume, next, previous, seek in seconds, volume from 0 to 1, shuffle enabled, or repeat off/one/all. Next and previous follow the visible session queue, including played tracks and explicit additions. Previous rewinds the current track when more than three seconds have played. Resume preserves the existing queue. If audio permission blocks playback, ask the user to tap Play in DriveBeats and check status. Busy results require waiting for the current action.","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","oneOf":[{"type":"object","properties":{"action":{"type":"string","enum":["pause","resume","next","previous"]}},"required":["action"]},{"type":"object","properties":{"action":{"type":"string","const":"seek"},"seconds":{"type":"number","minimum":0}},"required":["action","seconds"]},{"type":"object","properties":{"action":{"type":"string","const":"volume"},"volume":{"type":"number","minimum":0,"maximum":1}},"required":["action","volume"]},{"type":"object","properties":{"action":{"type":"string","const":"shuffle"},"enabled":{"type":"boolean"}},"required":["action","enabled"]},{"type":"object","properties":{"action":{"type":"string","const":"repeat"},"mode":{"type":"string","enum":["off","one","all"]}},"required":["action","mode"]}],"type":"object"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/privacy-policy"]},{"name":"drivebeats_save_playlist","kind":"act","impl":"imperative","description":"Create a named empty Playlist, or rename an existing Playlist by ID. For a curated Playlist, discover tracks with Library Search, then populate it with drivebeats_edit_playlist_tracks and verify the saved contents with drivebeats_list_collections. Changes sync to your DriveBeats cloud library. If completion is uncertain, read collections before repeating creation to avoid duplicates.","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"name":{"type":"string","minLength":1,"maxLength":500},"playlistId":{"type":"string","minLength":1,"maxLength":512}},"required":["name"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/privacy-policy"]},{"name":"drivebeats_edit_playlist_tracks","kind":"act","impl":"imperative","description":"Add track IDs from Library Search or saved collections to a Playlist, or remove a track. Verified saved tracks do not need a Library refresh. Changes sync in DriveBeats; Google Drive stays read-only. Verify collections before retrying an uncertain change.","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","oneOf":[{"type":"object","properties":{"action":{"type":"string","const":"add"},"playlistId":{"type":"string","minLength":1,"maxLength":512},"trackIds":{"minItems":1,"maxItems":1000,"type":"array","items":{"type":"string","minLength":1,"maxLength":512}}},"required":["action","playlistId","trackIds"]},{"type":"object","properties":{"action":{"type":"string","const":"remove"},"playlistId":{"type":"string","minLength":1,"maxLength":512},"trackId":{"type":"string","minLength":1,"maxLength":512}},"required":["action","playlistId","trackId"]}],"type":"object"},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/privacy-policy"]},{"name":"drivebeats_set_favorite","kind":"act","impl":"imperative","description":"Set or clear Favorite for a track ID returned by Library Search or saved collections. Verified saved tracks do not need a Library refresh. Changes sync to DriveBeats only. Verify collections before retrying an uncertain change.","annotations":{"readOnlyHint":false,"untrustedContentHint":true},"inputSchema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"trackId":{"type":"string","minLength":1,"maxLength":512},"favorite":{"type":"boolean"}},"required":["trackId","favorite"]},"hasHandler":true,"hasExecute":true,"__source":"spec","executable":true,"handlerField":"execute","page":"/","pages":["/","/privacy-policy"]}],"category":"Media & Personal","favicon":"/favicons/drivebeats.app.png","apiSurface":"spec","toolCount":11}}