Documentation Index
Fetch the complete documentation index at: https://clickwheel.mintlify.app/llms.txt
Use this file to discover all available pages before exploring further.
The clickwheel MCP server exposes these tools to Claude and other MCP clients.
See MCP server for setup. Each tool wraps the same core
logic as the CLI.
37 tools across 6 domains.
Apple Music
apple_music_health
Probe the Apple Music integration end-to-end without changing anything.
delete_apple_music_playlist
Delete a library playlist from the user’s Apple Music account.
| Parameter | Type | Required | Description |
|---|
name | string | yes | Library playlist name to delete from Apple Music. |
list_apple_music_playlists
List every library playlist in the user’s Apple Music account.
pull_playlist_from_apple_music
Import a library playlist from Apple Music into clickwheel.
| Parameter | Type | Required | Description |
|---|
name | string | yes | Apple Music library playlist name to import into clickwheel. |
overwrite | boolean | no | Replace an existing clickwheel playlist with the same name. Without this, the operation refuses to clobber. |
min_fuzzy_confidence | number | no | Threshold for the fuzzy-fallback match against the local library. Tracks below this score are reported as unmatched. |
sync_playlist_to_apple_music
Create a playlist in the user’s Apple Music account from a clickwheel playlist.
| Parameter | Type | Required | Description |
|---|
playlist | string | yes | Saved clickwheel playlist name to push to Apple Music. |
refresh | boolean | no | Ignore the cached catalog matches and re-match every track. Useful after retagging files. |
min_confidence | number | no | Confidence threshold (0.0–1.0). Tracks scoring below this are skipped unless include_low_confidence=true. |
include_low_confidence | boolean | no | Push low-confidence matches anyway. Use only after a match preview confirms the candidates look right. |
Last.fm
get_pending_scrobbles
Cached iPod plays that haven’t yet been submitted to Last.fm. Each entry has artist, title, album, timestamp (unix seconds), and duration_seconds.
submit_scrobbles
Pull recent plays from the iPod and submit them to Last.fm.
| Parameter | Type | Required | Description |
|---|
dry_run | boolean | no | If true, just count what would be sent without actually submitting to Last.fm. |
Library
library_health
Setup probe: does the library directory exist, when was the last scan, how many indexed tracks are now missing from disk, is auto-scan enabled, etc.
library_stats
High-level stats for the indexed music library.
list_albums_by_artist
Albums for a single artist, ordered by year then album title. Each entry includes track count, total size in bytes, and the year (if known).
| Parameter | Type | Required | Description |
|---|
artist | string | yes | Artist name (exact match, case-sensitive). |
list_artists
All artists in the indexed library, alphabetical, with track count, album count, and total size in bytes per artist. FLAC tracks are excluded (the iPod doesn’t play FLAC).
| Parameter | Type | Required | Description |
|---|
limit | integer | no | Max artists to return. |
list_tracks_by_album
All tracks on one album, ordered by disc/track number. Returns full track records: title, path, duration, file size, format, year, etc.
| Parameter | Type | Required | Description |
|---|
artist | string | yes | Artist name (exact match). |
album | string | yes | Album title (exact match). |
search_tracks
Case-insensitive substring search across artist, album, and title.
| Parameter | Type | Required | Description |
|---|
query | string | yes | Substring to match. Empty/whitespace returns []. |
limit | integer | no | Max results. |
Playlists
add_artist_to_playlist
Add every track by artist to playlist (skipping duplicates). Creates the playlist if it doesn’t already exist. Returns the number of tracks actually added.
| Parameter | Type | Required | Description |
|---|
playlist | string | yes | Playlist name (created if missing). |
artist | string | yes | Artist name (exact match). |
create_playlist
Create a new named playlist (a curated collection — workout mix, road trip, etc.) with the given track paths. Errors if a playlist with the same name already exists — use update_playlist to replace contents instead.
| Parameter | Type | Required | Description |
|---|
name | string | yes | New playlist name (must not exist). |
track_paths | array | yes | Absolute file paths from the library. Get these from list_tracks_by_album or search_tracks — never invent paths. |
description | any | no | Optional free-text description. Shown in playlist listings and carried over to Plex as the playlist summary when synced via sync_playlist_to_plex. |
delete_playlist
Permanently delete a saved playlist. Cannot be undone — the playlist record is removed; the underlying music files are untouched.
| Parameter | Type | Required | Description |
|---|
name | string | yes | Playlist name. |
get_playlist
Summary of one playlist: total track count, total size, and the artist breakdown (with track count + size per artist). Does NOT return the full track list — use list_playlist_tracks to page through tracks.
| Parameter | Type | Required | Description |
|---|
name | string | yes | Playlist name. |
heal_playlist
Drop references in a playlist to tracks whose files are no longer on disk (flagged missing by clickwheel scan). Returns the number dropped, the number remaining, and the list of removed track records.
| Parameter | Type | Required | Description |
|---|
name | string | yes | Playlist name. |
list_playlist_tracks
Paginated list of tracks in a saved playlist, in playlist order. Returns full track records (artist, title, album, path, duration, file_size, format) — the path values are needed if you’re going to pass them to update_playlist.
| Parameter | Type | Required | Description |
|---|
name | string | yes | Playlist name. |
limit | integer | no | Max tracks to return. |
offset | integer | no | Pagination offset (0 = first page). |
list_playlists
All saved playlists (the curated, named collections — workout mix, road trip, etc.) with track counts, total size in bytes, and last-updated timestamps.
remove_artist_from_playlist
Remove every track by artist from playlist. Returns the number of tracks removed (0 if the artist wasn’t in the playlist).
| Parameter | Type | Required | Description |
|---|
playlist | string | yes | Playlist name. |
artist | string | yes | Artist name (exact match). |
set_playlist_description
Set a saved playlist’s description without touching its track list.
| Parameter | Type | Required | Description |
|---|
name | string | yes | Playlist name. |
description | string | yes | Free-text description to set. Replaces any existing description; pass an empty string to clear it. |
update_playlist
Replace a playlist’s contents wholesale (or create it if it doesn’t exist). Returns the new track count and replaced (True if a playlist by this name already existed).
| Parameter | Type | Required | Description |
|---|
name | string | yes | Playlist name (created if missing). |
track_paths | array | yes | Absolute file paths from the library. |
description | any | no | Optional free-text description. Omit to leave any existing description untouched; pass a string to set it. |
Plex
list_plex_playlists
List every audio playlist on the user’s Plex server.
plex_health
Probe the Plex integration end-to-end without changing anything.
pull_playlist_from_plex
Recover a Plex audio playlist into clickwheel’s local SQLite.
| Parameter | Type | Required | Description |
|---|
name | string | yes | Plex playlist name to recover into clickwheel. |
include_smart | boolean | no | Required to pull a smart playlist — materializes a snapshot rather than mirroring the live query. |
overwrite | boolean | no | Replace an existing clickwheel playlist with the same name. Without this, the operation refuses to clobber. |
sync_playlist_to_plex
Push a clickwheel playlist into the user’s Plex music library so it shows up in Plex web and Plexamp alongside the iPod sync.
| Parameter | Type | Required | Description |
|---|
playlist | string | yes | Saved clickwheel playlist name to push to Plex. |
iPod
add_artist_to_ipod
Push every track by an artist to the iPod’s library, no playlist artifact. Convenience wrapper over add_tracks_to_ipod that resolves the artist’s tracks via the library index.
| Parameter | Type | Required | Description |
|---|
artist | string | yes | Artist name (exact match, case-sensitive). |
add_tracks_to_ipod
Push specific tracks to the iPod’s library WITHOUT creating a playlist on the device. Tracks land in the main library and are browsable by artist/album.
| Parameter | Type | Required | Description |
|---|
paths | array | yes | Absolute paths (from the indexed library) of tracks to add. Use list_tracks_by_album / search_tracks to get paths — never invent them. |
eject_ipod
Safely unmount the iPod via diskutil eject. Idempotent: if no iPod is currently mounted, returns {"ejected": False, "already_unmounted": True} rather than raising. This handles the classic iPod’s normal post-sync auto-disconnect — after the device finishes writing its iTunesDB, its firmware flips the screen back to the menu and tells macOS it’s safe to remove, at which point the volume dismounts automatically. So by the time the user asks you to eject, the iPod may already be gone. That’s expected; tell the user the iPod auto-disconnected and they’re safe to unplug. Other things that can cause an idle disconnect: macOS Music.app auto-eject after activity, USB selective-suspend on battery, the iPod’s own drive-spindown power-saving.
get_ipod_contents
High-level snapshot of what’s on the iPod: capacity, used/free space, track/artist/album counts, and the top 25 artists by track count. Does NOT return the full track list — use list_ipod_tracks to page through tracks (optionally filtered by artist).
list_ipod_playlists
List the playlists currently on the iPod (the ones visible under Music → Playlists on the device).
list_ipod_tracks
Paginated list of tracks on the iPod, optionally filtered by artist. Each track is the chat-friendly slice — artist, title, album, size in bytes. For the full per-track payload, use the CLI.
| Parameter | Type | Required | Description |
|---|
artist | any | no | Optional artist filter (exact match). Omit to page through all tracks. |
limit | integer | no | Max tracks to return. |
offset | integer | no | Pagination offset (0 = first page). |
remove_artist_from_ipod
Drop every track by an artist from the iPod, in one shot.
| Parameter | Type | Required | Description |
|---|
artist | string | yes | Artist name to drop from the iPod. Matched via canonical lead-artist rollup (album_artist-first), so e.g. removing ‘Taylor Swift’ also drops ‘Taylor Swift / HAIM’ tracks. |
remove_ipod_playlist
Remove a playlist from the iPod (Music → Playlists). The playlist’s tracks are NOT deleted — they stay in the iPod’s main library, browsable by artist/album. Only the playlist artifact goes away.
| Parameter | Type | Required | Description |
|---|
name | string | yes | Name of the iPod playlist to remove. |
remove_tracks_from_ipod
Remove specific tracks from the iPod — drops them from the iTunesDB AND deletes the underlying audio files from the device.
| Parameter | Type | Required | Description |
|---|
paths | array | yes | Absolute paths (from the indexed library) of tracks to remove from the iPod. Get these via list_tracks_by_album or search_tracks. Paths that aren’t on the iPod are reported back as unmatched — not an error. |
sync_playlist_to_ipod
Push a saved playlist (the clickwheel-side draft) to the iPod AND create/update the corresponding playlist on the device under Music → Playlists. Copies any missing tracks first.
| Parameter | Type | Required | Description |
|---|
playlist | string | yes | Saved playlist name to sync. |
on_conflict | any | no | How to resolve a same-name playlist already on the iPod. Omit on the first call; if a conflict exists, this tool returns a structured error so you can ask the user to pick one of: ‘merge’ (combine tracks), ‘replace’ (overwrite contents), ‘rename’ (use target_name for a new playlist name). |
target_name | any | no | Required when on_conflict=‘rename’. The new iPod-side playlist name to use instead of the clickwheel name. |