Claude
Skills
Sign in
Back

pp-outlook-calendar

Included with Lifetime
$97 forever

The first Outlook calendar CLI built for AI agents on personal Microsoft 365 accounts — with offline conflict... Trigger phrases: `what's on my calendar today`, `find me an hour next week`, `do I have any conflicts`, `what meetings haven't I responded to`, `prep me for my next meeting`, `schedule a meeting on my Outlook calendar`, `use outlook-calendar`, `run outlook-calendar`.

Productivity

What this skill does

<!-- GENERATED FILE — DO NOT EDIT.
     This file is a verbatim mirror of library/productivity/outlook-calendar/SKILL.md,
     regenerated post-merge by tools/generate-skills/. Hand-edits here are
     silently overwritten on the next regen. Edit the library/ source instead.
     See the repository agent guide, section "Generated artifacts: registry.json, cli-skills/". -->

# Outlook Calendar — Printing Press CLI

## Prerequisites: Install the CLI

This skill drives the `outlook-calendar-pp-cli` binary. **You must verify the CLI is installed before invoking any command from this skill.** If it is missing, install it first:

1. Install via the Printing Press installer. It defaults binaries to `$HOME/.local/bin` on macOS/Linux and `%LOCALAPPDATA%\Programs\PrintingPress\bin` on Windows:
   ```bash
   npx -y @mvanhorn/printing-press-library install outlook-calendar --cli-only
   ```
2. Verify: `outlook-calendar-pp-cli --version`
3. Ensure the reported install directory is on `$PATH` for the agent/runtime that will invoke this skill.

If the `npx` install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.3 or newer):

```bash
go install github.com/mvanhorn/printing-press-library/library/productivity/outlook-calendar/cmd/outlook-calendar-pp-cli@latest
```

If `--version` reports "command not found" after install, the runtime cannot see the binary directory on `$PATH`. Do not proceed with skill commands until verification succeeds.

## When to Use This CLI

Reach for outlook-calendar-pp-cli when an agent needs to read or write a personal Microsoft 365 calendar non-interactively. It is the right choice for daily-brief, schedule-this-meeting, find-me-time, what-changed-this-week, and prep-me-for-my-next-meeting tasks. Prefer it over hitting Microsoft Graph directly when you want offline-shaped queries (conflicts, free-time math, recurring drift) that the Graph endpoints don't expose as single calls.

## Unique Capabilities

These capabilities aren't available in any other tool for this API.

### Local state that compounds
- **`conflicts`** — Find overlapping events across all your Outlook calendars in one pass — the double-bookings Outlook's own UI never shows.

  _When the agent needs to know whether a proposed time blocks the user, this is the source of truth across every calendar the user owns._

  ```bash
  outlook-calendar-pp-cli conflicts --from today --to +7d --json --select pair_id,a.subject,b.subject,overlap_minutes
  ```
- **`freetime`** — Compute N-minute gaps in your working hours over the next K days, honoring all calendars and optional OOF/tentative exclusion.

  _When the agent needs to propose a meeting time, this gives a deterministic answer that respects the user's actual working hours._

  ```bash
  outlook-calendar-pp-cli freetime --duration 60m --within 'Mon-Fri 9-17' --next 7d --exclude-oof --json
  ```
- **`review`** — Diff against the last delta-sync snapshot: what was added, rescheduled, cancelled, or had its RSVP change.

  _Lets the agent answer "what changed since I last looked?" without scanning the whole week._

  ```bash
  outlook-calendar-pp-cli review --since last-sync --json
  ```
- **`pending`** — List events whose RSVP is still pending and whose start time is in the future, ordered by start.

  _Agent task: "what invites do I still need to answer?" — answered in one query._

  ```bash
  outlook-calendar-pp-cli pending --json
  ```
- **`recurring-drift`** — For each recurring-series master, list instances whose start/end/subject/location diverged from the master pattern.

  _Catches the silent organizer-side reschedules that cause people to join Teams calls at the wrong hour._

  ```bash
  outlook-calendar-pp-cli recurring-drift --json
  ```
