# Microsoft365

> Microsoft 365 integration for Outlook, Calendar, Contacts, and OneDrive via Microsoft Graph API. Supports reading/sending emails, managing calendar events, and accessing files.

- Skill: `modbender/microsoft365` (Agent Skill, multi-file: 8 files)
- Install (CLI): `npx skillmds@latest add modbender/microsoft365`
- Raw SKILL.md: https://api.skillmd.com/api/skills/modbender/microsoft365/raw
- Safety review: pending (external: skill-scanner PASS, skillspector PASS)
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: modbender (https://skillmd.com/u/modbender)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/modbender/microsoft365

---


# Microsoft 365 (Custom)

This skill provides a direct integration with Microsoft 365 services using the Device Code Flow.

## Usage

The skill is executed via `node index.js`. Use the `--account <name>` flag to specify which account to use (e.g., `--account personal`).

### Calendar
- **Fetch events**: `node index.js --account personal --calendar`
- **Create event**: Use interactive mode or automated scripts.

### Email
- **Read emails**: Interactive mode (option 1).
- **Send email**: Interactive mode (option 5).

### Contacts & OneDrive
- **Contacts**: Interactive mode (option 3).
- **OneDrive files**: Interactive mode (option 4).

## Configuration & Security

This skill uses centralized credential management to keep the skill directory clean and safe for sharing.

### File Locations
- **Tokens**: Saved in `~/.openclaw/credentials/ms365.tokens.<account>.json`.
- **Environment**: Automatically loads secrets from `~/.openclaw/credentials/ms365.env` if present.
- **Config**: Expects `config.<account>.json` in the skill directory (or environment variables).

### Setup
1. Register an application in Azure (Public Client Flow, Device Code enabled).
2. Set `MICROSOFT_CLIENT_ID` and `MICROSOFT_TENANT_ID` in your environment or `~/.openclaw/credentials/ms365.env`.
3. Run `node index.js --account <name>` and follow the device login instructions.

