primitive.dev vs. Outlook / Microsoft 365 (for AI agents)

“Why not just give my agent an Outlook mailbox?” Because it means driving a person’s licensed M365 seat through Microsoft Graph. Claims below are cited to Microsoft’s own docs, read 2026-07-08.

An Outlook mailbox lives inside Microsoft 365 and belongs to a licensed user. To reach it programmatically you go through Microsoft Graph: register an app, get OAuth tokens, and — for app-only access to a mailbox — obtain a tenant admin’s consent.[2][3] There is no call that gives an agentits own Outlook identity; you are attaching to a human’s seat in someone’s tenant. primitive.dev issues the agent its own address instead — no tenant, no admin, no seat.

1. A seat in someone’s tenant, or an address the agent owns

Graph gives an app access to a user’s messages and mail folders.[2] Every agent that needs a mailbox this way needs a licensed M365 seat and an admin who will grant the app rights in that tenant. primitive.dev provisions the agent a receivable *.primitive.email address (or a custom domain) in one call — managed MX, SPF, DKIM, DMARC, bounces — with the agent as the owner.

2. No app-registration and admin-consent dance

The Graph path means an app registration in Entra ID, delegated or application permissions, admin consent for app-only mailbox access, and tenant-wide throttling (Graph caps any app at 130,000 requests per 10 seconds across all tenants, on top of per-service limits).[1][3] primitive.dev is built for programmatic use directly: a prim_ key from one unauthenticated request, then send and long-poll for inbound.

3. Agent-native, not an enterprise mailbox API

primitive.dev ships a one-call primitive chat send-and-wait verb, hosted Functions that run your code on every inbound message, a hosted MCP serverwith an in-agent email-console App, and durable Memories. Graph gives you a broad enterprise API over a person’s Outlook — mail, calendar, contacts — but none of these agent-native primitives. Microsoft is building agent surfaces of its own (its Work IQ agent APIs, for instance),[4]but those give agents tooling and context inside a licensed M365 tenant — they don’t hand your agent its own address, run your code on inbound, or give it an in-agent email console. primitive.dev does — and the address comes with a runtime the agent owns: routing rules and filters on inbound, Functions per message, Memories for state, and agent templates — none of which require a tenant, a seat, or an admin.

At a glance

Dimensionprimitive.devOutlook via Graph
Whose mailboxThe agent’s ownA licensed user’s M365 seat[2]
Provision an address in codeYes — one callNo — seat + admin in a tenant
App registration + admin consentNoYes[3]
Hosted code on inboundYes — FunctionsNo — webhooks/change notifications to your service
Send + get the reply in one callYes — primitive chatBuild from Graph calls yourself

Beyond the address: the whole platform

A Microsoft 365 seat is a mailbox to borrow. primitive.dev is a runtime the agent owns:

  • Hosted Functions — your JavaScript runs on every inbound email, server-side, with nothing to host or keep online.
  • Programmable routing & filters — route bugs@ to a triage Function and support@ to a webhook, by rule, with sender allow/block lists.
  • Primitive Memories — durable JSON state an agent and its Functions keep across turns, retries, and restarts, without bringing a database.
  • Agent templates — install a ready-made agent from the template gallery (like a summarizer that replies with a summary of whatever you forward it) and run it as a hosted Function in one step.
  • In-agent MCP App — an email console published as a ChatGPT app that also renders in Claude and other MCP-compatible clients, plus a public docs MCP and Node, Python, and Go SDKs.
  • Payments over email — agents charge and pay each other in USDC, non-custodially, over x402 (early access), and buy usage pay-as-you-go over the Agentic Commerce Protocol.

Which to choose

Use Microsoft Graphwhen the task is to operate a specific person’s Outlook inside a Microsoft 365 tenant — with their seat and an admin’s consent. Use primitive.dev when the actor is an agent that needs its own email identity, with no tenant, seat, or admin in the loop. See the category guide or the developer resources.

Sources

Microsoft/Outlook claims reflect Microsoft's public developer docs as read on 2026-07-08; docs change — check the originals.

  1. Microsoft Graph — throttling limits (global: 130,000 requests / 10s per app across all tenants)
  2. Microsoft Graph — Outlook mail API overview (access a user’s messages, mail folders)
  3. Microsoft identity platform — app registration, permissions & admin consent for app-only access
  4. Microsoft — Work IQ APIs announcement (agent tooling, context & workspaces over M365)