Skill: minerva-care/minerva-radarr (version 1.0.0)

--- name: radarr description: Interact with Radarr (movie manager) via its REST API. Use when searching for movies, checking missing/wanted titles, triggering downloads, or monitoring queue status. Part of the *arr media management suite. --- # Radarr Skill Radarr is the *arr-suite manager for movies. It monitors a watchlist, finds releases via indexers (Prowlarr), sends them to a download client, and organises them on disk. ## Connection Radarr runs on Dozo at `http://localhost:7878`. ```bash RADARR_URL="http://localhost:7878" RADARR_KEY=$(cat /path/to/radarr_api_key) ``` See `references/api.md` for all endpoints. ## Core Workflows ### Search and add a movie ```bash # 1. Look up by title (returns TMDB results) curl -s "$RADARR_URL/api/v3/movie/lookup?term=The+Matrix" \ -H "X-[REDACTED_SECRET]" | python3 -c " import sys,json results = json.load(sys.stdin) for m in results[:5]: print(m.get('title'), '| tmdbId:', m.get('tmdbId'), '| year:', m.get('year')) " # 2. Get quality profiles and root folders curl -s "$RADARR_URL/api/v3/qualityprofile" -H "X-[REDACTED_SECRET]" curl -s "$RADARR_URL/api/v3/rootfolder" -H "X-[REDACTED_SECRET]" # 3. Add the movie curl -s -X POST "$RADARR_URL/api/v3/movie" \ -H "X-[REDACTED_SECRET]" \ -H "Content-Type: application/json" \ -d '{"tmdbId":603,"title":"The Matrix","qualityProfileId":1,"rootFolderPath":"/movies","monitored":true,"addOptions":{"searchForMovie":true}}' ``` ### Check wanted/missing movies ```bash curl -s "$RADARR_URL/api/v3/wanted/missing?pageSize=20" \ -H "X-[REDACTED_SECRET]" | python3 -c " import sys,json d = json.load(sys.stdin) for m in d.get('records',[]): print(m.get('title'), '(', m.get('year'), ')') " ``` ### Trigger search for all missing movies ```bash curl -s -X POST "$RADARR_URL/api/v3/command" \ -H "X-[REDACTED_SECRET]" \ -H "Content-Type: application/json" \ -d '{"name":"MissingMoviesSearch"}' ``` ### Check download queue ```bash curl -s "$RADARR_URL/api/v3/queue" -H "X-[REDACTED_SECRET]" | python3 -c " import sys,json q = json.load(sys.stdin) for item in q.get('records',[]): print(item.get('title'), '|', item.get('status'), '|', item.get('timeleft','?')) " ``` ## Credentials Store API key at `~/clawd/credentials/radarr_api_key` (single line, no newline). Load with: `RADARR_KEY=$(cat /path/to/radarr_api_key)`

path: references/api.md
content: # Radarr API Reference

Base: `$RADARR_URL/api/v3/`
Auth: Header `X-[REDACTED_SECRET]`

## Movies
| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/movie` | List all movies |
| GET | `/movie/{id}` | Get movie by ID |
| GET | `/movie/lookup?term=` | Search TMDB for movies |
| GET | `/movie/lookup/tmdb?tmdbId=` | Lookup by TMDB ID |
| GET | `/movie/lookup/imdb?imdbId=` | Lookup by IMDB ID |
| POST | `/movie` | Add a movie |
| PUT | `/movie/{id}` | Update movie |
| DELETE | `/movie/{id}` | Remove movie |
| GET | `/moviefile?movieId={id}` | Get movie file on disk |
| DELETE | `/moviefile/{id}` | Delete a movie file |

## Queue
| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/queue` | Current download queue |
| GET | `/queue?pageSize=20` | Queue with pagination |
| DELETE | `/queue/{id}` | Remove item from queue |
| DELETE | `/queue/{id}?blacklist=true` | Remove + blacklist |

## Wanted
| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/wanted/missing` | Monitored but missing movies |
| GET | `/wanted/missing?pageSize=20` | Missing with pagination |
| GET | `/wanted/cutoff` | Movies below quality cutoff |

## Commands
POST `/command` with `{"name": "<CommandName>"}`:
- `MissingMoviesSearch` — search for all missing monitored movies
- `MoviesSearch` — search for specific movies (`{"name":"MoviesSearch","movieIds":[N]}`)
- `RescanMovie` — rescan movie folder (`{"name":"RescanMovie","movieId":N}`)
- `RefreshMovie` — refresh movie metadata (`{"name":"RefreshMovie","movieId":N}`)
- `RenameMovie` — rename movie files (`{"name":"RenameMovie","movieIds":[N]}`)
- `RescanFolders` — rescan all root folders

## Quality Profiles
| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/qualityprofile` | List quality profiles |
| GET | `/qualityprofile/{id}` | Get profile by ID |

## Root Folders
| Method | Endpoint | Description |
|--------|----------|-------------|
| GET | `/rootfolder` | List configured root folders |

## Config & System
| Endpoint | Description |
|----------|-------------|
| GET `/system/status` | System info + version |
| GET `/history?pageSize=20` | Recent activity |
| GET `/downloadclient` | Configured download clients |
| GET `/indexer` | Configured indexers |
| GET `/notification` | Configured notifications |

## Pagination
Add `?page=1&pageSize=20&sortKey=sortTitle&sortDir=asc` to list endpoints.

## Add Movie Payload Example
```json
{
  "tmdbId": 603,
  "title": "The Matrix",
  "qualityProfileId": 1,
  "rootFolderPath": "/movies",
  "monitored": true,
  "addOptions": {
    "searchForMovie": true
  }
}
```


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