Outlook

Connect Outlook or Microsoft 365 and let Maya read, triage, draft and reply in your mailbox - through Microsoft Graph, with drafts you approve before anything sends. Maya is the only agent with mailbox access.

Diese Seite ist in deiner Sprache noch nicht verfügbar - wir zeigen die englische Version.

Connect Outlook or Microsoft 365 and Maya - your email agent - works in your real mailbox through Microsoft Graph. She reads what's new, drafts replies with the real recipient and the real thread attached, and hands you an editable card. You click Send. She never can.

The boundary, up front

Maya is the only agent of the ten with mailbox access. This isn't a prompt instruction - the email toolset is only mounted for Maya's runs, so for Ashley, Blake, Lucy and the rest, the tools that touch your mail do not exist. And Maya never sends. Every compose and reply renders a card you edit and confirm. The send function is confirmation-gated in the database, not in a prompt - if the model tries to call it, the runtime intercepts it and renders the card for you instead. There is no path from a model decision to a sent message.

What connecting Outlook unlocks

Everything below runs through Microsoft Graph on your behalf, and everything that leaves your mailbox goes through a card you clicked.

Reading and triage

  • "Show me my emails" → a rendered inbox card, not a wall of numbered text. Filter to unread only.
  • Open any message in full from the card.
  • Priority and noise rules - mark high-priority senders and domains, filter newsletters by keyword, and Maya's inbox view honours them.

Drafting

  • "Reply to the Contoso one" → an editable reply card with the real recipient, the real Re: subject and the real thread preserved. You pass the message id; the server pulls the sender, subject and thread from the cache. Maya cannot invent an address - if the id isn't real, the tool refuses instead of guessing.
  • "Write an email to Jean about the Q2 report" → an editable compose card (to / cc / bcc / subject / body / attachments). If the ask is genuinely vague, she asks one short question instead of drafting filler.
  • "Reply to the top 3" → three drafts in one card, reviewed and sent individually.
  • "Make it shorter" / "add Isadora in CC" → Maya sees your currently edited draft, not her original, keeps every field you didn't touch, and marks the old card superseded.
  • Your edits autosave (1.5-second debounce) and survive a reload, a tab switch, or closing the browser - with a forced flush on tab-hide and unmount so an edit sitting mid-debounce is never lost.

