From c7a8823068b7c5be984ced1fd53e7b9d5391bee9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patrick=20G=C3=BCra?= Date: Sun, 19 Apr 2026 23:05:30 +0000 Subject: [PATCH] Add Microsoft 365 community plugin Adds external-integration entry for OMI + Microsoft 365 (Outlook Mail, Calendar, Teams, SharePoint, OneDrive) with user-facing setup instructions and icon. Backend: https://github.com/snyfer/omi-ms365-plugin Hosted: https://omi-ms365-plugin.onrender.com --- community-plugins.json | 23 +++++++++++++ plugins/instructions/ms365/README.md | 47 +++++++++++++++++++++++++++ plugins/logos/ms365.png | Bin 0 -> 7083 bytes 3 files changed, 70 insertions(+) create mode 100644 plugins/instructions/ms365/README.md create mode 100644 plugins/logos/ms365.png diff --git a/community-plugins.json b/community-plugins.json index 7ea2a208c04..9b37f64494e 100644 --- a/community-plugins.json +++ b/community-plugins.json @@ -1425,5 +1425,28 @@ "setup_instructions_file_path": "" }, "deleted": true + }, + { + "id": "omi-ms365-integration", + "name": "Microsoft 365", + "author": "Patrick Güra", + "description": "Connect to Outlook, Teams, SharePoint and OneDrive. Draft emails, schedule meetings, summarize threads and upload files from your OMI conversations.", + "image": "/plugins/logos/ms365.png", + "capabilities": [ + "external_integration" + ], + "external_integration": { + "triggers_on": "memory_creation", + "webhook_url": "https://omi-ms365-plugin.onrender.com/webhook/memory", + "setup_completed_url": "https://omi-ms365-plugin.onrender.com/setup_check", + "setup_instructions_file_path": "/plugins/instructions/ms365/README.md", + "auth_steps": [ + { + "name": "Sign in with Microsoft", + "url": "https://omi-ms365-plugin.onrender.com/setup/ms365" + } + ] + }, + "deleted": false } ] diff --git a/plugins/instructions/ms365/README.md b/plugins/instructions/ms365/README.md new file mode 100644 index 00000000000..6de2c357601 --- /dev/null +++ b/plugins/instructions/ms365/README.md @@ -0,0 +1,47 @@ +# OMI + Microsoft 365 Integration + +Seamlessly connect your OMI wearable with Microsoft 365 — Outlook Mail, +Calendar, Teams, SharePoint and OneDrive — with a single sign-in. + +## Features + +- Draft, search and send Outlook mail +- List upcoming events, create meetings and find free slots in your calendar +- Send Teams chat messages and create Teams online meetings +- Browse recent files across OneDrive and SharePoint, upload text content, + read documents +- Secure OAuth 2.0 authentication via Microsoft Entra ID (multi-tenant — + works for any personal `@outlook.com` / `@hotmail.com` account and any + Microsoft 365 work or school account) +- Tokens are stored server-side; you can revoke access at any time + +## Setup + +1. Open **Apps** in OMI and find **Microsoft 365**. +2. Tap **Connect with Microsoft**. +3. Sign in with your Microsoft account and approve the requested + permissions. +4. You will be redirected back to OMI automatically. That's it. + +## Permissions Requested + +The plugin requests the minimum delegated Microsoft Graph scopes required +for the features above: `User.Read`, `MailboxSettings.Read`, `Mail.Read`, +`Mail.Send`, `Mail.ReadWrite`, `Calendars.ReadWrite`, `Chat.ReadWrite`, +`ChannelMessage.Send`, `OnlineMeetings.ReadWrite`, `Team.ReadBasic.All`, +`Files.ReadWrite.All`, `Sites.Read.All`, `People.Read`, `Contacts.Read`, +`offline_access`. + +## Revoke Access + +You can disconnect at any time from the OMI app. You may also revoke the +consent from the Microsoft side at + → **Privacy** → **Apps and services +you've authorized**. + +## Source & Issues + +- Source: https://github.com/snyfer/omi-ms365-plugin +- Backend: https://omi-ms365-plugin.onrender.com +- Manifest: https://omi-ms365-plugin.onrender.com/.well-known/omi-tools.json +- Questions / issues: please open an issue on the GitHub repo above. diff --git a/plugins/logos/ms365.png b/plugins/logos/ms365.png new file mode 100644 index 0000000000000000000000000000000000000000..68e4fff8515e099440ad67dfe896a4c1db26e8dd GIT binary patch literal 7083 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 literal 0 HcmV?d00001