
Microsoft Outlook
Wire your coding agent to Outlook email, calendar, contacts, and tasks through Membrane without building OAuth flows yourself.
Overview
Microsoft Outlook is an agent skill for the Build phase that connects agents to Outlook email, calendar, contacts, and tasks through the Membrane CLI.
Install
npx skills add https://github.com/membranedev/application-skills --skill microsoft-outlookWhat is this skill?
- Covers email, calendar events, contacts, tasks, mailboxes, users, groups, and rooms via named actions
- Membrane CLI handles tenant login, credential refresh, and proxy execution
- Install via npm global @membranehq/cli@latest with network and a Membrane account (free tier)
- MIT-licensed application skill from membrane with Communication category metadata
- 8 Outlook resource areas: email, calendar, contact, task, mailbox, user, group, room
Adoption & trust: 539 installs on skills.sh; 178 GitHub stars; 3/3 security scanners passed (skills.sh audits).
What problem does it solve?
You need reliable Outlook access in an agent or app but do not want to maintain Microsoft OAuth, token refresh, and Graph plumbing yourself.
Who is it for?
Solo builders shipping Microsoft 365–connected features, ops automations, or agent tools that must read or update mail and calendar data.
Skip if: Teams that need Gmail-only stacks, air-gapped environments without network, or deployments unwilling to use a Membrane tenant account.
When should I use this skill?
Use when the user wants to interact with Microsoft Outlook data or communication workflows.
What do I get? / Deliverables
Authenticated Membrane sessions let you run Outlook actions from the terminal or agent so integration logic focuses on workflows instead of auth code.
- Authenticated Membrane tenant session
- Outlook API actions executed via CLI
Recommended Skills
Journey fit
Outlook connectivity is an implementation-time integration when the product or workflow must read or act on Microsoft 365 communication data. Membrane-backed CLI actions map to Graph-style resources (mail, events, tasks), which is classic third-party app wiring in the build phase.
How it compares
Use this Membrane skill package instead of building a custom Microsoft Graph OAuth integration from scratch.
Common Questions / FAQ
Who is microsoft-outlook for?
Indie builders and small teams using Claude Code, Cursor, or Codex who must integrate Outlook email, calendar, contacts, or tasks via Membrane rather than bespoke Graph clients.
When should I use microsoft-outlook?
Use it during Build integrations when a spec calls for Outlook data—syncing inbox threads, creating calendar events, or managing tasks for a SaaS or internal agent workflow.
Is microsoft-outlook safe to install?
It requires network access and Membrane credentials with broad communication scope; review the Security Audits panel on this Prism page and your tenant policies before production use.
SKILL.md
READMESKILL.md - Microsoft Outlook
# Microsoft Outlook Microsoft Outlook is a Microsoft-developed email and calendaring application. It's used by professionals and individuals to manage email, calendars, contacts, and tasks in one place. Many businesses rely on Outlook for internal and external communication. Official docs: https://learn.microsoft.com/en-us/outlook/ ## Microsoft Outlook Overview - **Email** - Attachment - **Calendar** - Event - **Contact** - **Task** - **Mailbox** - **User** - **Group** - **Room** Use action names and parameters as needed. ## Working with Microsoft Outlook This skill uses the Membrane CLI to interact with Microsoft Outlook. Membrane handles authentication and credentials refresh automatically — so you can focus on the integration logic rather than auth plumbing. ### Install the CLI Install the Membrane CLI so you can run `membrane` from the terminal: ```bash npm install -g @membranehq/cli@latest ``` ### Authentication ```bash membrane login --tenant --clientName=<agentType> ``` This will either open a browser for authentication or print an authorization URL to the console, depending on whether interactive mode is available. **Headless environments:** The command will print an authorization URL. Ask the user to open it in a browser. When they see a code after completing login, finish with: ```bash membrane login complete <code> ``` Add `--json` to any command for machine-readable JSON output. **Agent Types** : claude, openclaw, codex, warp, windsurf, etc. Those will be used to adjust tooling to be used best with your harness ### Connecting to Microsoft Outlook Use `membrane connection ensure` to find or create a connection by app URL or domain: ```bash membrane connection ensure "https://outlook.office.com/" --json ``` The user completes authentication in the browser. The output contains the new connection id. This is the fastest way to get a connection. The URL is normalized to a domain and matched against known apps. If no app is found, one is created and a connector is built automatically. If the returned connection has `state: "READY"`, skip to **Step 2**. #### 1b. Wait for the connection to be ready If the connection is in `BUILDING` state, poll until it's ready: ```bash npx @membranehq/cli connection get <id> --wait --json ``` The `--wait` flag long-polls (up to `--timeout` seconds, default 30) until the state changes. Keep polling until `state` is no longer `BUILDING`. The resulting state tells you what to do next: - **`READY`** — connection is fully set up. Skip to **Step 2**. - **`CLIENT_ACTION_REQUIRED`** — the user or agent needs to do something. The `clientAction` object describes the required action: - `clientAction.type` — the kind of action needed: - `"connect"` — user needs to authenticate (OAuth, API key, etc.). This covers initial authentication and re-authentication for disconnected connections. - `"provide-input"` — more information is needed (e.g. which app to connect to). - `clientAction.description` — human-readable explanation of what's needed. - `clientAction.uiUrl` (optional) — URL to a pre-built UI where the user can complete the action. Show this to the user when present. - `clientAction.agentInstructions` (optional) — instructions for the AI agent on how to proceed programmatically. After the user completes the action (e.g. authenticates in the browser), poll again with `membrane connection get <id> --json` to check if the state moved to `READY`. - **`CONFIGURATION_ERROR`** or **`SETUP