How to Connect Multiple Outlook Accounts to Claude Code
One Claude Code session can search and act across every Outlook mailbox you own once Carly is holding them, including mailboxes in different Microsoft tenants. Authorize each Microsoft identity in Carly, register one MCP server, and the terminal addresses whichever mailbox you name. The same Carly account holds your Gmail inboxes and every calendar on both sides, so you set this up once for all of it.
Claude Code reaches mail through the Model Context Protocol. That makes the mailbox count a property of the server you register, not a Claude Code setting.
What one session can do afterwards
- Search two employers’ mailboxes in the same question.
- Compare threads sitting in different Microsoft tenants.
- Build a morning briefing grouped by account.
- Draft or send from the exact address you name.
- Move, categorize, or flag in the correct mailbox.
- Read several calendars while writing to only one.
Nothing is merged and nothing is forwarded. Each mailbox keeps its own credentials, and Carly keeps every account individually addressable.
Why the tenant boundary is the real problem
A single Outlook MCP server usually means registering your own Microsoft Entra application and consenting to it. Consent is granted per tenant. A consultant with a personal Outlook.com address and mailboxes at two client organizations is not managing one integration with three logins; they are managing three separate consent chains, each owned by a different administrator, each revocable without warning.
Carly holds each Microsoft identity as its own authorized connection and exposes all of them through one server that addresses any mailbox by email address. A fourth tenant later is a Carly setting rather than a new application registration.
The built-in connectors hold one account per provider. ChatGPT, Claude, and Gemini each authorize a single Google identity, and connecting a second one replaces the first rather than adding to it. Switching inboxes means disconnecting and reauthorizing, which is why "personal and work" is still two sessions rather than one.
1. Give each Outlook account a role
Using fictional addresses:
| Address | Role |
|---|---|
fictional.tomas.beckett@outlook.com | Personal |
fictional.tomas.beckett@pepsi.com | Main Company |
fictional.tomas.beckett@cisco.com | Client |
Use the role in ordinary queries and the full address before anything that writes.
2. Connect every Outlook account to Carly
- Sign in at carlyassistant.com.
- Open carlyassistant.com/integrations.
- Find Outlook and click Connect.
- Sign in with the first Microsoft identity and approve the permissions.
- Confirm the connected address in Carly.
Repeat for every other mailbox. Microsoft will often reuse the session you are already signed into, so use a private window or sign out between authorizations and check the full address each time.
Work accounts governed by an administrator may need approval before the connection completes. Each tenant decides separately, so approval at one employer says nothing about the other.
3. Register Carly as an MCP server
Carly is a remote HTTP server:
claude mcp add --transport http --scope user carly https://carlyassistant.com/mcp/
--scope user stores the entry in ~/.claude.json and loads it in every project, which is what you want for mail. Without the flag it lands in local scope and only appears in the directory where you added it. --scope project writes a committed .mcp.json instead, which is the right choice when a team shares the server.
Authenticate:
claude mcp login carly
Sign in to the Carly workspace holding the mailboxes. The /mcp panel inside a session runs the same flow if you prefer to stay in Claude Code.
Check it before moving on:
claude mcp list
✔ Connected means you are ready. ! Needs authentication means the browser flow did not complete.
4. Test every mailbox read-only first
One account per prompt to start:
In
fictional.tomas.beckett@pepsi.com, list the sender and subject of the five newest unread messages. Do not change anything.
In
fictional.tomas.beckett@cisco.com, find the newest thread containing “statement of work.” State the source account and do not draft.
Then across accounts:
Search both example work mailboxes for “renewal” in the last 45 days. Include the full source address in every row.
If the first mail request feels slow, that is Claude Code fetching Carly’s tool definitions on demand rather than loading them all at session start.
5. Reuse this routing prompt
Treat
fictional.tomas.beckett@outlook.comas Personal,fictional.tomas.beckett@pepsi.comas Main Company, andfictional.tomas.beckett@cisco.comas Client. Always state the target address before changing data. Ask before sends, moves, deletes, or category changes.
Then name the target in each action:
Draft the reply from
fictional.tomas.beckett@pepsi.com. Do not send yet.
File that thread under Contracts in
fictional.tomas.beckett@cisco.comonly.
Send the approved reply from the mailbox that received the original message.
Two employers in one terminal is exactly the situation where a misrouted send is expensive. Keep approvals on until the routing has proved itself.
The part that outlives the session
Terminal sessions end. The mail does not. Triage at 8am, the follow-up on the quote nobody answered, the weekly summary for the client who never reads the thread, the receipt that has to reach the bookkeeper: all of it recurs, and none of it should depend on a window being open.
That work belongs in a Carly workflow or a Carly agent. Carly watches each connected mailbox as its own trigger source, so a rule can fire on mail arriving at the client address and stay silent on the personal one, and it keeps running while your laptop is shut. Claude Code stays what it is good at: a place to ask sharp questions about work that has already happened.
One detail matters if you want Carly inside a Claude Code routine. Routines run in the cloud against the connectors on your claude.ai account, and a server added locally with claude mcp add lives on your machine instead. Add Carly at claude.ai/customize/connectors too, or commit it in .mcp.json so it travels with the cloned repository. Routines themselves start from a schedule, a GitHub pull request or release, or an HTTP endpoint you build, and each one requires a repository, so none of them notices a client emailing you.
Your own Entra app versus Carly in Claude Code
| Need | Self-registered Outlook MCP server | Carly MCP server |
|---|---|---|
| Reach one mailbox | Yes | Yes |
| Reach mailboxes in two tenants | Consent per tenant, per app | One server, all accounts |
| Address a specific mailbox in a prompt | No shared convention | Yes, by email address |
| Maintain an app registration and secrets | Yes | No |
| Add a fourth tenant later | New registration and consent | No config change |
| Keep the work running with the terminal closed | No | Yes |
Carly gives Claude Code one account-aware mail toolset instead of a stack of tenant-specific applications. Carly offers free Zapier-style workflows; AI agents start at $35/month.
Quick fixes when a mailbox does not appear
| Problem | Fix |
|---|---|
Server shows ! Needs authentication | Run claude mcp login carly and finish the browser flow |
| Server missing in another project | Re-add with --scope user |
claude -p reports the tools are unavailable | Sign in interactively once with /mcp, then rerun the script |
| Microsoft reconnected the same mailbox twice | Sign out or use a private window, then reconnect |
| A tenant blocks authorization | Ask that tenant’s administrator to approve Carly |
| Claude queries the wrong mailbox | Use the full address and require source attribution |
Frequently asked questions
Does Claude Code have a built-in Outlook connector?
Claude Code reaches outside services through MCP servers rather than a bundled mail integration, so Outlook access depends entirely on the server you register. Point it at Carly at https://carlyassistant.com/mcp/ and every mailbox Carly holds is reachable from one session.
Can this reach mailboxes in two different Microsoft tenants?
Yes. Each Microsoft identity is authorized separately inside Carly, so tenants stay independent and Claude Code still sees one server. Each tenant’s administrator approves its own mailbox.
What about a shared or delegated mailbox?
Connect the account that has been granted access to it, then name the shared address in your prompt. Whether the delegation itself is permitted is a decision your Microsoft administrator makes, not a Claude Code setting.
Should I use Claude Code for mailbox work?
For scripted or one-off mailbox work from a terminal, yes. Recurring triage, follow-up, and reporting belong in a Carly workflow that runs without a session open.
Related: Multiple Gmail accounts in Claude Code · Multiple Outlook accounts in Codex · Best AI assistants for multiple Microsoft accounts · Claude Code pricing · Outlook MCP · What is Claude Code
Ready to automate your busywork?
Carly schedules, researches, and briefs you—so you can focus on what matters.
See what people say
"Before Carly, I relied on a Calendly link, but the whole process felt impersonal and not very professional. Carly changed that by handling all the back-and-forth, so I'm no longer stuck in endless email threads trying to line up schedules.
Now Carly reaches out to candidates, shares my real-time availability, lets them pick a slot, then sends a Zoom link and drops it straight into my calendar. She sends reminders to both of us before each call, which has significantly reduced no-shows and last-minute confusion.
On top of scheduling, Carly acts like a full executive assistant, sending me my schedule the night before so I can prepare for each call. It reminds me of the old x.ai assistant, but Carly is noticeably smarter, faster, and better suited to my healthcare recruitment business."


