Skip to content

Ics Expand Rrule MCP tool

MCP findutils:ics_expand_rrule

Expand the recurring events of an iCalendar (.ics) file into one concrete event per occurrence between two dates, for a spreadsheet, a CRM or an importer that cannot read RRULE. Supports FREQ=DAILY, WEEKLY, MONTHLY and YEARLY with INTERVAL, COUNT, UNTIL, BYDAY (ordinals such as 2TU or -1FR included), BYMONTHDAY, BYMONTH and WKST, plus EXDATE, RDATE and RECURRENCE-ID overrides. A rule with BYSETPOS, BYYEARDAY, BYWEEKNO, BYHOUR, BYMINUTE, BYSECOND or an HOURLY or finer frequency keeps its first occurrence only and is named in notes. Each series stops at max_occurrences (default 366, at most 2000) and the output at 20000 events. Times are wall-clock as the file states them, never converted. Each occurrence gets its own UID (the series UID plus its start). Output is .ics, a JSON array in the ics_to_json shape, or CSV in the ics_to_csv spreadsheet columns. No calendar URL is fetched.

Needs an API key. Running a tool needs an API key. Keys are not for sale yet: ask for early access. About API keys

Arguments

application/json
  • input

    string required

    The .ics file contents.

  • from

    string required

    First day of the window, YYYY-MM-DD, inclusive, read in each event's own zone.

  • to

    string required

    Last day of the window, YYYY-MM-DD, inclusive.

  • max_occurrences

    integer optional

    Occurrences written per series at most. Default 366, at most 2000. A series with more in the window is cut and named in notes. Default 366.

  • format

    string optional

    ics (default), json or csv. One of ics · json · csv. Default "ics".

  • skip_cancelled

    boolean optional

    Leave out STATUS:CANCELLED series, cancelled single occurrences and cancelled events. Default true. Default true.

Example arguments

Verified
{
  "input": "BEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\nUID:[email protected]\nDTSTART;TZID=Europe/Istanbul:20261005T093000\nDTEND;TZID=Europe/Istanbul:20261005T094500\nRRULE:FREQ=WEEKLY;BYDAY=MO;COUNT=4\nSUMMARY:Standup\nEND:VEVENT\nEND:VCALENDAR\n",
  "from": "2026-10-01",
  "to": "2026-12-31",
  "format": "ics"
}