Skip to content

feat: Add calendar CRUD operations via CalDAV/JMAP #18

@kerryhatcher

Description

@kerryhatcher

Feature Request

The CLI and MCP server currently have no calendar support. Adding full CRUD access to calendars and events would enable AI assistants and terminal workflows to manage scheduling alongside email and contacts.

Proposed CLI Commands

# List calendars
fastmail-cli calendars list

# List events (with date range filter)
fastmail-cli calendars events --calendar "Personal" --from "2026-03-27" --to "2026-04-30"

# Get event details
fastmail-cli calendars event EVENT_ID

# Create an event
fastmail-cli calendars create --calendar "Personal" --title "Sacred Space" --start "2026-03-29T09:30:00" --duration 60 --location "Church"

# Update an event
fastmail-cli calendars update EVENT_ID --title "Updated Title" --location "New Location"

# Delete an event
fastmail-cli calendars delete EVENT_ID

GraphQL Mutations & Queries (MCP Server)

Expose calendar operations as GraphQL types for the MCP server:

# List calendars
{ calendars { id name color } }

# List events in a date range
{ events(calendar: "Personal", after: "2026-03-27", before: "2026-04-30") {
    id title start end location description isAllDay
  }
}

# Get a single event
{ event(id: "abc123") { id title start end location description attendees { name email } } }

# Create an event
mutation {
  createEvent(calendar: "Personal", title: "Team Meeting", start: "2026-04-01T10:00:00", end: "2026-04-01T11:00:00", location: "Zoom") { id title }
}

# Update an event
mutation {
  updateEvent(id: "abc123", title: "Updated Meeting", location: "Conference Room") { id title }
}

# Delete an event
mutation {
  deleteEvent(id: "abc123") { success }
}

Use Case

When triaging emails, AI assistants frequently encounter meeting invitations, event details, and scheduling requests. Currently, the assistant can identify events but has no way to add them to the user's calendar — requiring the user to manually create each entry. Calendar CRUD support would close this gap and enable end-to-end email-to-calendar workflows.

This is a natural companion to the contacts CRUD support requested in #17. Together, email + contacts + calendar would provide comprehensive PIM (Personal Information Management) coverage.

Implementation Notes

Fastmail supports both JMAP (JSCalendar via RFC 8984) and CalDAV for calendar access. JMAP would be consistent with the existing email integration approach.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions