Skill: robbeverhelst/tsarr (version 1.0.3)

--- name: tsarr description: Manage home media services through TsArr from OpenClaw. Use for Radarr, Sonarr, Lidarr, Readarr, Prowlarr, Bazarr, qBittorrent, and Seerr tasks such as checking health, inspecting queues and history, browsing libraries, searching, adding, editing, deleting items, viewing profiles, tags, and root folders, managing torrents, managing media requests, and checking TsArr configuration. metadata: openclaw: requires: bins: - tsarr config: - .tsarr.json - ~/.config/tsarr/config.json install: - kind: node package: tsarr bins: - tsarr homepage: https://github.com/robbeverhelst/tsarr emoji: "🎬" --- # TsArr Manage Servarr apps through the `tsarr` CLI. ## Start - Verify the CLI is available with `tsarr --help`. - If setup or service health is unclear, read [references/setup.md](references/setup.md) and start with `tsarr doctor`. - Prefer `--json` when selecting IDs, extracting fields, or comparing results. ## Safety - Inspect before mutating. - Fetch the current item before `edit` or `delete` when possible. - Avoid `--yes` on destructive commands unless the user explicitly wants non-interactive execution. - If the user says "Arr", "library", or "queue" without naming a service, clarify which service to use. - If a service has multiple named instances and the user doesn't specify which, clarify or default to the first instance. ## Routing - Read [references/setup.md](references/setup.md) for installation expectations, configuration, and connectivity checks. - Read [references/common-workflows.md](references/common-workflows.md) for health checks, library browsing, search, add, queue, history, refresh, and delete flows. - Read [references/service-cheatsheet.md](references/service-cheatsheet.md) to map a user request to the correct `service resource action` command. ## Notes - Trust the command patterns in these references over stale prose elsewhere. - Keep responses operational: show the command you plan to run, summarize the result, and call out any destructive effect before you execute it.

path: references/common-workflows.md
content: # Common Workflows

## Output modes

Prefer:

- `--json` for parsing and field selection
- `--table` for human inspection in a terminal
- `--plain` for TSV-style piping
- `--quiet` when only IDs are needed
- `--select=field1,field2` to reduce noisy JSON
- `--instance <name>` / `-i <name>` to target a specific named instance (for multi-instance services)

Examples:

```bash
tsarr radarr movie list --json --select=title,year,monitored
tsarr sonarr series list --quiet
tsarr radarr movie list --instance 4K --json
```

## Health and status

Start here when the user wants to know whether the stack is healthy:

```bash
tsarr doctor
tsarr radarr system status --json
tsarr radarr system health --json
tsarr sonarr system status --json
tsarr prowlarr system health --json
tsarr bazarr system status --json
tsarr qbit status show --json
tsarr seerr status show --json
```

## Browse libraries

Use these for inspection before any write operation:

```bash
tsarr radarr movie list --json
tsarr radarr movie get --id 123 --json

tsarr sonarr series list --json
tsarr sonarr series get --id 456 --json
tsarr sonarr episode list --series-id 456 --json

tsarr lidarr artist list --json
tsarr lidarr album list --json

tsarr readarr author list --json
tsarr readarr book list --json

tsarr bazarr series list --json
tsarr bazarr movie list --json
tsarr bazarr episode wanted --json

tsarr qbit torrents list --json
tsarr qbit torrents list --filter downloading --json

tsarr seerr requests list --json
tsarr seerr users list --json
```

## Search and add

Use search first. Let TsArr prompt for quality profile and root folder when needed.

```bash
tsarr radarr movie search --term "Interstellar" --limit 5 --json
tsarr radarr movie add --term "Interstellar"

tsarr sonarr series search --term "Breaking Bad" --limit 5 --json
tsarr sonarr series add --term "Breaking Bad"

tsarr lidarr artist search --term "Radiohead" --json
tsarr lidarr artist add --term "Radiohead"

tsarr readarr author search --term "Ursula Le Guin" --json
tsarr readarr author add --term "Ursula Le Guin"
```

Use ID-based adds when the user already knows the external identifier:

```bash
tsarr radarr movie add --tmdb-id 157336
tsarr sonarr series add --tvdb-id 81189
```

## Queue and history

Use these to inspect stuck downloads, failed grabs, or recent activity:

```bash
tsarr radarr queue list --json
tsarr radarr queue status --json
tsarr radarr history list --json

tsarr sonarr queue list --json
tsarr sonarr history list --json

tsarr lidarr queue list --json
tsarr readarr queue list --json
```

## Metadata and helpers

Use these when the user needs supporting IDs before an add or edit:

```bash
tsarr radarr profile list --json
tsarr radarr rootfolder list --json
tsarr radarr tag list --json

tsarr sonarr profile list --json
tsarr sonarr rootfolder list --json

tsarr lidarr profile list --json
tsarr readarr profile list --json

tsarr prowlarr indexer list --json
tsarr prowlarr app list --json
tsarr prowlarr search run --term "ubuntu iso" --json
```

## Refresh and manual search

Use these when the library exists but metadata or release search needs to be retriggered:

```bash
tsarr radarr movie refresh --id 123
tsarr radarr movie manual-search --id 123

tsarr sonarr series refresh --id 456
tsarr sonarr series manual-search --id 456

tsarr lidarr artist refresh --id 789
tsarr readarr author refresh --id 321
```

## Delete safely

Inspect first, then delete. Do not pass `--yes` unless the user explicitly wants automation.

```bash
tsarr radarr movie get --id 123 --json
tsarr radarr movie delete --id 123

tsarr sonarr series get --id 456 --json
tsarr sonarr series delete --id 456

tsarr lidarr artist get --id 789 --json
tsarr lidarr artist delete --id 789

tsarr readarr author get --id 321 --json
tsarr readarr author delete --id 321
```

Use extra destructive flags only when the user clearly asks for them:

```bash
tsarr radarr movie delete --id 123 --delete-files
tsarr sonarr series delete --id 456 --delete-files
tsarr qbit torrents delete --hashes <hash> --delete-files
```

## Configuration checks

When a command fails unexpectedly, inspect TsArr’s merged configuration:

```bash
tsarr config show
tsarr config get services.prowlarr.baseUrl
```


path: references/service-cheatsheet.md
content: # Service Cheatsheet

## Radarr

Use for movies.

```bash
tsarr radarr movie list --json
tsarr radarr movie get --id 123 --json
tsarr radarr movie search --term "Interstellar" --limit 5 --json
tsarr radarr movie add --term "Interstellar"
tsarr radarr movie refresh --id 123
tsarr radarr movie manual-search --id 123
tsarr radarr queue list --json
tsarr radarr history list --json
```

Useful helpers:

```bash
tsarr radarr profile list --json
tsarr radarr rootfolder list --json
tsarr radarr tag list --json
tsarr radarr system health --json
```

## Sonarr

Use for TV series and episodes.

```bash
tsarr sonarr series list --json
tsarr sonarr series get --id 456 --json
tsarr sonarr series search --term "Breaking Bad" --limit 5 --json
tsarr sonarr series add --term "Breaking Bad"
tsarr sonarr series refresh --id 456
tsarr sonarr series manual-search --id 456
tsarr sonarr episode list --series-id 456 --json
tsarr sonarr episode search --id 999
```

Useful helpers:

```bash
tsarr sonarr queue list --json
tsarr sonarr history list --json
tsarr sonarr system health --json
```

## Lidarr

Use for artists and albums.

```bash
tsarr lidarr artist list --json
tsarr lidarr artist get --id 789 --json
tsarr lidarr artist search --term "Radiohead" --json
tsarr lidarr artist add --term "Radiohead"
tsarr lidarr artist refresh --id 789
tsarr lidarr album list --json
tsarr lidarr album get --id 654 --json
tsarr lidarr album search --term "OK Computer" --json
```

Useful helpers:

```bash
tsarr lidarr queue list --json
tsarr lidarr history list --json
tsarr lidarr system health --json
```

## Readarr

Use for authors and books.

```bash
tsarr readarr author list --json
tsarr readarr author get --id 321 --json
tsarr readarr author search --term "Ursula Le Guin" --json
tsarr readarr author add --term "Ursula Le Guin"
tsarr readarr author refresh --id 321
tsarr readarr book list --json
tsarr readarr book get --id 654 --json
tsarr readarr book search --term "The Left Hand of Darkness" --json
```

Useful helpers:

```bash
tsarr readarr queue list --json
tsarr readarr history list --json
tsarr readarr system health --json
```

## Prowlarr

Use for indexers, connected apps, and cross-indexer search.

```bash
tsarr prowlarr indexer list --json
tsarr prowlarr indexer get --id 12 --json
tsarr prowlarr indexer test --json
tsarr prowlarr search run --term "ubuntu iso" --json
tsarr prowlarr app list --json
tsarr prowlarr app sync
tsarr prowlarr system health --json
```

Advanced Prowlarr add/edit flows use `--file` JSON input. Prefer read-only inspection unless the user explicitly wants to change indexers, applications, notifications, or download clients.

## Bazarr

Use for subtitle status and provider inspection.

```bash
tsarr bazarr series list --json
tsarr bazarr movie list --json
tsarr bazarr episode wanted --json
tsarr bazarr provider list --json
tsarr bazarr language list --json
tsarr bazarr language profiles --json
tsarr bazarr system status --json
tsarr bazarr system health --json
tsarr bazarr system badges --json
```