- **`with`** — How often have I met with this person, and when did I see them last? Counts and recent N events from local store.

  _Agent task: "how often do I meet with X?" without reading the whole calendar._

  ```bash
  outlook-calendar-pp-cli with [email protected] --since 90d --json
  ```
- **`tz-audit`** — Surface events whose start time-zone differs from the calendar's default or from their own end-time TZ — likely-broken displays on other devices.

  _Agent task: "are any of my events about to render at the wrong hour for someone?" — yes/no with the offenders._

  ```bash
  outlook-calendar-pp-cli tz-audit --json
  ```

### Agent-native plumbing
- **`prep`** — For upcoming events in the next N hours, return a dossier: subject, location, attendee emails, organizer, body excerpt, attachments list, recurrence/online-meeting flags.

  _Single tool call that gives an agent everything needed to brief the user on what's coming up._

  ```bash
  outlook-calendar-pp-cli prep --next 4h --json
  ```

## Command Reference

**attachments** — Manage event attachments

- `outlook-calendar-pp-cli attachments delete` — Delete an attachment
- `outlook-calendar-pp-cli attachments get` — Get a specific attachment by id
- `outlook-calendar-pp-cli attachments list` — List attachments on an event

**availability** — Free/busy and meeting-time intelligence (degraded on personal Microsoft accounts; prefer freetime for self-only queries)

- `outlook-calendar-pp-cli availability find` — Suggest meeting times based on attendee availability and constraints
- `outlook-calendar-pp-cli availability schedule` — Get free/busy schedule for a list of users (limited on personal Microsoft accounts)

**calendars** — Manage Outlook calendars on your account

- `outlook-calendar-pp-cli calendars create` — Create a new calendar
- `outlook-calendar-pp-cli calendars default` — Get the user's default calendar
- `outlook-calendar-pp-cli calendars delete` — Delete a calendar
- `outlook-calendar-pp-cli calendars get` — Get a calendar by id
- `outlook-calendar-pp-cli calendars list` — List all calendars on the account
- `outlook-calendar-pp-cli calendars update` — Update a calendar

**categories** — Manage Outlook master categories used to tag events

- `outlook-calendar-pp-cli categories create` — Create a new master category
- `outlook-calendar-pp-cli categories delete` — Delete a master category
- `outlook-calendar-pp-cli categories list` — List master categories

**delta** — Incremental delta-sync of events into the local SQLite store

- `outlook-calendar-pp-cli delta events` — Pull incremental event changes since the last delta token
- `outlook-calendar-pp-cli delta view` — Pull incremental calendar-view changes within a window

**events** — Outlook calendar events on your default or named calendar

- `outlook-calendar-pp-cli events accept` — Accept a meeting invite
- `outlook-calendar-pp-cli events cancel` — Cancel an event you organized (notifies attendees)
- `outlook-calendar-pp-cli events create` — Create a new event on the default calendar
- `outlook-calendar-pp-cli events decline` — Decline a meeting invite
- `outlook-calendar-pp-cli events delete` — Delete an event by id
- `outlook-calendar-pp-cli events dismiss` — Dismiss the reminder for an event
- `outlook-calendar-pp-cli events forward` — Forward an event to additional attendees
- `outlook-calendar-pp-cli events get` — Get a single event by id
- `outlook-calendar-pp-cli events instances` — List occurrences of a recurring event in a date range
- `outlook-calendar-pp-cli events list` — List events on the default calendar
- `outlook-calendar-pp-cli events range` — List events occurring within a date range (calendarView; expands recurring instances)
- `outlook-calendar-pp-cli events search` — Server-side search across events ($search query)
- `outlook-calendar-pp-cli events snooze` — Snooze the reminder for an event until a specific time
- `outlook-calendar-pp-cli events tentative` — Tentatively accept a meeting invite
- `outlook-calendar-pp-cli events update` — Update fields on an existing event (subject, body, time, location, attendees)


### Finding the right command

When you know what you want to do but not which command doe

Related in Productivity