sonarr_get_calendar
Retrieve upcoming TV episodes from Sonarr for your monitored series. Specify a number of days ahead to see scheduled releases.
Instructions
Get upcoming TV episodes from Sonarr
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| days | No | Number of days to look ahead (default: 7) |
Implementation Reference
- src/index.ts:263-275 (schema)Input schema and tool definition for sonarr_get_calendar. Defines the tool with a 'days' parameter (default: 7) to look ahead for upcoming TV episodes.
name: "sonarr_get_calendar", description: "Get upcoming TV episodes from Sonarr", inputSchema: { type: "object" as const, properties: { days: { type: "number", description: "Number of days to look ahead (default: 7)", }, }, required: [], }, }, - src/index.ts:1136-1137 (registration)The tool is registered via the CallToolRequestSchema handler switch-case. The case 'sonarr_get_calendar' is matched at line 1510.
server.setRequestHandler(CallToolRequestSchema, async (request) => { const { name, arguments: args } = request.params; - src/index.ts:1510-1519 (handler)Handler implementation for sonarr_get_calendar. Computes start/end dates (default 7 days ahead), calls clients.sonarr.getCalendar(start, end), and returns the JSON result.
case "sonarr_get_calendar": { if (!clients.sonarr) throw new Error("Sonarr not configured"); const days = (args as { days?: number })?.days || 7; const start = new Date().toISOString().split('T')[0]; const end = new Date(Date.now() + days * 24 * 60 * 60 * 1000).toISOString().split('T')[0]; const calendar = await clients.sonarr.getCalendar(start, end); return { content: [{ type: "text", text: JSON.stringify(calendar, null, 2) }], }; } - src/arr-client.ts:442-448 (helper)Base ArrClient.getCalendar method used by SonarrClient (inherited from ArrClient). Calls GET /api/v3/calendar with optional start/end query params.
async getCalendar(start?: string, end?: string): Promise<unknown[]> { const params = new URLSearchParams(); if (start) params.append('start', start); if (end) params.append('end', end); const query = params.toString() ? `?${params.toString()}` : ''; return this.request<unknown[]>(`/calendar${query}`); }