radarr_get_calendar
Get scheduled Radarr movie releases within a date range, with an optional limit on results.
Instructions
Get upcoming movies from the Radarr calendar
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| startDate | No | Start date (YYYY-MM-DD, default: 7 days ago) | |
| endDate | No | End date (YYYY-MM-DD, default: 30 days from now) | |
| limit | No | Max results to return (default: 200) |
Implementation Reference
- src/arr/mcp-functions.ts:583-616 (handler)Main handler function `radarrGetCalendar` that calls the Radarr client's `getCalendar` method, transforms entries (truncating overviews), and returns a success/error response with paginated results.
async radarrGetCalendar(args: { startDate?: string; endDate?: string; limit?: number; }): Promise<Record<string, unknown>> { const client = this.ensureRadarr(); const limit = args.limit || ARR_PREVIEW_LIMIT; try { const entries = await client.getCalendar(args.startDate, args.endDate); return { success: true, totalEntries: entries.length, entries: entries.slice(0, limit).map((m) => ({ id: m.id, title: m.title, year: m.year, status: m.status, inCinemas: m.inCinemas, physicalRelease: m.physicalRelease, digitalRelease: m.digitalRelease, hasFile: m.hasFile, monitored: m.monitored, tmdbId: m.tmdbId, overview: m.overview ? truncate(m.overview, SUMMARY_PREVIEW_LENGTH) : undefined, })), showing: Math.min(limit, entries.length), }; } catch (error) { return { success: false, error: error instanceof Error ? error.message : String(error), }; } } - src/arr/client.ts:211-218 (helper)RadarrClient.getCalendar method — makes the actual HTTP GET request to /calendar with start/end date params (defaulting to ±30/7 days), returns calendar entries.
async getCalendar(startDate?: string, endDate?: string): Promise<RadarrCalendarEntry[]> { const start = startDate || new Date(Date.now() - ARR_CALENDAR_DAYS_PAST * 86400000).toISOString().split("T")[0]; const end = endDate || new Date(Date.now() + ARR_CALENDAR_DAYS_FUTURE * 86400000).toISOString().split("T")[0]; const { data } = await this.http.get("/calendar", { params: { start, end, unmonitored: false }, }); return ensureArray(data); } - src/arr/tool-schemas.ts:175-185 (schema)Input schema definition for radarr_get_calendar tool: startDate, endDate (strings, YYYY-MM-DD), and limit (number, default 200).
name: "radarr_get_calendar", description: "Get upcoming movies from the Radarr calendar", inputSchema: { type: "object" as const, properties: { startDate: { type: "string", description: "Start date (YYYY-MM-DD, default: 7 days ago)" }, endDate: { type: "string", description: "End date (YYYY-MM-DD, default: 30 days from now)" }, limit: { type: "number", description: "Max results to return (default: 200)", default: 200 }, }, }, }, - src/arr/tool-registry.ts:97-103 (registration)Registration of the radarr_get_calendar tool in the registry, mapping it to ArrMCPFunctions.radarrGetCalendar with argument passing.
registry.register("radarr_get_calendar", (args) => arrFunctions.radarrGetCalendar({ startDate: args.startDate as string | undefined, endDate: args.endDate as string | undefined, limit: args.limit as number | undefined, }).then(wrapResponse) );