Skip to content

cal_add: bare ISO timestamps default to UTC, events created in wrong time slot #3

Description

@BrewingCoder

Bug

When cal_add receives bare ISO 8601 timestamps (no offset or timezone), the Graph API defaults to UTC. This causes events to be created shifted from the user's intended local time.

Reproduction

Two events created via MCP cal_add:

{"title": "Dogs to groomers", "start": "2026-03-06T06:30:00", "end": "2026-03-06T08:00:00"}
{"title": "Pickup dogs from groomers", "start": "2026-03-06T12:00:00", "end": "2026-03-06T13:30:00"}

First event landed in the correct slot. Second event was shifted — both were interpreted as UTC, 5 hours ahead of the user's Eastern timezone.

Root Cause

The Graph API event resource expects a object with both and fields:

{
  "start": {"dateTime": "2026-03-06T12:00:00", "timeZone": "Eastern Standard Time"},
  "end": {"dateTime": "2026-03-06T13:30:00", "timeZone": "Eastern Standard Time"}
}

Outpost currently sends the bare dateTime without a timeZone property, so Graph defaults to UTC.

Proposed Fix

  1. Add a timezone config setting (set during outpost setup, stored in config.json, e.g. "America/New_York")
  2. When building the event payload in api/calendar.py, include timeZone in the start/end objects using the configured timezone
  3. Add an optional --timezone flag to cal add / cal update CLI and MCP tools for per-event override
  4. Fall back to UTC if no timezone is configured (current behavior, but explicit)

Affected Components

  • src/outpost/api/calendar.py — event payload construction
  • src/outpost/cli/calendar.py — CLI parameter
  • src/outpost/mcp_server.py — MCP tool parameter
  • src/outpost/config.py — timezone config setting
  • outpost setup — timezone prompt

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingcalendarOutlook Calendarpriority: highMajor feature broken, blocking usage

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions