A developer terminal reaching several Outlook mailboxes across two Microsoft tenants

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:

AddressRole
fictional.tomas.beckett@outlook.comPersonal
fictional.tomas.beckett@pepsi.comMain Company
fictional.tomas.beckett@cisco.comClient

Use the role in ordinary queries and the full address before anything that writes.

2. Connect every Outlook account to Carly

  1. Sign in at carlyassistant.com.
  2. Open carlyassistant.com/integrations.
  3. Find Outlook and click Connect.
  4. Sign in with the first Microsoft identity and approve the permissions.
  5. 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.com as Personal, fictional.tomas.beckett@pepsi.com as Main Company, and fictional.tomas.beckett@cisco.com as 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.com only.

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

NeedSelf-registered Outlook MCP serverCarly MCP server
Reach one mailboxYesYes
Reach mailboxes in two tenantsConsent per tenant, per appOne server, all accounts
Address a specific mailbox in a promptNo shared conventionYes, by email address
Maintain an app registration and secretsYesNo
Add a fourth tenant laterNew registration and consentNo config change
Keep the work running with the terminal closedNoYes

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

ProblemFix
Server shows ! Needs authenticationRun claude mcp login carly and finish the browser flow
Server missing in another projectRe-add with --scope user
claude -p reports the tools are unavailableSign in interactively once with /mcp, then rerun the script
Microsoft reconnected the same mailbox twiceSign out or use a private window, then reconnect
A tenant blocks authorizationAsk that tenant’s administrator to approve Carly
Claude queries the wrong mailboxUse 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."

Gus Ibrahim, Founder & Director, IHR