All integrations

Microsoft Outlook

MICROSOFT 365 · EMAIL

Mail, folders, and rules under the signed-in user’s own mailbox.

Connect Microsoft Outlook with Fabriq Developer

Your user consents at Microsoft Outlook. The credential lands in a vault your agent cannot read, and the tool list it gets back is the intersection of that user’s grant and the agent’s own scopes.

provider “microsoft_outlook”
from af_sdk import AgenticFabriq

af = AgenticFabriq()                      # reads AF_APP_ID / AF_APP_SECRET

url = await af.initiate_connection(request, provider="microsoft_outlook")   # consent at Microsoft Outlook
return redirect(url)

async with await af.for_user(request) as session:
    tools = await session.get_tools()     # only what this user granted

Provider names are surfaces, not vendors, and the authoritative list is the capabilities endpoint rather than any page including this one — an unknown name returns 400 with the valid list. Fabriq Developer is free to start and needs no provider paperwork. Start free or read the quickstart.

Connecting Microsoft Outlook in practice

The Outlook service throttles per app ID and mailbox pair rather than per tenant: 10,000 requests per 10 minutes and, more painfully, only four concurrent requests. An agent working one executive’s mailbox is limited to roughly sixteen requests a second with a concurrency of four, however large the tenant is.

Scopes that draw scrutiny

  • Mail.ReadWrite As a delegated permission it needs no admin consent, but the application-permission variant does and reaches every mailbox in the tenant. The same name means two very different grants.
  • Mail.Send Same split: delegated requires no admin consent, application does. Application Mail.Send is the ability to send as anyone in the organization.
  • User.Read.All Admin consent required for both delegated and application, because it reads the full directory rather than the signed-in user.

Rate limits

  • 10,000 API requests in a 10-minute period per app ID and mailbox combination, on both the v1.0 and beta endpoints.
  • Four concurrent requests per app and mailbox.
  • 150 MB of upload (PATCH, POST, PUT) in a 5-minute period.
  • In an unordered JSON batch, Microsoft Graph sends the Outlook service at most four individual requests at a time, so batching does not buy concurrency.
  • Exchange message trace: 100 requests per 5 minutes per tenant.

Who has to approve

In Microsoft Entra every application permission requires tenant admin consent. The delegated forms of Mail.ReadWrite and Mail.Send do not, which is why a pilot on one user’s mailbox goes through and the tenant-wide rollout stops at a consent screen only an admin can clear.

Worth knowing

  • Exceeding the limit for one mailbox does not affect the app’s access to another, so the correct design is per-mailbox queues rather than one global limiter.
  • The concurrency limit of four is what most pipelines hit first; the 10,000-per-10-minutes figure is rarely the binding constraint.
  • Using dependsOn to order a batch makes Graph send the Outlook service one request at a time, so ordering costs you the little parallelism you had.
  • Microsoft states plainly that "The specific limits described in this article are subject to change", so these numbers are a design input, not a guarantee.

Checked against Microsoft Graph service-specific throttling limits (2026-09-29), Microsoft Graph permissions reference (2026-09-29)

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

microsoft_outlook_add_attachment_to_draftWRITE

Attach a file (base64-encoded) to a draft message. Requires Mail.ReadWrite.

Mail.ReadWrite
microsoft_outlook_create_draftWRITE

Create a draft email message. Requires Mail.ReadWrite.

Mail.ReadWrite
microsoft_outlook_create_mail_folderWRITE

Create a new mail folder. Requires Mail.ReadWrite.

Mail.ReadWrite
microsoft_outlook_delete_mail_folderWRITE

Delete a mail folder. Requires Mail.ReadWrite.

Mail.ReadWrite
microsoft_outlook_delete_messageWRITE

Delete an email message.

Mail.ReadWrite
microsoft_outlook_delete_shared_mailbox_messageWRITE

Delete a message from a shared mailbox. Requires Mail.ReadWrite.Shared.

Mail.ReadWrite.Shared
microsoft_outlook_flag_messageWRITE

