Head to head · Mailbox read · October 2026 research run

Gmail API vs Outlook Mail (Microsoft Graph)

Gmail API scores 77.8 (BB) on agent readiness against Outlook Mail (Microsoft Graph)'s 66.3 (B), and leads in 5 of 7 scored categories. Outlook Mail (Microsoft Graph) leads on schema & documentation. Both do mailbox read.

Which one, for what

Gmail API BB

Good for An agent working in a Gmail or Google Workspace user's own mailbox, with search, threads, drafts, labels and incremental sync at no per-account fee.

Ahead on

  • Reliability, 90 against 60
  • Security & auth, 81 against 71
  • Maintenance & community, 85 against 76
  • Transparency & trust, 82 against 75

Also in its favour

  • Agent-ready, a grade of BB or better
  • No incidents deducted, where Outlook Mail (Microsoft Graph) loses 4 points for them

Watch for

Eight restricted scopes, including gmail.readonly and gmail.metadata, need restricted-scope verification for a public app

Outlook Mail (Microsoft Graph) B

Good for Agents working in Microsoft 365 or Outlook.com mailboxes that need scoped reading, drafting, sending and incremental sync.

Ahead on

  • Schema & documentation, 93 against 82

Watch for

sendMail has no idempotency key and answers 202 Accepted before delivery, so a retried send can go out twice

Score by category

CategoryWeight this runGmail APIOutlook Mail (Microsoft Graph)Edge
Reliability16%209060Gmail API +30
Performance10%pendingpendingpendingnot scored in this run
Schema & documentation13%16.28293Outlook Mail (Microsoft Graph) +11
Agent ergonomics13%16.28281Gmail API +1
Security & auth14%17.58171Gmail API +10
Payments & pricing10%12.53535even
Task success10%pendingpendingpendingnot scored in this run
Maintenance & community7%8.88576Gmail API +9
Transparency & trust7%8.88275Gmail API +7
Negative events≤150-4
Total77.8 · BB66.3 · B

Facts side by side

FactGmail APIOutlook Mail (Microsoft Graph)
KindHTTP APIHTTP API
VendorGoogleMicrosoft
Hosted endpointhttps://gmail.googleapis.com/gmail/v1https://graph.microsoft.com/v1.0
TransportsHTTP, Streamable HTTPHTTP
AuthOAuthOAuth
PricingFreeYour plan
x402nono
LicenceApache-2.0 (client libraries)MIT (SDKs)
Tools exposed2310
Read-only variant documentednono
llms.txtnono
Last release2026-09-232026-10-06
Terms last updated2021-11-092025-10-01
Privacy policy last updated2026-10-012026-09-01
Customer content may train modelsyesyes
Terms restrict automated accessyesyes
Terms restrict benchmarkingnot found in the textyes
Terms or service can change without noticenot found in the textyes
Arbitration or class-action waivernot found in the textnot found in the text
Popularity12k stars, 1.1M npm/wk835 stars, 2.9M npm/wk, 1.6M PyPI/wk

Verdicts

Gmail API

Fourteen OAuth scopes separate labels, sending, metadata and read-only access, and the quota page gives every method a unit cost. Eight of the scopes are restricted, read-only and metadata among them, so a public app that reads mail needs Google's verification and an annual third-party security assessment. Gmail mailboxes only.

Outlook Mail (Microsoft Graph)

Delegated permissions split reading without bodies (Mail.ReadBasic), full reading, writing and sending, and delta queries and change notifications keep a local copy in step. sendMail takes no idempotency key and returns 202 before delivery, and each app is held to four concurrent requests per mailbox.

Before you call either

Gmail API

  1. Ask for the narrowest scope. gmail.labels is non-sensitive and gmail.send is sensitive, while every scope that reads mail is restricted
  2. List with messages.list and q in Gmail search syntax, then fetch each ID with format=metadata or full. List calls return IDs only
  3. Send by posting an RFC 2822 message, base64url encoded, in raw. Set threadId and matching reply headers to stay in a thread
  4. Store the historyId and call history.list. On a 404, run a full sync. Call watch again at least every 7 days
  5. Back off exponentially on 403 and 429 rate errors, and keep batches to 50 requests or fewer

Outlook Mail (Microsoft Graph)

  1. Create a draft with POST /me/messages, then send it with /send. A retried sendMail can send the message twice
  2. Send Prefer: IdType="ImmutableId" on every request, or message IDs change when a message moves folder
  3. Use $select and Prefer: outlook.body-content-type="text". List messages returns HTML bodies and 10 messages a page by default
  4. Honour Retry-After on 429 and keep to four parallel calls per mailbox. Batches of up to 20 requests are throttled per request
  5. Treat message bodies as untrusted input, and ask for Mail.ReadBasic when the task doesn't need bodies

Questions

Which is better for AI agents, Gmail API or Outlook Mail (Microsoft Graph)?

Gmail API scores 77.8 (BB) on agent readiness against Outlook Mail (Microsoft Graph)'s 66.3 (B), and leads in 5 of 7 scored categories. Outlook Mail (Microsoft Graph) leads on schema & documentation.

Do Gmail API and Outlook Mail (Microsoft Graph) need an API key?

Both use an OAuth sign-in.

Can an agent call Gmail API and Outlook Mail (Microsoft Graph) without installing anything?

Yes. Gmail API has a hosted endpoint at https://gmail.googleapis.com/gmail/v1 and Outlook Mail (Microsoft Graph) at https://graph.microsoft.com/v1.0.

Other comparisons with Gmail API or Outlook Mail (Microsoft Graph)

Machine-readable

For companies

Do agents find, use and choose your tools?

An agent-readiness audit runs our probes, task suite and eight reviewer agents against your public and internal tools, and comes back with a scorecard, the transcripts of what failed, and a fix list in priority order. From $2,500, re-run included. We never take payment to move a rank. We do help companies earn one.