{"skill":{"slug":"music-assistant","displayName":"Music Assistant","summary":"Control Music Assistant (Home Assistant music server) - playback, volume, queue management, and library search. Use when user wants to play/pause music, skip...","description":"---\r\nname: music-assistant\r\ndescription: Control Music Assistant (Home Assistant music server) - playback, volume, queue management, and library search. Use when user wants to play/pause music, skip tracks, adjust volume, search their music library, check what's playing, manage the queue, or control any Music Assistant player. Works with Spotify, Plex, local files, and other music providers integrated with Music Assistant.\r\nmetadata:\r\n  openclaw:\r\n    requires:\r\n      env:\r\n        - MA_URL\r\n        - MA_TOKEN\r\n      env_optional:\r\n        - MA_PLAYER\r\n---\r\n\r\n# Music Assistant\r\n\r\nControl your Music Assistant server for music playback, queue management, and library browsing.\r\n\r\n## Setup\r\n\r\nBefore using this skill, you need to configure your Music Assistant connection:\r\n\r\n```bash\r\n# Required\r\nexport MA_URL=\"http://YOUR_SERVER_IP:8095/api\"\r\nexport MA_TOKEN=\"YOUR_BEARER_TOKEN\"\r\n\r\n# Optional - auto-detected if not set\r\nexport MA_PLAYER=\"your_player_id\"\r\n```\r\n\r\n**Finding your token:**\r\n1. Open Music Assistant web UI\r\n2. Go to Settings → Security\r\n3. Create or copy your Long-Lived Access Token\r\n\r\n**Finding your player ID:**\r\n```bash\r\n./scripts/mactl.py players\r\n```\r\n\r\n## Quick Start\r\n\r\n```bash\r\n# Basic controls\r\n./scripts/mactl.py play          # Play/pause toggle\r\n./scripts/mactl.py next          # Skip track\r\n./scripts/mactl.py volume 75     # Set volume to 75%\r\n\r\n# Search and play\r\n./scripts/mactl.py search \"nirvana\"\r\n./scripts/mactl.py play-search \"pink floyd\"  # Search and play first result\r\n\r\n# Check what's playing\r\n./scripts/mactl.py status\r\n./scripts/mactl.py queue\r\n```\r\n\r\n## Playback Controls\r\n\r\n```bash\r\n./scripts/mactl.py play          # Play/pause toggle\r\n./scripts/mactl.py pause         # Pause\r\n./scripts/mactl.py stop          # Stop playback\r\n./scripts/mactl.py next          # Next track\r\n./scripts/mactl.py prev          # Previous track\r\n```\r\n\r\n## Volume\r\n\r\n```bash\r\n./scripts/mactl.py volume 75     # Set volume 0-100\r\n./scripts/mactl.py mute          # Mute\r\n./scripts/mactl.py unmute        # Unmute\r\n```\r\n\r\n## Queue Management\r\n\r\n```bash\r\n./scripts/mactl.py shuffle true  # Enable shuffle\r\n./scripts/mactl.py shuffle false # Disable shuffle\r\n./scripts/mactl.py repeat all    # Repeat mode (off|all|one)\r\n./scripts/mactl.py clear         # Clear queue\r\n./scripts/mactl.py queue-items   # List queue contents\r\n```\r\n\r\n## Search & Play\r\n\r\n```bash\r\n# Search library\r\n./scripts/mactl.py search \"pink floyd\"\r\n./scripts/mactl.py search \"nirvana\" --type track album\r\n./scripts/mactl.py search \"metallica\" --limit 5\r\n\r\n# Search and immediately play first result\r\n./scripts/mactl.py play-search \"smells like teen spirit\"\r\n./scripts/mactl.py ps \"comfortably numb\"  # shorthand\r\n\r\n# Play by URI (for scripts/advanced use)\r\n./scripts/mactl.py play-uri \"spotify://track/4gHnSNHs8RyVukKoWdS99f\"\r\n```\r\n\r\n## Status & Info\r\n\r\n```bash\r\n./scripts/mactl.py status        # Show player status + now playing\r\n./scripts/mactl.py queue         # Queue status\r\n./scripts/mactl.py recent        # Recently played items\r\n./scripts/mactl.py players       # List all available players\r\n```\r\n\r\n## Library\r\n\r\n```bash\r\n./scripts/mactl.py sync          # Trigger library sync\r\n```\r\n\r\n## Examples\r\n\r\n**\"Play some Nirvana\"**\r\n```bash\r\n./scripts/mactl.py play-search \"nirvana\"\r\n```\r\n\r\n**\"What's playing?\"**\r\n```bash\r\n./scripts/mactl.py status\r\n```\r\n\r\n**\"Skip this track\"**\r\n```bash\r\n./scripts/mactl.py next\r\n```\r\n\r\n**\"Set volume to 50%\"**\r\n```bash\r\n./scripts/mactl.py volume 50\r\n```\r\n\r\n**\"Turn on shuffle\"**\r\n```bash\r\n./scripts/mactl.py shuffle true\r\n```\r\n\r\n## Direct API Access\r\n\r\nFor operations not covered by the CLI, use the JSON-RPC API directly:\r\n\r\n```bash\r\ncurl -s \"http://YOUR_SERVER:8095/api\" \\\r\n  -H \"Content-Type: application/json\" \\\r\n  -H \"Authorization: Bearer $MA_TOKEN\" \\\r\n  -d '{\"message_id\":\"1\",\"command\":\"player_queues/all\"}'\r\n```\r\n\r\nAPI documentation is available at: `http://YOUR_SERVER:8095/api-docs`\r\n\r\n### Key API Commands\r\n\r\n| Command | Args | Description |\r\n|---------|------|-------------|\r\n| `players/all` | - | List all players |\r\n| `player_queues/all` | - | List all queues |\r\n| `player_queues/play_pause` | `queue_id` | Toggle play/pause |\r\n| `player_queues/next` | `queue_id` | Next track |\r\n| `player_queues/previous` | `queue_id` | Previous track |\r\n| `player_queues/stop` | `queue_id` | Stop playback |\r\n| `player_queues/shuffle` | `queue_id`, `shuffle_enabled` | Set shuffle |\r\n| `player_queues/repeat` | `queue_id`, `repeat_mode` | Set repeat (off/all/one) |\r\n| `player_queues/clear` | `queue_id` | Clear queue |\r\n| `player_queues/items` | `queue_id`, `limit`, `offset` | Get queue items |\r\n| `player_queues/play_media` | `queue_id`, `uri` | Play by URI |\r\n| `music/search` | `search`, `media_types`, `limit` | Search library |\r\n| `music/recently_played_items` | `limit` | Recent items |\r\n| `music/sync` | `media_types`, `providers` | Sync library |\r\n| `config/players/get` | `player_id` | Get player settings |","tags":{"latest":"1.0.3"},"stats":{"comments":1,"downloads":779,"installsAllTime":2,"installsCurrent":2,"stars":1,"versions":4},"createdAt":1771688955975,"updatedAt":1778491601423},"latestVersion":{"version":"1.0.3","createdAt":1772736572474,"changelog":"- Renamed the CLI script from scripts/mactl.py.txt to scripts/mactl.py for proper execution.\n- No changes to features or documentation.","license":null},"metadata":{"setup":[{"key":"MA_URL","required":true},{"key":"MA_TOKEN","required":true}],"os":null,"systems":null},"owner":{"handle":"rodrigosiviero","userId":"s17ebzjwekw109mr7wjgp4jtp183k8v8","displayName":"Rodrigo","image":"https://avatars.githubusercontent.com/u/4370989?v=4"},"moderation":null}