The Pirate Phase 1.b: Lidarr + Whisparr + Overseerr tools

Adds 9 read-only tools across three new services:
- Lidarr: queue, artist_search, library_stats (music library awareness)
- Whisparr: queue, series_search, library_stats (adult content, v3 API)
- Overseerr: search, requests, request_counts (cross-library availability,
  request tracking via X-Api-Key header reusing arr_get helper)

Fix _common.py urlencode to use %20 instead of + for query values —
Overseerr rejects + as reserved. Safe for all arr services.

Pirate catalog: 11 → 20 tools.
This commit is contained in:
Eric Jungbauer
2026-04-20 22:23:26 +00:00
parent eac7b64a90
commit 20a8987dd9
5 changed files with 318 additions and 4 deletions
+2 -2
View File
@@ -7,13 +7,13 @@ The runtime loads all modules here and builds a combined catalog. The LLM picks
which tool to call; the runtime executes it and returns the result as a tool message.
"""
from . import sonarr, radarr, qbittorrent, storage
from . import sonarr, radarr, lidarr, whisparr, qbittorrent, storage, overseerr
def build_catalog():
"""Return a list of all available tools across all modules."""
catalog = []
for mod in (sonarr, radarr, qbittorrent, storage):
for mod in (sonarr, radarr, lidarr, whisparr, qbittorrent, storage, overseerr):
catalog.extend(getattr(mod, "TOOLS", []))
return catalog