InTouch Hub · Blue Isle Software

iCal Events

Parse an .ics (iCalendar) file or URL and list upcoming events within a lookahead window.

iCal Events

Parse an .ics (iCalendar) file and list upcoming events within a lookahead window. Works with local files and with remote http(s):// URLs (e.g. Google Calendar's "Secret address in iCal format" feed).

Tool ID

ical-events

Credential Required

No.

Input Properties

Property Type Default Description
source string Required. Local .ics file path or http(s):// URL to an iCal feed
daysAhead string "7" Lookahead window in days
maxEvents string "20" Maximum events to return

Published Outputs

Output Description
summary Multi-line text listing upcoming events
events JSON array of {summary, start, allDay, location, description, uid}
count Number of events in the window
daysAhead Echo of the window size (for downstream use)

Example — Google Calendar feed

  1. In Google Calendar → Settings → Integrate calendar → copy the "Secret address in iCal format" (ending in .ics).
  2. Use that URL as the source:
tool: ical-events
properties:
  source: "https://calendar.google.com/calendar/ical/.../basic.ics"
  daysAhead: "7"

Example — local file

tool: ical-events
properties:
  source: "/home/me/calendar.ics"
  daysAhead: "14"

Actual captured output (with a test .ics containing 4 events, including a past event and a 30-day-out event):

Upcoming events — next 14 day(s) from 2026-04-21 13:59:
  - 2026-04-22T11:00: Team standup @ Zoom
  - 2026-04-26 (all day): Dentist appointment

(The past event was skipped. The 30-day-out event was outside the 14-day window. The all-day event was formatted with "(all day)".)

What's supported

What's NOT supported

For a typical "what's on my calendar this week" workflow, this covers the common cases without shipping a 3rd-party dep.

Chaining Patterns

Privacy note

Google Calendar's "secret address" iCal feed URL contains an access token. Treat it as a password. Don't commit it to git, don't share it. Prefer storing it as an InTouch credential or job property rather than hardcoding it in the YAML.