Document `fetch`/`calendarView` for exact calendar reads — `ask` returns unlabeled, DST-prone meeting times
Nobody has claimed this yet.
- Dominant language
- PowerShell
- Stars
- 1k
- Forks
- 132
- Avg merge
- 5d 19h
- Merged PRs (30d)
- 6
Description
Summary
When reading calendar events, the ask tool returns meeting times as a bare, human-formatted string with no timezone label (e.g. "12 PM to 1 PM"). During daylight-saving months this string can be rendered one hour early, because it appears to apply the zone's standard UTC offset rather than the current daylight offset. Because the string is unlabeled and doesn't expose the underlying start.dateTime / timeZone, a caller can't detect or correct the error — and asking ask to "report in my local time zone" just staples a label onto the already-wrong number.
The structured tools do not have this problem. fetch (and call-function for calendarView) return the real instant:
"start": { "dateTime": "2026-07-07T13:00:00.0000000", "timeZone": "UTC" }
That's an unambiguous UTC instant, so a UTC→local conversion using a real tz database (e.g. IANA zoneinfo) is DST-correct by construction. In my testing, workiq fetch -u "/me/calendarView?startDateTime=...&endDateTime=..." returned every event as {dateTime, timeZone: "UTC"} and converted cleanly to the correct local -04:00 (EDT) offset, whereas the ask phrasing of the same day's schedule produced standard-offset times.
Requests
- Docs (primary): In the
askand calendar guidance, recommendfetch/call-function(/me/calendarView) for exact calendar reads, and note thatasktimes are approximate and may be off by the DST delta.references/fetch-work-iq.mdalready shows an events example — a short "prefer this overaskfor precise times, and convert the UTC instant yourself" note would close the gap. Thedaily-outlook-triageskill (which drives calendar reads throughask) is the main place this bites. - Optional (enhancement): Consider honoring a
Prefer: outlook.timezone="..."header (or equivalent) onfetchreads so events can be returned pre-localized, matching Graph's own behavior. Todayfetchexposes no headers, so callers must convert client-side.
Notes
- Use
calendarView(not/me/events) for a date window —/me/eventsreturns recurring masters at their original date rather than expanded occurrences. - Related but distinct: #95 (write-side
createEventignorestimeZone) and #83 (specific-zone400). This report is about the read/query path.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Read references/fetch-work-iq.md and the daily-outlook-triage skill to see how calendar reads are currently explained and issued. Document fetch or call-function with /me/calendarView for exact times, explain UTC and DST-safe client conversion, and note the limitation of ask; done means the guidance clearly distinguishes approximate and precise reads.
Written by the indexing model from the issue text.
Assessment
- Domain
- api, cli, documentation
- Issue type
- Documentation
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Quiet
- Clarity
- Clearly specified
- Newbie friendliness
- 78/100