> ## Documentation Index
> Fetch the complete documentation index at: https://docs.clickwheel.fm/llms.txt
> Use this file to discover all available pages before exploring further.

# iPod

> clickwheel MCP server tools for iPod.

**Try asking Claude**

* *"What's on my iPod, and how full is it?"*
* *"Put all my Weezer on the iPod."*
* *"Sync my road-trip playlist to the iPod, then eject it."*

## `add_artist_to_ipod`

Push every track by an artist to the iPod's library, no playlist artifact.

<ParamField path="artist" type="string" required>
  Artist name (exact match, case-sensitive).
</ParamField>

## `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.

<ParamField path="paths" type="string[]" required>
  Absolute paths (from the indexed library) of tracks to add. Use list\_tracks\_by\_album / search\_tracks to get paths. Never invent them.
</ParamField>

## `eject_ipod`

Safely unmount the iPod via `diskutil eject`. Idempotent: if the iPod is already unmounted, returns `{"ejected": False, "already_unmounted": True}` instead of raising. Classic iPods often auto-disconnect after a sync, so it may already be gone; that's expected, so tell the user it's safe to unplug.

## `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.

<ParamField path="artist" type="any">
  Optional artist filter (exact match). Omit to page through all tracks.
</ParamField>

<ParamField path="limit" type="integer" default="50">
  Max tracks to return.
</ParamField>

<ParamField path="offset" type="integer">
  Pagination offset (0 = first page).
</ParamField>

## `remove_artist_from_ipod`

Drop every track by an artist from the iPod, in one shot.

<ParamField path="artist" type="string" required>
  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.
</ParamField>

## `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.

<ParamField path="name" type="string" required>
  Name of the iPod playlist to remove.
</ParamField>

## `remove_tracks_from_ipod`

Remove specific tracks from the iPod. Drops them from the iTunesDB AND deletes the underlying audio files from the device.

<ParamField path="paths" type="string[]" required>
  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.
</ParamField>

## `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.

<ParamField path="playlist" type="string" required>
  Saved playlist name to sync.
</ParamField>

<ParamField path="on_conflict" type="any">
  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).
</ParamField>

<ParamField path="target_name" type="any">
  Required when on\_conflict='rename'. The new iPod-side playlist name to use instead of the clickwheel name.
</ParamField>
