Control Amazon Music through a background Edge tab: play, search and control Amazon Music by driving the web player in a background Microsoft Edge window. No Amazon API.
29 tools with mostly complete schemas and descriptions. Naming is action-oriented (play_*, set_*, search_*) and generally clear. Descriptions average ~100 chars, meeting baseline minimums. However, many descriptions lack WHEN-to-use guidance and recovery hints. Parameter descriptions are present but terse. Output schemas are not explicitly documented in the source. Error handling exists but lacks actionable recovery guidance in most tools. No tool annotations (readOnlyHint/destructiveHint) despite clear risk classifications in metadata.
Add the current track to a playlist.
Debug tool: return a snapshot of the DOM at a selector (for troubleshooting).
Hide the background Edge window (send it to the background).
Like or unlike the current track.
Show the Amazon Music sign-in page in the background Edge window. The user signs in there, then calls hide_window.
Lyrics for the current track: available (bool), lines (array of strings), activeIndex (current line, -1 if not synced).
No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite clear risk classifications. Tools marked WRITE and IRREVERSIBLE lack machine-readable hints for agent planning.
Output schemas not documented in source. Tools return JSON via ok() helper but no explicit schema definitions visible for LLM planning. now_playing, queue, search, ui_state lack documented field types.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
List the user's playlists.
Skip to the next track. Shows the player widget.
What is playing: title, artist, album, artwork, position, duration, state (playing/paused), tags (explicit, clean, ultra_hd, hd, dolby_atmos, spatial, lyrics), and the full lyric list if available.
Open a URL in the browse tab (does not interrupt playback).
Pause playback.
Resume playback (if paused). Shows the player widget.
Play a song, album, artist, playlist, station, or podcast by search query. Understands "<title> by <artist>", "album", "playlist", "station". Shows the player widget.
Play a specific Amazon Music item by its href (from search results or other tools). Shows the player widget.
Play one of the user's playlists by name. Shows the player widget.
Show the interactive Amazon Music player widget. Only call when something is playing or paused.
Skip to the previous track. Shows the player widget.
List the upcoming queue (next 50 tracks).
Queue a song, album, artist, playlist, station, or podcast. Does not interrupt the current track.
Quit the background Edge browser (the server will restart it on the next playback command).
Set repeat mode: off (no repeat), all (repeat playlist/album), or one (repeat single track).
Search Amazon Music for songs, albums, artists, playlists, stations, or podcasts. Returns up to limit results.
Seek to a position in the current track (in seconds).
Enable or disable Autoplay (automatic queue extension).
Set the playback volume (0-100).
Show the background Edge window (bring it to the foreground).
Enable or disable shuffle mode.
Amazon Music: report whether the background Edge tab is running, whether the user is signed in, and what is playing. Never launches Edge and never shows the widget. Use this when nothing is playing yet, or when the user asks whether music is set up.
State bundle the embedded player polls: browser status, login status, now playing (with quality and autoplay), and artist backdrop. Nothing in here blocks.
Error handling returns generic fail() with error code and optional hint, but lacks structured error classification (retryable vs user-fixable vs fatal). Agents cannot determine recovery strategy.
Descriptions lack WHEN-to-use guidance. E.g., 'pause' says 'Pause playback' but not when to call it vs play(). 'search' vs 'play_by_query' distinction unclear. LLMs must infer intent from name alone.
quit_browser is IRREVERSIBLE but lacks confirmation/dry-run pattern. No recovery guidance if called accidentally. Agents can crash the browser without safeguards.