## qBittorrent

Use for torrent management and download status.

```bash
tsarr qbit torrents list --json
tsarr qbit torrents list --filter downloading --json
tsarr qbit torrents pause --hashes <hash>
tsarr qbit torrents resume --hashes <hash>
tsarr qbit torrents delete --hashes <hash> --delete-files
tsarr qbit status show --json
```

qBittorrent uses username/password authentication instead of API keys. Configure via `tsarr config init` or environment variables `TSARR_QBITTORRENT_URL`, `TSARR_QBITTORRENT_USERNAME`, `TSARR_QBITTORRENT_PASSWORD`.

## Seerr

Use for media request management. Works with Seerr, Jellyseerr, and Overseerr.

```bash
tsarr seerr requests list --json
tsarr seerr requests list --filter pending --json
tsarr seerr requests count --json
tsarr seerr requests approve --id 123
tsarr seerr requests decline --id 123
tsarr seerr search query --query "The Matrix" --json
tsarr seerr users list --json
tsarr seerr status show --json
```

Seerr uses API key authentication. Configure via `tsarr config init` or environment variables `TSARR_SEERR_URL` and `TSARR_SEERR_API_KEY`.

## Multi-instance services

When a service has multiple named instances, append `--instance <name>` or `-i <name>` to target a specific one. Without `--instance`, the first (default) instance is used.

```bash
tsarr radarr movie list --instance 4K --json
tsarr sonarr series list -i main --json
```

## Mutation rules

- Run `get` or `list` first when a delete or edit is requested.
- Use `--json` when extracting IDs or confirming the target.
- Reserve `--yes` for explicit automation requests.
- Expect some advanced add/edit commands to require JSON input files instead of simple flags.


path: references/setup.md
content: # Setup

## Verify the CLI

- Check whether `tsarr` is installed with `tsarr --help`.
- If the binary is missing, let OpenClaw satisfy the declared install dependency for `tsarr`.

## Configure TsArr

Use the interactive wizard first when the user has not configured their services yet:

```bash
tsarr config init
```

Inspect current configuration with:

```bash
tsarr config show
tsarr config get services.radarr.baseUrl
```

Set values manually with:

```bash
tsarr config set services.radarr.baseUrl http://localhost:7878
tsarr config set services.radarr.apiKey your-api-key
tsarr config set services.radarr.baseUrl http://localhost:7878 --local

# For named instances (multi-instance setups)
tsarr config set services.radarr.4K.baseUrl http://localhost:7879
tsarr config set services.radarr.4K.apiKey your-4k-api-key
```

## Multi-instance services

A service can have multiple named instances (e.g. a 4K and 1080p Radarr). The config file supports both a single object (legacy) and an array of named instances per service. Use `--instance` / `-i` to target a specific instance:

```bash
tsarr radarr movie list --instance 4K
tsarr radarr system status -i 1080p
```

When `--instance` is omitted, the first (default) instance is used. Environment variables always apply to the first instance only.

`tsarr doctor` automatically checks all instances and shows an "instance" column when multi-instance services are detected.

## Connectivity checks

Start here when a user says setup is broken, credentials may be wrong, or a service may be offline:

```bash
tsarr doctor
tsarr radarr system status --json
tsarr sonarr system health --json
```

## Config precedence

TsArr merges configuration in this order:

1. Service-specific environment variables
2. Local config at `.tsarr.json`
3. Global config at `~/.config/tsarr/config.json`

Use local config for project-specific stacks. Use global config for the user’s default home setup.

## Environment variable pattern

TsArr also supports service-specific environment variables with these patterns:

- `TSARR_{SERVICE}_URL`
- `TSARR_{SERVICE}_API_KEY`
- `TSARR_{SERVICE}_TIMEOUT`

Replace `{SERVICE}` with `RADARR`, `SONARR`, `LIDARR`, `READARR`, `PROWLARR`, `BAZARR`, or `SEERR`.

qBittorrent uses username/password instead of API keys:

- `TSARR_QBITTORRENT_URL`
- `TSARR_QBITTORRENT_USERNAME`
- `TSARR_QBITTORRENT_PASSWORD`

## Default ports

- Radarr: `7878`
- Sonarr: `8989`
- Lidarr: `8686`
- Readarr: `8787`
- Prowlarr: `9696`
- Bazarr: `6767`
- qBittorrent: `8080`
- Seerr: `5055`

## Practical workflow

1. Run `tsarr doctor`.
2. If a service is missing, inspect `tsarr config show`.
3. If a single value looks wrong, use `tsarr config get ...` or `tsarr config set ...`.
4. Retry the failing service command with `--json` so output is easy to inspect.


Security scan verdicts — ClawScan: clean | static analysis: clean | VirusTotal: clean | SkillSpector: clean (LOW)