sonarr_get_episodes
Retrieve TV series episodes and identify which are available or missing. Optionally filter by season to check completeness.
Instructions
Get episodes for a TV series. Shows which episodes are available and which are missing.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| seriesId | Yes | Series ID to get episodes for | |
| seasonNumber | No | Optional: filter to a specific season |
Implementation Reference
- src/index.ts:277-293 (schema)Schema/registration of the sonarr_get_episodes tool: defines the tool name, description, and input schema requiring seriesId (number) with optional seasonNumber (number).
name: "sonarr_get_episodes", description: "Get episodes for a TV series. Shows which episodes are available and which are missing.", inputSchema: { type: "object" as const, properties: { seriesId: { type: "number", description: "Series ID to get episodes for", }, seasonNumber: { type: "number", description: "Optional: filter to a specific season", }, }, required: ["seriesId"], }, }, - src/index.ts:1521-1542 (handler)Handler for sonarr_get_episodes: extracts seriesId and optional seasonNumber from args, calls SonarrClient.getEpisodes(), and returns episode data (id, seasonNumber, episodeNumber, title, airDate, hasFile, monitored).
case "sonarr_get_episodes": { if (!clients.sonarr) throw new Error("Sonarr not configured"); const { seriesId, seasonNumber } = args as { seriesId: number; seasonNumber?: number }; const episodes = await clients.sonarr.getEpisodes(seriesId, seasonNumber); return { content: [{ type: "text", text: JSON.stringify({ count: episodes.length, episodes: episodes.map(e => ({ id: e.id, seasonNumber: e.seasonNumber, episodeNumber: e.episodeNumber, title: e.title, airDate: e.airDate, hasFile: e.hasFile, monitored: e.monitored, })), }, null, 2), }], }; } - src/arr-client.ts:594-600 (helper)Helper method on SonarrClient: getEpisodes calls the /episode API endpoint with seriesId and optional seasonNumber query parameters, returning typed Episode[] data.
async getEpisodes(seriesId: number, seasonNumber?: number): Promise<Episode[]> { let url = `/episode?seriesId=${seriesId}`; if (seasonNumber !== undefined) { url += `&seasonNumber=${seasonNumber}`; } return this['request']<Episode[]>(url); } - src/arr-client.ts:87-110 (schema)TypeScript interface defining the Episode shape returned by the Sonarr API, used as the return type for getEpisodes.
export interface Episode { id: number; seriesId: number; tvdbId: number; episodeFileId: number; seasonNumber: number; episodeNumber: number; title: string; airDate: string; airDateUtc: string; overview: string; hasFile: boolean; monitored: boolean; absoluteEpisodeNumber: number; unverifiedSceneNumbering: boolean; episodeFile?: { id: number; relativePath: string; path: string; size: number; dateAdded: string; quality: { quality: { id: number; name: string } }; }; }