home / skills / probichaux / clawdskills / m365-calendar
This skill helps you manage Microsoft 365 calendar events via Graph API, including invitations and Teams meetings.
npx playbooks add skill probichaux/clawdskills --skill m365-calendarReview the files below or copy the command above to add this skill to your agents.
---
name: m365-calendar
description: Read, create, and manage Microsoft 365 calendar events via Graph API. Supports meeting invitations with attendees and Teams meetings.
---
# Microsoft 365 Calendar
CLI tool for Microsoft 365 Calendar via Microsoft Graph API.
## Setup
Uses the same client/tenant from m365mail. Just authenticate with calendar scope:
```bash
# Authenticate (device code flow)
m365cal auth
```
If you haven't set up m365mail yet, do that first — the calendar tool shares its config.
### Required Permissions
In your Entra ID app, add these Graph permissions:
- `Calendars.ReadWrite` (delegated)
## Commands
### View Events
```bash
m365cal today # Today's events
m365cal tomorrow # Tomorrow's events
m365cal week # Next 7 days
m365cal range 2024-01-15 # Specific date
m365cal range 2024-01-15 2024-01-20 # Date range
m365cal show <event_id> # Event details
```
### Create Events
```bash
# Simple event
m365cal create -s "Team standup" --start "2024-01-15 09:00" -d 30
# With location
m365cal create -s "Lunch" --start "2024-01-15 12:00" -d 60 -l "Cafe"
# With attendees (sends invitations automatically)
m365cal create -s "Project review" --start "2024-01-15 14:00" -d 60 \
-a [email protected] [email protected] \
-o [email protected]
# Teams meeting with attendees
m365cal create -s "Sprint planning" --start "2024-01-15 10:00" -d 90 \
-a [email protected] --teams
# All-day event
m365cal create -s "Conference" --start "2024-01-20" --all-day
```
### Update Events
```bash
m365cal update <event_id> --subject "New title"
m365cal update <event_id> --start "2024-01-15 15:00"
m365cal update <event_id> -l "Room 201"
```
Updates with attendees automatically send update notifications.
### Delete/Cancel Events
```bash
m365cal delete <event_id> # Silent delete
m365cal delete <event_id> -m "Rescheduling" # Cancel with message to attendees
```
### Respond to Invitations
```bash
m365cal respond <event_id> accept
m365cal respond <event_id> tentative -m "Might be late"
m365cal respond <event_id> decline --silent # Don't notify organizer
```
### List Calendars
```bash
m365cal calendars
m365cal calendars --json
```
## Options
- `-v, --verbose`: Show more details
- `--json`: Output as JSON (for scripting)
- `-d, --duration`: Duration in minutes (default: 60)
- `-a, --attendees`: Required attendees (emails)
- `-o, --optional`: Optional attendees
- `-t, --teams`: Create Teams meeting
- `-l, --location`: Location
- `-b, --body`: Description/notes
## Meeting Invitations
When you create or update an event with attendees, Microsoft Graph automatically:
1. Sends meeting invitations via email
2. Adds the event to attendees' calendars (pending acceptance)
3. Sends update/cancellation notices when changed
No need to use m365mail separately — invitations are built into the calendar API.
## Event IDs
Events are identified by long IDs. Commands accept:
- Full ID
- ID prefix (first 8+ chars usually unique)
## Token Storage
- Config (shared): `~/.m365mail/config.json`
- Calendar tokens: `~/.m365calendar/token_cache.json`
## Troubleshooting
**"No cached token"**: Run `m365cal auth`
**"Run m365mail setup first"**: Calendar shares credentials with mail. Set up mail first.
**Permission denied**: Ensure `Calendars.ReadWrite` permission is granted in Entra ID.
This skill integrates with Microsoft 365 Calendar via the Microsoft Graph API to read, create, update, and delete calendar events. It supports meeting invitations, attendee management, Teams meeting creation, and script-friendly JSON output. It reuses the same authentication/config as the mail client for seamless setup.
The skill authenticates with Microsoft Graph using delegated calendar permissions and stores tokens locally. It lists events for common ranges, creates events with optional attendees and Teams conferencing, updates or cancels events (sending notifications automatically when attendees are present), and can output results as JSON for automation. Event IDs or prefixes are accepted for operations.
What permissions are required?
You need Calendars.ReadWrite (delegated) configured in your Entra ID app.
How do invitations get sent to attendees?
Microsoft Graph handles sending invitations, adding events to attendees’ calendars, and notifying them of updates or cancellations automatically.
Where are tokens and config stored?
Config is shared with the mail client under ~/.m365mail/config.json; calendar tokens are stored at ~/.m365calendar/token_cache.json.