Skip to main content
Glama

arr_search_all

Search for media content across all connected *arr services (Sonarr, Radarr, Lidarr, Readarr, Prowlarr) using a single query to find TV shows, movies, music, and books.

Instructions

Search across all configured *arr services for any media

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
termYesSearch term

Implementation Reference

  • src/index.ts:582-595 (registration)
    Registration of the 'arr_search_all' tool in the TOOLS array, including its name, description, and input schema requiring a 'term' string.
    TOOLS.push({ name: "arr_search_all", description: "Search across all configured *arr services for any media", inputSchema: { type: "object" as const, properties: { term: { type: "string", description: "Search term", }, }, required: ["term"], }, });
  • Input schema definition for 'arr_search_all' tool: object with required 'term' string property.
    TOOLS.push({ name: "arr_search_all", description: "Search across all configured *arr services for any media", inputSchema: { type: "object" as const, properties: { term: { type: "string", description: "Search term", }, }, required: ["term"], }, });
  • Handler implementation in the tool call switch statement. Extracts search term, calls search methods on all configured clients (sonarr.searchSeries, radarr.searchMovies, etc.), limits to top 5 results per service, handles errors per service, and returns aggregated JSON results.
    case "arr_search_all": { const term = (args as { term: string }).term; const results: Record<string, unknown> = {}; if (clients.sonarr) { try { const sonarrResults = await clients.sonarr.searchSeries(term); results.sonarr = { count: sonarrResults.length, results: sonarrResults.slice(0, 5) }; } catch (e) { results.sonarr = { error: e instanceof Error ? e.message : String(e) }; } } if (clients.radarr) { try { const radarrResults = await clients.radarr.searchMovies(term); results.radarr = { count: radarrResults.length, results: radarrResults.slice(0, 5) }; } catch (e) { results.radarr = { error: e instanceof Error ? e.message : String(e) }; } } if (clients.lidarr) { try { const lidarrResults = await clients.lidarr.searchArtists(term); results.lidarr = { count: lidarrResults.length, results: lidarrResults.slice(0, 5) }; } catch (e) { results.lidarr = { error: e instanceof Error ? e.message : String(e) }; } } if (clients.readarr) { try { const readarrResults = await clients.readarr.searchAuthors(term); results.readarr = { count: readarrResults.length, results: readarrResults.slice(0, 5) }; } catch (e) { results.readarr = { error: e instanceof Error ? e.message : String(e) }; } } return { content: [{ type: "text", text: JSON.stringify(results, null, 2) }], }; }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/aplaceforallmystuff/mcp-arr'

If you have feedback or need assistance with the MCP directory API, please join our Discord server