Skip to content

Use fetch /me/calendarView for exact calendar reads in daily-outlook-triage#161

Open
solvaholic wants to merge 1 commit into
microsoft:mainfrom
solvaholic:solvaholic-reimagined-umbrella
Open

Use fetch /me/calendarView for exact calendar reads in daily-outlook-triage#161
solvaholic wants to merge 1 commit into
microsoft:mainfrom
solvaholic:solvaholic-reimagined-umbrella

Conversation

@solvaholic

Copy link
Copy Markdown

Fixes #160

What

Switch Step 3 of the daily-outlook-triage skill from workiq-ask to a structured workiq-fetch on /me/calendarView, and add guidance to convert the returned UTC instant to the user's time zone client-side.

Why

Per #160, reading meeting times through ask returns a bare, unlabeled, human-formatted string ("12 PM to 1 PM") that appears to apply the zone's standard UTC offset rather than the current daylight offset - so during DST it can render an hour early, and the caller can't detect or correct it because the underlying start.dateTime/timeZone isn't exposed. fetch on /me/calendarView returns each event as { dateTime, timeZone: "UTC" }, an unambiguous instant that converts DST-correctly.

Changes (docs-only, single skill file)

  • Step 3 now calls fetch /me/calendarView with $select/$orderby, and adds notes to:
    • build the window from local midnight to next local midnight as ISO 8601 with explicit offsets (offset-less values are read as UTC and shift the window off the user's day);
    • use calendarView not /me/events for a date window, so recurring occurrences expand;
    • convert the UTC instant client-side, and map Windows zone IDs (e.g. Eastern Standard Time from mailboxSettings.timeZone) to IANA before converting - never format times via ask;
    • read the Teams link from onlineMeeting.joinUrl and the response from responseStatus.response;
    • not paginate with $skip; follow @odata.nextLink as a server-relative path.
  • Required MCP Tools table now lists fetch alongside ask.
  • Error handling ("No Calendar Events Found", "Incorrect or Missing Time Zone", "Partial Data Retrieved") updated to match the fetch-based flow.

Notes

Verification

Docs-only change to a skill's guidance; no code or tests. Tool names, entityUrls shape, and /me/calendarView usage cross-checked against the workiq plugin's fetch-work-iq.md reference and SKILL.md.

…triage

Reading meeting times through `ask` returns a bare, unlabeled, human-formatted
string that applies the zone's standard UTC offset rather than the current
daylight offset, so during DST months times can render an hour early with no way
for the caller to detect or correct it. Switch Step 3 to a structured
`fetch /me/calendarView` read, which returns each event as an unambiguous UTC
instant ({ dateTime, timeZone: "UTC" }) that converts DST-correctly, and add
guidance to convert the instant client-side, map Windows zone IDs to IANA, use
calendarView (not /me/events) for a date window, and read onlineMeeting.joinUrl
and responseStatus.response. Update the tools table and error-handling entries
to match.

Fixes microsoft#160

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@solvaholic

Copy link
Copy Markdown
Author

@microsoft-github-policy-service agree company="Microsoft"

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Document fetch/calendarView for exact calendar reads — ask returns unlabeled, DST-prone meeting times

1 participant