Outlook Mail
API integration
Ship Email features without building the integration. Full Outlook Mail API access via Proxy, normalized data through Unified APIs, and 20+ MCP-ready tools for AI agents — all extensible to your exact use case.
Talk to usUse Cases
Why integrate with Outlook Mail
Common scenarios for SaaS companies building Outlook Mail integrations for their customers.
Sync email activity into your CRM or revenue platform
SaaS companies building CRM or sales intelligence tools can pull Outlook messages, threads, and metadata into their platform to give reps full visibility into prospect communications — without asking users to BCC or manually log emails.
Automate document ingestion from inbound emails
Expense management, AP automation, and contract lifecycle tools can monitor Outlook folders for incoming attachments like invoices, receipts, or signed documents, then extract and process them automatically using the attachments download endpoint.
Power AI-assisted email drafting and reply workflows
AI productivity and copilot products can read unread messages, generate contextual draft replies via LLMs, and save them directly into the user's Outlook drafts folder — letting the end user review and send with one click.
Convert inbound emails into support tickets or tasks
Helpdesk and project management tools can monitor shared Outlook mail folders, convert new messages into tickets or work items, and send replies back through the user's authenticated Outlook account to maintain thread continuity.
Build folder-based routing and workflow triggers
SaaS platforms can programmatically create custom Outlook folders and child folders, then poll those folders for new messages — enabling end users to trigger workflows simply by moving an email into a designated folder.
What You Can Build
Ship these features with Truto + Outlook Mail
Concrete product features your team can ship faster by leveraging Truto’s Outlook Mail integration instead of building from scratch.
Two-way email sync with thread logging
Mirror Outlook inbox and sent folder activity into your platform and send emails on behalf of the user using their authenticated Outlook account, keeping both systems in sync.
Automated attachment extraction pipeline
List and download attachments from specific messages or folders to feed into OCR, document processing, or file storage workflows without manual user intervention.
Smart draft composer with send-on-review
Create pre-written email drafts in the user's Outlook account using AI or templates, and let the user review and send them natively from Outlook or trigger send via the API.
Custom folder-based inbox routing
Programmatically create mail folders and child folders in a user's Outlook account, then poll those folders for new messages to trigger downstream automations like ticket creation or expense processing.
Org chart and identity resolution from the user directory
Fetch user profiles including job titles, phone numbers, and organizational data via the Unified User Directory API to map corporate identities and permissions inside your SaaS product.
Shared mailbox monitoring for team workflows
List messages across Outlook users and folders to power shared inbox experiences for support, sales, or operations teams — routing emails to the right queue inside your application.
SuperAI
Outlook Mail AI agent tools
Comprehensive AI agent toolset with fine-grained control. Integrates with MCP clients like Cursor and Claude, or frameworks like LangChain.
outlook_list_emails
List Outlook messages in the connected mailbox (or optional user_id). Use when browsing inbox mail or finding messages before get/reply/forward. Prefer folder messages list when scoped to a specific mail folder. Results are summaries; fetch a full record via this resource's get method. Returns one page; pass the response's next_cursor to fetch subsequent pages.
outlook_get_email
Read a single Outlook message including subject, body, and recipients. Use when you know the message id and need its content to summarize or reply. Obtain id from messages or folder messages.
outlook_create_draft
Create an Outlook draft in the Drafts folder (does not send). Use when composing mail to review later. To send immediately without a draft, use messages send-mail. To send this draft later, use messages send-draft.
outlook_update_email
Update an existing Outlook message or draft (subject, body, recipients, flag). Use when editing a draft or changing properties on a known message. Obtain id from messages.
outlook_delete_email
Delete an Outlook message by id. Use when the user asks to remove a message. This delete is permanent and cannot be undone; confirm the exact id and get explicit user confirmation before calling. Obtain id from messages.
outlook_send_draft
Send a previously created Outlook draft. Use when a draft is ready to go; the message is saved to Sent Items. Obtain message_id from messages create or messages list (Drafts). For a brand-new send without a draft, use messages send-mail.
outlook_send_email
Send a new Outlook email immediately (subject, body, toRecipients; optional cc/bcc). Use when the user is ready to send without saving a draft first. To save first, use messages create then messages send-draft.
outlook_reply_email
Reply to the sender of an Outlook message. Use when answering one person (not everyone on the thread). Pass message_id and either comment or message.body — not both. For all recipients, use messages reply-all.
outlook_reply_all_email
Reply to all recipients of an Outlook message. Use when the response should go to everyone on the original mail. Pass message_id and an optional comment. For sender-only, use messages reply.
outlook_forward_email
Forward an Outlook message from the connected mailbox to one or more recipients. Use when sharing a message onward. Pass message_id, toRecipients (top-level or on message — not both), and an optional comment. When acting as a different mailbox user, use messages forward-as-user instead.
outlook_forward_email_as_user
Forward an Outlook message from an explicitly selected mailbox (user_id). Use when the connected account can access another user's mailbox and must forward as that user. Pass user_id, message_id, and toRecipients. For the connected user's own mailbox, prefer messages forward.
outlook_move_email
Move an Outlook message to another mail folder. Use when filing mail into a folder (archive, project folder, etc.). Pass message_id and destinationId (folder id or well-known name such as inbox). Obtain folder ids from mail folders.
outlook_list_mail_folders
List top-level Outlook mail folders (Inbox, Drafts, Sent, and user folders). Use when resolving a folder name to an id before listing folder messages or moving mail. For nested folders under a parent, use child folders. Returns one page; pass the response's next_cursor to fetch subsequent pages.
outlook_get_mail_folder
Read one Outlook mail folder: display name and counts. Use when inspecting a known folder id. Obtain id from mail folders.
outlook_create_mail_folder
Create a top-level Outlook mail folder. Use when the user wants a new filing folder. For a folder under an existing parent, use child folders create. Returns the created folder including its id.
outlook_update_mail_folder
Rename or update an Outlook mail folder. Use when changing a folder's display name. Obtain id from mail folders.
outlook_delete_mail_folder
Delete an Outlook mail folder by id. Use when removing a user-created folder. This delete is permanent and cannot be undone; confirm the exact id and get explicit user confirmation before calling. Obtain id from mail folders.
outlook_list_child_folders
List child folders under a parent Outlook mail folder. Use when navigating a nested folder tree. Pass mail_folder_id of the parent from mail folders. For top-level folders, use mail folders instead. Returns one page; pass the response's next_cursor to fetch subsequent pages.
outlook_create_child_folder
Create a child folder under an existing Outlook mail folder. Use when nesting a new folder beneath a parent. For a top-level folder, use mail folders create instead. Returns the created folder including its id.
outlook_get_child_folder
Read one child Outlook mail folder under a parent. Use when inspecting a nested folder by id. Obtain id from child folders.
outlook_delete_child_folder
Delete a child Outlook mail folder by id. Use when removing a nested folder. This delete is permanent and cannot be undone; confirm the exact id and get explicit user confirmation before calling. Obtain id from child folders.
outlook_update_child_folder
Update a child Outlook mail folder (e.g. rename). Use when changing a nested folder. Obtain id from child folders.
outlook_list_folder_emails
List messages inside a specific Outlook mail folder. Use when reading Inbox, Sent, Drafts, or a custom folder by id. Pass mail_folder_id from mail folders (well-known names like inbox may also work). For mailbox-wide search across folders, use messages list instead. Results are summaries; fetch a full record via messages get. Returns one page; pass the response's next_cursor to fetch subsequent pages.
Why Truto
Why use Truto’s MCP server for Outlook Mail
Other MCP servers give you a static tool list for one app. Truto gives you a managed, multi-tenant MCP infrastructure across 650+ integrations.
Auto-generated, always up to date
Tools are dynamically generated from curated documentation — not hand-coded. As integrations evolve, tools stay current without manual maintenance.
Fine-grained access control
Scope each MCP server to read-only, write-only, specific methods, or tagged tool groups. Expose only what your AI agent needs — nothing more.
Multi-tenant by design
Each MCP server is scoped to a single connected account with its own credentials. The URL itself is the auth token — no shared secrets, no credential leaking across tenants.
Works with every MCP client
Standard JSON-RPC 2.0 protocol. Paste the URL into Claude, ChatGPT, Cursor, or any MCP-compatible agent framework — tools are discovered automatically.
Built-in auth, rate limits, and error handling
Tool calls execute through Truto’s proxy layer with automatic OAuth refresh, rate-limit handling, and normalized error responses. No raw API plumbing in your agent.
Expiring and auditable servers
Create time-limited MCP servers for contractors or automated workflows. Optional dual-auth requires both the URL and a Truto API token for high-security environments.
Unified APIs
Unified APIs for Outlook Mail
Skip writing code for every integration. Use Truto’s category-specific Unified APIs out of the box or customize the mappings with AI.
Unified Emails API
Attachments
Attachments are the files associated with an email.
Emails
An email is a digital message sent and received electronically over the Internet. It typically contains a subject, sender, recipients, body content, and sometimes attachments.
Folders
The folder is a container used to organize and manage email messages.
Users
Users represent the people using the underlying emails system. They are usually called agents, team members, admins, etc.
Unified Search API
Search
Search endpoint for all the apps.
How It Works
From zero to integrated
Go live with Outlook Mail in under an hour. No boilerplate, no maintenance burden.
Link your customer’s Outlook Mail account
Use Truto’s frontend SDK to connect your customer’s Outlook Mail account. We handle all OAuth and API key flows — you don’t need to create the OAuth app.
We handle authentication
Don’t spend time refreshing access tokens or figuring out secure storage. We handle it and inject credentials into every API request.
Call our API, we call Outlook Mail
Truto’s Proxy API is a 1-to-1 mapping of the Outlook Mail API. You call us, we call Outlook Mail, and pass the response back in the same cycle.
Unified response format
Every response follows a single format across all integrations. We translate Outlook Mail’s pagination into unified cursor-based pagination. Data is always in the result attribute.
FAQs
Common questions about Outlook Mail on Truto
Authentication, rate limits, data freshness, and everything else you need to know before you integrate.
What authentication methods does Truto support for Outlook Mail?
Truto handles OAuth 2.0 authentication with Microsoft, which is the standard auth flow for Outlook Mail via the Microsoft Graph API. Your end users authorize access through a consent screen, and Truto manages token refresh and storage automatically.
Can I send emails from a user's Outlook account, or only read them?
Both. You can send emails directly using the outlook_messages_send_mail endpoint, or create a draft with create_a_outlook_message and then send it with outlook_messages_send_draft. Emails are sent from the authenticated user's actual address.
How does folder-level message polling work?
You can list all mail folders and child folders for a user, then use list_all_outlook_folder_messages to fetch messages from a specific folder. You can also create custom folders and child folders programmatically to set up targeted routing workflows.
Can I download email attachments directly through Truto?
Yes. Use list_all_outlook_attachments to enumerate attachments on a message, then use outlook_attachments_download to retrieve the file content. You can also fetch metadata for a specific attachment using get_single_outlook_attachment_by_id.
What Unified APIs map to Outlook Mail?
Outlook Mail is available through the Unified Emails API (covering Attachments, Emails, Folders, and Users), the Unified User Directory API (covering Me and Users), and the Unified Search API. This means you can swap or add other email providers without changing your integration code.
Does Truto handle pagination and rate limiting for the Microsoft Graph API?
Yes. Truto abstracts away Microsoft Graph API pagination and handles rate limit retries, so you don't need to implement backoff logic or cursor management in your application code.
From the Blog
Outlook Mail integration guides
Deep dives, architecture guides, and practical tutorials for building Outlook Mail integrations.
Outlook Mail
Get Outlook Mail integrated into your app
Our team understands what it takes to make a Outlook Mail integration successful. A short, crisp 30 minute call with folks who understand the problem.