Attachments

  • Attach from Google Drive (through Google's own Picker - you pick the file, Maya attaches it), from your Neural Core, or from your Image Library, all without leaving the chat.
  • Google Docs, Sheets and Slides are auto-converted to PDF/XLSX on the way out.
  • Drag your own files onto the card.
  • Up to 10 attachments per email. Files Maya fetches for you: 25 MB each. Files you upload on the card yourself: 10 MB each.

Sending, and what happens after

  • Send with one click. Double-tap it and it still sends once - every confirmed draft carries a stable idempotency key derived from its confirmation id, so a retry, a refresh or a resumed run cannot double-send.
  • Send later: use the Schedule button on the draft card, pick a time in your timezone (DST-safe, stored as a real UTC instant). See, reschedule or cancel what's queued.
  • Your signature is injected server-side on both Outlook paths - new sends and replies - in HTML and plain text, and it's frozen into the sent record so editing your signature later doesn't rewrite history. The rich signature supports 15 social networks with hosted icons; simple mode is plain text. "Don't sign my replies" is honoured on Outlook.
  • Sent mail is tagged in your real mailbox. Outlook gets a Sent by Unyo category on messages Maya sent, and a matching category on the original when she replied. Your mail app shows you exactly which messages came through Unyo.

Scheduling: use the card button

Ask Maya to draft, then click Schedule on the draft card. That's the path that works and the one we support. Asking her in chat to "schedule this for tomorrow at 10" is not a supported route today.

How to connect

  1. Open Integrations from the sidebar. (It's a top-level page - not inside Settings.)
  2. Find the Outlook card and click Connect.
  3. Microsoft asks which account to use - pick your Microsoft 365 or Outlook.com account. We always show the account picker, so you never silently connect the wrong one.
  4. Review the permissions Microsoft lists and approve.
  5. You land back on Integrations, and the Outlook card shows the address you connected as.

If an agent hits a wall because Outlook isn't connected yet, it pauses with a Waiting for connection notice instead of failing, and replays the exact pending action once you connect - you land back in the same conversation, nothing retyped.

What we do on the way there

The sign-in uses PKCE (S256) plus an OIDC nonce we validate as id_token.nonce === state.nonce, which stops an id_token issued for one session being replayed into another. The state parameter is AES-256-GCM encrypted - not merely signed - so the PKCE verifier inside it stays unreadable to anything that can see the redirect URL, and any tampering fails the authentication tag. It expires in 10 minutes.

Permissions - every scope, and why

Eight scopes. Three of them touch mail.

ScopeWhat it lets Maya do
Mail.ReadRead your inbox so she can show you what's new and triage it.
Mail.ReadWriteManage drafts, mark read/unread, move messages, and apply the Sent by Unyo category.
Mail.SendSend the drafts you confirm, and send replies.
User.ReadRead your basic profile so we can show which account you're connected as.
offline_accessRefresh the connection in the background so it doesn't drop every hour.
openid, profile, emailStandard sign-in - resolve and verify your account address.

Scopes we deliberately do not request

This list is the point. If it isn't above, we didn't ask for it and Graph won't give it to us.

Not requestedWhat that means
No Files / OneDrive scopeUnyo cannot see your OneDrive. (That's exactly why OneDrive is still marked Coming soon rather than quietly riding along on this grant.)
No Calendars scopeYour Outlook calendar is untouched. Calendar features are a separate Google Calendar connection you consent to on its own.
No Contacts scopeWe never read your Outlook address book.
No .Shared mail scopesYour mailbox only. No delegated or shared mailboxes.

One mailbox per provider

Unyo stores one Outlook connection per account. You can have Gmail and Outlook connected at the same time - but not two Outlook accounts.

Gmail and Outlook together: the mailbox lock

Connect both and you'll pick a default mailbox. Then a safety rule kicks in that we think is the best thing about this integration:

One conversation = one mailbox. Permanently.

The moment a conversation does its first email action, it locks to that provider - in the database, optimistically in the UI, and with a local backup so a reload can't break it. The mailbox picker shows a lock icon. If you ask Maya mid-thread to switch to the other account, she declines, calls no tool, and points you to a new conversation.

Why: a reply that goes out from the wrong address is not a small mistake. So the reply cannot go out from the wrong address.

Show me my unread emails

Reply to the one from Contoso - tell them the invoice is on the way and we'll confirm the delivery date Friday

Reply to the top 3 and keep each one under four lines

Write an email to jean@acme.com about the Q2 report, attach my Q2 invoice from Drive

Make that shorter, add isadora@acme.com in CC, and drop the last paragraph

What Unyo does with your mail

  • Your tokens are encrypted at rest. Access and refresh tokens are written and read only through database functions that encrypt and decrypt them - never stored or read as a plain column. As of 16 July 2026, all 17 populated OAuth token columns across the platform are AES-256 encrypted at rest, verified at the cipher-byte level, and the master key is unreachable by any client role.
  • Tokens are never logged, never put in a queue payload, and never returned inside an error message. They're resolved for the length of one outbound call to Microsoft and nothing else.
  • Every model Unyo runs is under a no-training guarantee. Your mail is never used to train AI.
  • Triage keeps most of your mail away from the AI entirely. A free local pass - automated-sender and newsletter patterns, a known-contact lookup, provider priority flags, bilingual urgency detection - resolves most messages with zero network calls. Only the genuinely ambiguous minority reaches a model, and only the sender name, the subject and a 300-character preview. And it's conservative by design: no key, an HTTP error or an exception all resolve to not important. Maya under-acts rather than spamming you.
  • Cached message bodies are deleted after 30 days by a live retention cron that runs at 03:00 UTC daily. Conversations go at 90 days, logs at 7.
  • Draft attachments that never get sent are swept nightly at 04:00 UTC - anything unsent after 24 hours is deleted from storage.
  • Every connection row is erasure-safe: row-level security scoped to your user id, cascading delete to your account. Deleting your Unyo account purges the connection and roughly 80 tables atomically.

Honest limits

We'd rather you read this here than discover it later.

  • Maya sees your latest messages, not your whole mailbox. The sync pulls the most recent ~10 messages per provider into the cache she reads. She is not a search engine over ten years of archive.
  • If a message isn't in that cache, Maya can't open it on Outlook. There's no fallback fetch on the Outlook path - she'll tell you it isn't there rather than invent it.
  • There is no auto-send. At all. Not a setting, not a per-workflow toggle. Automations that touch mail draft, never send - that's enforced in two places in the code, not left to the model.
  • Follow-up reminders aren't available. Don't count on "remind me in 3 days if he doesn't answer".
  • Scheduling is a card button, not a chat command. See the note above.

Disconnecting, and revoking at Microsoft

To disconnect: open Integrations from the sidebar, find the Outlook card, and click Disconnect. The stored connection and its encrypted tokens are removed from Unyo immediately, and Maya's mail tools stop existing for your account.

To fully withdraw the consent grant at Microsoft: disconnecting already kills our access at the source, but the grant record itself lives on Microsoft's side. Here's how to clear it, and why the two steps are separate.

Microsoft has no API to withdraw the consent grant itself

On disconnect we call Microsoft's revokeSignInSessions, which invalidates every refresh token Microsoft issued to Unyo for your account - so our access dies at the source, not just in our database. What Microsoft exposes no API for is removing the consent grant record itself; that has to be done on Microsoft's own consent page:

We spell this out rather than let you assume a Disconnect click cleared the consent grant at Microsoft - it revokes our access, but the grant record is yours to remove.

Deleting your Unyo account purges the Outlook connection along with everything else, and completes even if a provider is unreachable.

Can Maya send an email without me clicking Send?

No. Every compose and every reply renders as a card that you edit and confirm - and the function that actually performs the send is marked internal and is not callable by the model. There is no auto-send setting, and no per-workflow toggle that enables one. Automations that involve mail draft; they never send. This is enforced in the code in two separate places, not requested of the model in a prompt.

Can the other agents read my inbox?

No - and not as a matter of policy. The email toolset is only mounted for Maya's runs. When Ashley or Blake is running, the tools that touch mail are not present in their toolbox at all, so there is nothing to call. If you ask another agent to write an email, it hands the job to Maya, who opens her own conversation and takes it from there.

I have both Gmail and Outlook. How does Maya know which to use?

You pick a default in Integrations. Beyond that, each conversation locks to whichever mailbox it first used - stored in the database, shown as a lock icon on the mailbox picker, and backed up locally so a reload can't break it. If you ask Maya to switch mid-conversation, she'll decline and suggest you start a new one, which will lock to the other mailbox. A reply going out from the wrong address is exactly the failure we designed this to make impossible.

Can I connect two Outlook accounts?

No - one Outlook connection per Unyo account. You can connect Gmail and Outlook side by side, but not two of the same provider.

Does disconnecting Outlook revoke Unyo's access at Microsoft?

Yes - at the source. On disconnect we call Microsoft's revokeSignInSessions, which invalidates every refresh token Microsoft issued to Unyo for your account, and we remove the connection and encrypted tokens from our side too. What Microsoft exposes no API for is removing the consent grant record itself, so that last step has to be done on Microsoft's side - at account.live.com/consent/Manage for personal accounts, or myapplications.microsoft.com for work and school accounts. We'd rather say so than let you assume otherwise.

Is my email used to train AI models?

No. Every model Unyo runs is under a no-training, no-retention guarantee. On top of that, most of your mail never reaches a model at all - a free local pass handles the obvious cases, and only genuinely ambiguous messages are sent out, and then only as a sender name, a subject and a 300-character preview. Cached message bodies are deleted after 30 days by a live retention job.

Troubleshooting

"Reconnect from Integrations" when you ask for your inbox. Your Microsoft grant expired or was withdrawn. We detect this explicitly rather than showing you a misleading empty inbox - an expired connection is marked disconnected and Maya tells you to reconnect instead of reporting "0 emails". Go to Integrations → Outlook → Connect and sign in again.

Maya says a message isn't in the cache. She reads the most recent ~10 messages per mailbox. Older mail isn't there, and on the Outlook path there's no fallback fetch. Open the message in Outlook and paste what you need.

The sign-in window doesn't come back. Allow pop-ups for the sign-in window, then retry from Integrations.

You picked the wrong Microsoft account. Disconnect on the Outlook card and connect again - the account picker is always shown, so you can choose a different one.

Your reply went out unsigned. Check your signature's apply to replies setting. On Outlook it's honoured on both the send and the reply path.

An agent is stuck on "Waiting for connection". That's by design - it's waiting, not broken. Connect Outlook and the pending action replays itself in the same conversation.