Flag a message for follow-up. Requires Mail.ReadWrite.

Mail.ReadWrite
microsoft_outlook_forward_messageWRITE

Forward an email to new recipients. Requires Mail.Send and Mail.Read.

Mail.SendMail.Read
microsoft_outlook_get_attachmentREAD

Get a specific attachment from an email message. Requires Mail.Read.

Mail.Read
microsoft_outlook_get_automatic_repliesREAD

Get automatic reply (out of office) settings. Requires MailboxSettings.Read.

MailboxSettings.Read
microsoft_outlook_get_mailbox_settingsREAD

Get mailbox settings (timezone, auto-replies, working hours). Requires MailboxSettings.Read.

MailboxSettings.Read
microsoft_outlook_get_mailbox_timezoneREAD

Get the user's mailbox timezone. Requires MailboxSettings.Read.

MailboxSettings.Read
microsoft_outlook_get_messageREAD

Get a specific email message with full body.

Mail.Read
microsoft_outlook_get_shared_mailbox_messageREAD

Get a specific message from a shared mailbox. Requires Mail.Read.Shared.

Mail.Read.Shared
microsoft_outlook_list_attachmentsREAD

List attachments on an email message. Requires Mail.Read.

Mail.Read
microsoft_outlook_list_mail_foldersREAD

List the user's mail folders. Requires Mail.Read.

Mail.Read
microsoft_outlook_list_message_metadataREAD

List email message headers/metadata with minimal fields (no body). Requires Mail.ReadBasic.

Mail.ReadBasic
microsoft_outlook_list_messagesREAD

List email messages from the user's mailbox.

Mail.Read
microsoft_outlook_list_shared_mailbox_messagesREAD

List messages in a shared mailbox. Requires Mail.Read.Shared.

Mail.Read.Shared
microsoft_outlook_mark_message_readWRITE

Mark a message as read. Requires Mail.ReadWrite.

Mail.ReadWrite
microsoft_outlook_mark_message_unreadWRITE

Mark a message as unread. Requires Mail.ReadWrite.

Mail.ReadWrite
microsoft_outlook_move_messageWRITE

Move an email message to another mail folder.

Mail.ReadWrite
microsoft_outlook_move_shared_mailbox_messageWRITE

Move a message in a shared mailbox to another folder. Requires Mail.ReadWrite.Shared.

Mail.ReadWrite.Shared
microsoft_outlook_reply_from_shared_mailboxWRITE

Reply to a message from a shared mailbox. Requires Mail.Send.Shared and Mail.Read.Shared.

Mail.Send.SharedMail.Read.Shared
microsoft_outlook_reply_to_messageWRITE

Reply (or reply-all) to an email message.

Mail.ReadWrite
microsoft_outlook_send_draftWRITE

Send a previously created draft. Requires Mail.Send and Mail.ReadWrite.

Mail.SendMail.ReadWrite
microsoft_outlook_send_from_shared_mailboxWRITE

Send an email from a shared mailbox. Requires Mail.Send.Shared.

Mail.Send.Shared
microsoft_outlook_send_mailWRITE

Send an email via Microsoft Outlook.

Mail.Send
microsoft_outlook_unflag_messageWRITE

Remove the follow-up flag from a message. Requires Mail.ReadWrite.

Mail.ReadWrite
microsoft_outlook_update_automatic_repliesWRITE

Update automatic reply (out of office) settings. Requires MailboxSettings.ReadWrite.

MailboxSettings.ReadWrite
microsoft_outlook_update_draftWRITE

Update an existing draft email. Requires Mail.ReadWrite.

Mail.ReadWrite
microsoft_outlook_update_mail_folderWRITE

Rename a mail folder. Requires Mail.ReadWrite.

Mail.ReadWrite
microsoft_outlook_update_mailbox_settingsWRITE

Update mailbox settings. Requires MailboxSettings.ReadWrite.

MailboxSettings.ReadWrite

Put Microsoft Outlook behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.