{
  "data": {
    "a": {
      "slug": "gmail-api",
      "name": "Gmail API",
      "vendor": "Google",
      "vendorUrl": "https://developers.google.com/workspace/gmail",
      "kind": "http-api",
      "category": "mailbox-access",
      "summary": "Google's REST API for Gmail mailboxes. It searches and reads messages and threads, writes drafts, sends mail, manages labels and settings, and reports mailbox changes through history records and Cloud Pub/Sub push notifications. Access is by OAuth 2.0.",
      "url": "https://www.anchorterminal.com/tools/gmail-api",
      "markdownUrl": "https://www.anchorterminal.com/tools/gmail-api.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/gmail-api.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/gmail-api.json",
      "repo": "https://github.com/googleapis/google-api-nodejs-client",
      "license": "Apache-2.0 (client libraries)",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://gmail.googleapis.com/gmail/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "@googleapis/gmail"
        },
        {
          "registry": "pypi",
          "name": "google-api-python-client"
        }
      ],
      "auth": "oauth",
      "authNotes": "OAuth 2.0 access token as a Bearer header, from a Google Cloud project with the Gmail API enabled and an OAuth consent screen. Self-serve for personal use, testing and apps internal to one Workspace organisation. A public app that requests any of the eight restricted scopes, which include `gmail.readonly` and `gmail.metadata`, needs Google's restricted-scope verification, and a CASA security assessment every 12 months if it reaches the data from or through a server. Workspace domains can use a service account with domain-wide delegation. The MCP server needs your own OAuth client ID and secret, the `gmail.readonly` and `gmail.compose` scopes, and Developer Preview Programme membership.",
      "pricing": "free",
      "pricingNotes": "All standard use is at no extra cost, and a free Google account and Cloud project are enough to start, with no card or contract. Limits are 1,200,000 quota units a minute per project, 6,000 a minute per user and a daily threshold of 80,000,000 units per project. Google says use above the daily threshold is planned to be charged to the Cloud billing account later in 2026, with details and at least 90 days' notice still to come (https://developers.google.com/workspace/gmail/api/reference/quota). A security assessment for restricted scopes is paid to a third-party assessor, at a cost Google's pages don't state.",
      "priceSummary": "Free",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the Gmail API guides, the quota page or the discovery document (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 23,
      "popularity": {
        "githubStars": 12262,
        "npmWeekly": 1091106,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://developers.google.com/workspace/gmail/api/guides",
      "capabilities": [
        "mailbox.read",
        "mailbox.search",
        "mailbox.send",
        "mailbox.drafts",
        "mailbox.sync"
      ],
      "tags": [
        "hosted",
        "official",
        "free-tier",
        "mcp",
        "webhooks",
        "oauth",
        "typescript",
        "python",
        "enterprise"
      ],
      "lastRelease": "2026-09-23",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 77.8,
        "grade": "BB",
        "agentReady": true,
        "rank": 17,
        "ranked": true,
        "rankOf": 629,
        "categoryRank": 2,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 82,
          "maintenance": 85,
          "payments": 35,
          "reliability": 90,
          "schema": 82,
          "security": 81,
          "transparency": 82
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "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.",
        "bestFor": "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.",
        "strengths": [
          "14 OAuth scopes, with `gmail.labels` non-sensitive, `gmail.send` sensitive and permanent delete reserved for the full `https://mail.google.com/` scope",
          "Quota published per method, 5 units for `messages.list`, 20 for `messages.get` and 100 for `messages.send`, against 6,000 units a minute per user",
          "`history.list` and Pub/Sub push notifications give incremental sync from a stored `historyId`",
          "`format=metadata`, `metadataHeaders`, `maxResults` and `fields` keep responses small",
          "No charge for standard use, up to 80,000,000 quota units a day per project"
        ],
        "weaknesses": [
          "Eight restricted scopes, including `gmail.readonly` and `gmail.metadata`, need restricted-scope verification for a public app",
          "An app that stores or transmits restricted data on servers needs a security assessment by a Google-approved assessor every 12 months",
          "No idempotency key on `messages.send`, and the error guide says a 200 response doesn't confirm the mail was sent",
          "MCP server limited to the Developer Preview Programme, with no send tool",
          "Price for use above the daily quota not yet published"
        ],
        "agentNotes": [
          "Ask for the narrowest scope. `gmail.labels` is non-sensitive and `gmail.send` is sensitive, while every scope that reads mail is restricted",
          "List with `messages.list` and `q` in Gmail search syntax, then fetch each ID with `format=metadata` or `full`. List calls return IDs only",
          "Send by posting an RFC 2822 message, base64url encoded, in `raw`. Set `threadId` and matching reply headers to stay in a thread",
          "Store the `historyId` and call `history.list`. On a 404, run a full sync. Call `watch` again at least every 7 days",
          "Back off exponentially on 403 and 429 rate errors, and keep batches to 50 requests or fewer"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 77.8
          }
        ],
        "editorialScores": {
          "ergonomics": 82,
          "maintenance": 85,
          "payments": 35,
          "reliability": 90,
          "schema": 82,
          "security": 81,
          "transparency": 69
        },
        "provenanceScore": 94
      },
      "connect": {
        "http": "curl \"https://gmail.googleapis.com/gmail/v1/users/me/messages?q=is:unread\u0026maxResults=5\" \\\n  -H \"Authorization: Bearer $GOOGLE_ACCESS_TOKEN\"",
        "config": {
          "mcpServers": {
            "gmail": {
              "oauth": {
                "clientId": "OAUTH_CLIENT_ID",
                "clientSecret": "OAUTH_CLIENT_SECRET"
              },
              "serverUrl": "https://gmailmcp.googleapis.com/mcp/v1"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/mailbox.read",
        "tool": "https://letme.dev/gmail-api"
      },
      "sameCompany": [
        "gemini-api",
        "gemini-embedding",
        "vertex-ai-tuning",
        "google-model-armor",
        "google-imagen",
        "google-veo",
        "google-lyria",
        "google-speech-to-text",
        "google-adk",
        "google-secret-manager",
        "google-weather-api",
        "chrome-devtools-mcp",
        "google-maps-platform",
        "google-cloud-translation",
        "google-calendar-api",
        "google-drive-api",
        "gemini-cli",
        "google-ads-api",
        "google-sheets-api"
      ],
      "area": "communication",
      "provenance": {
        "legalEntity": "Google LLC",
        "domain": "google.com",
        "domainRegistered": "1997-09-15",
        "domainNote": "The endpoint is on gmail.googleapis.com, Google's API domain. google.com was registered in 1997.",
        "endpointOnVendorDomain": true,
        "terms": "https://developers.google.com/terms",
        "privacy": "https://policies.google.com/privacy",
        "statusPage": "https://www.google.com/appsstatus/dashboard/",
        "changelog": "https://developers.google.com/workspace/gmail/release-notes",
        "securityTxt": "valid",
        "checked": "2026-10-08",
        "notes": [
          "The Google APIs Terms of Service (last modified 9 November 2021) name Google LLC, 1600 Amphitheatre Parkway, Mountain View.",
          "RDAP for google.com gives a registration date of 1997-09-15.",
          "www.google.com/.well-known/security.txt expires on 1 April 2030 and lists a contact, an encryption key and the vulnerability reward policy.",
          "The quota and scopes pages were last updated on 10 September 2026, the MCP setup guide on 18 September and the MCP reference on 21 July.",
          "Google publishes a discovery document for the API, not an OpenAPI spec.",
          "The Workspace status dashboard tracks the Gmail product, not the API on its own."
        ],
        "score": 94
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/gmail-api.json",
      "live": {
        "slug": "gmail-api",
        "probe": {
          "target": "https://gmail.googleapis.com/gmail/v1",
          "method": "get",
          "lastAt": "2026-10-08T18:20:30.720953163Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 35,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 42,
          "p95ms24h": 121,
          "samples24h": 33,
          "samples30d": 33,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 33,
              "ok": 33
            }
          ]
        },
        "vendorStatus": {
          "page": "https://www.google.com/appsstatus/dashboard",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-08T17:50:42.964370842Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "googleapis/google-api-nodejs-client",
            "version": "agentidentity-v3.2.0",
            "released": "2026-10-07",
            "seenAt": "2026-10-08T16:13:22.81620133Z"
          },
          {
            "registry": "npm",
            "name": "@googleapis/gmail",
            "version": "22.0.1",
            "seenAt": "2026-10-08T16:13:19.417774829Z"
          },
          {
            "registry": "pypi",
            "name": "google-api-python-client",
            "version": "2.201.0",
            "released": "2026-09-30",
            "seenAt": "2026-10-08T16:13:22.705637846Z"
          }
        ],
        "githubStars": 12263,
        "npmWeekly": 1091106,
        "securityTxt": {
          "url": "https://google.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2030-04-01T00:00:00z",
          "checkedAt": "2026-10-08T15:38:39.75078566Z"
        },
        "pages": [
          {
            "url": "https://developers.google.com/workspace/gmail/release-notes",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:17:53.385163156Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "4656378123eb"
          },
          {
            "url": "https://developers.google.com/terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-08T18:17:49.55137795Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "2eb11136bf24"
          }
        ],
        "updatedAt": "2026-10-08T18:20:30.720953163Z"
      }
    },
    "answer": "Gmail API scores 77.8 (BB) on agent readiness against Unipile's 58.4 (C), and leads in 6 of 7 scored categories. Unipile leads on payments \u0026 pricing.",
    "b": {
      "slug": "unipile",
      "name": "Unipile",
      "vendor": "UNIPILE SAS",
      "vendorUrl": "https://www.unipile.com",
      "kind": "http-api",
      "category": "mailbox-access",
      "summary": "Unipile is a hosted API from Unipile SAS in France that connects to accounts people already have. It reads, searches, sends and files mail in Gmail, Outlook and IMAP mailboxes, and also covers calendars, LinkedIn, WhatsApp, Instagram and Telegram.",
      "url": "https://www.anchorterminal.com/tools/unipile",
      "markdownUrl": "https://www.anchorterminal.com/tools/unipile.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/unipile.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/unipile.json",
      "repo": "https://github.com/unipile/unipile-node-sdk",
      "license": "Proprietary service under Unipile's terms of use. The v1 Node SDK repository and the unipile-mcp repository carry an MIT licence file",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://developer.unipile.com/mcp?branch=v1.0",
      "packages": [
        {
          "registry": "npm",
          "name": "unipile-node-sdk"
        }
      ],
      "auth": "api-key",
      "authNotes": "Self-serve. A person signs up at dashboard.unipile.com, copies the account's DSN (host and port) and generates an access token, which goes in the `X-API-KEY` header. A v1 token reaches every connected account and has no scopes. Mailboxes are connected by the end user through Google or Microsoft OAuth, using an OAuth app the customer registers and has verified, or with IMAP and SMTP credentials. The v2 beta adds keys limited to a Scope of accounts.",
      "pricing": "paid",
      "pricingNotes": "55 dollars (49 euros) a month covers up to 10 connected accounts, then 5.50 dollars an account a month, falling to 3.50 above 5,000. No charge per request or message. A 7-day trial needs no card, and there is no free tier after it. An SLA needs a custom plan (checked 2026-10-08).",
      "priceSummary": "$55 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the OpenAPI spec or the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": 5,
      "popularity": {
        "githubStars": 48,
        "npmWeekly": 82529,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://developer.unipile.com",
      "llmsTxt": "https://developer.unipile.com/llms.txt",
      "openapi": "https://api1.unipile.com/api-json?port=13111",
      "registryName": "com.unipile/unipile-mcp",
      "capabilities": [
        "mailbox.read",
        "mailbox.search",
        "mailbox.send",
        "mailbox.drafts",
        "mailbox.sync",
        "calendar.read",
        "calendar.write",
        "calendar.webhooks",
        "messaging.whatsapp",
        "messaging.inbound"
      ],
      "tags": [
        "hosted",
        "paid",
        "free-trial",
        "no-card",
        "api-key",
        "openapi",
        "llms-txt",
        "mcp",
        "webhooks",
        "gmail",
        "outlook",
        "imap",
        "calendar",
        "linkedin",
        "whatsapp",
        "typescript",
        "eu",
        "soc2",
        "status-page",
        "closed-source"
      ],
      "lastRelease": "2026-09-02",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 58.4,
        "grade": "C",
        "agentReady": false,
        "rank": 402,
        "ranked": true,
        "rankOf": 629,
        "categoryRank": 5,
        "methodology": "0.4",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 73,
          "maintenance": 59,
          "payments": 40,
          "reliability": 56,
          "schema": 77,
          "security": 37,
          "transparency": 71
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "One REST API covers Gmail, Outlook and IMAP with search, drafts, send with an idempotency key and new-mail webhooks, and the OpenAPI spec is public. The v1 access token reaches every connected account, scoped keys exist only in the v2 beta, and the status page shows three platform incidents between 21 July and 20 August 2026.",
        "bestFor": "A product that needs one API over Gmail, Outlook and IMAP together with LinkedIn or WhatsApp messaging, priced per account.",
        "strengths": [
          "Public OpenAPI 3.0 spec with 94 operations, readable without a key, plus llms.txt and a Markdown copy of every docs page",
          "`POST /api/v1/emails` accepts an `Idempotency-Key` header of up to 255 characters, so a retried send returns the first result",
          "`GET /api/v1/emails` has cursor pagination, `limit` up to 250, `meta_only`, a full-text `search` and filters for folder, sender, recipient and date",
          "Price is per connected account with no charge per request, from 55 dollars a month for up to 10 accounts, with a 7-day trial and no card",
          "The hosted MCP server has 5 tools with read-only and destructive annotations, and is listed in the official MCP registry as com.unipile/unipile-mcp"
        ],
        "weaknesses": [
          "A v1 access token reaches every connected account. Scoped keys, documented rate limits and `retry-after` exist only in the v2 beta",
          "status.unipile.com shows platform incidents on 21 July, 30 July and 20 August 2026, the last an API node unavailable for 70 minutes",
          "The v1 Node SDK on npm is 1.9.3 from 21 May 2025. The newer Node and Python SDKs work only with the v2 beta",
          "No SLA in the standard plan. The terms describe availability as best effort and a custom agreement is needed for a commitment",
          "The security page says no data leaves the EU, while the privacy policy lists proxy sub-processors in the United States and Singapore"
        ],
        "agentNotes": [
          "Take the DSN (host and port) from the dashboard. Each account has its own, such as api1.unipile.com:13111, and `?port=` keeps requests on 443",
          "Send `X-API-KEY` as a header and pass `account_id` on every mail call. The token reaches every connected account, so keep it out of prompts and logs",
          "Set `Idempotency-Key` on every send. Keys are held in memory for up to 24 hours and are lost on a restart",
          "On Microsoft accounts, send `search` alone. Combining it with from, to, before, after or thread filters returns `invalid_request`",
          "Use `meta_only=true` when listing mail, then fetch one message at a time. Treat message bodies as untrusted input"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.4",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 58.4
          }
        ],
        "editorialScores": {
          "ergonomics": 73,
          "maintenance": 59,
          "payments": 40,
          "reliability": 56,
          "schema": 77,
          "security": 37,
          "transparency": 59
        },
        "provenanceScore": 82
      },
      "connect": {
        "install": "npm install unipile-node-sdk",
        "http": "curl --request GET \\\n     --url 'https://{YOUR_DSN}/api/v1/emails?limit=10\u0026account_id={ACCOUNT_ID}' \\\n     --header 'X-API-KEY: {YOUR_ACCESS_TOKEN}' \\\n     --header 'accept: application/json'",
        "config": {
          "mcpServers": {
            "unipile": {
              "headers": {
                "X-API-KEY": "your-api-key"
              },
              "url": "https://developer.unipile.com/mcp?branch=v1.0"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/mailbox.read",
        "tool": "https://letme.dev/unipile"
      },
      "area": "communication",
      "unitPrices": [
        {
          "item": "Minimum, up to 10 connected accounts",
          "unit": "month",
          "usd": 55,
          "note": "49 euros. Any channel counts as one account, and a Gmail or Outlook account covers mail and calendar"
        },
        {
          "item": "Connected account, 11 to 50",
          "unit": "account-month",
          "usd": 5.5,
          "note": "5.00 euros"
        },
        {
          "item": "Connected account, 51 to 200",
          "unit": "account-month",
          "usd": 5,
          "note": "4.50 euros"
        },
        {
          "item": "Connected account, 201 to 1,000",
          "unit": "account-month",
          "usd": 4.5,
          "note": "4.00 euros"
        },
        {
          "item": "Connected account, 1,001 to 5,000",
          "unit": "account-month",
          "usd": 4,
          "note": "3.50 euros"
        },
        {
          "item": "Connected account, 5,001 and above",
          "unit": "account-month",
          "usd": 3.5,
          "note": "3.00 euros"
        }
      ],
      "provenance": {
        "legalEntity": "UNIPILE SAS",
        "domain": "unipile.com",
        "domainRegistered": "2020-11-17",
        "endpointOnVendorDomain": true,
        "terms": "https://www.unipile.com/terms-of-use/",
        "privacy": "https://www.unipile.com/privacy-policy/",
        "statusPage": "https://status.unipile.com",
        "changelog": "https://developer.unipile.com/changelog",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The legal notice names UNIPILE SAS, registered with the RCS of Roanne under number 885265595, head office 168 rue de la Rotonde, 42153 Riorges, France.",
          "The API answers on a per-account host and port under unipile.com, such as api1.unipile.com:13111. The MCP server is at developer.unipile.com/mcp, a ReadMe-hosted docs site on the vendor's domain.",
          "www.unipile.com/.well-known/security.txt returns 404. No vulnerability disclosure policy or bug bounty was found on the security page.",
          "The terms are governed by French law, with the Commercial Court of Roanne as the court. They say changes take effect on publication.",
          "RDAP for unipile.com gives a registration date of 2020-11-17."
        ],
        "score": 82
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/unipile.json",
      "live": {
        "slug": "unipile",
        "probe": {
          "target": "https://developer.unipile.com/mcp?branch=v1.0",
          "method": "get",
          "lastAt": "2026-10-08T18:20:42.768999507Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 48,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 56,
          "p95ms24h": 115,
          "samples24h": 33,
          "samples30d": 33,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 33,
              "ok": 33
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.unipile.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-08T17:51:16.923603697Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "unipile/unipile-node-sdk",
            "version": "v1.9.3",
            "released": "2025-05-21",
            "seenAt": "2026-10-08T16:33:19.750124079Z"
          },
          {
            "registry": "npm",
            "name": "unipile-node-sdk",
            "version": "1.9.3",
            "seenAt": "2026-10-08T16:33:18.965183575Z"
          }
        ],
        "githubStars": 48,
        "npmWeekly": 82529,
        "securityTxt": {
          "url": "https://unipile.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-08T15:38:37.558927605Z"
        },
        "pages": [
          {
            "url": "https://developer.unipile.com/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-08T18:17:20.678778332Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "14178c9246c1"
          }
        ],
        "updatedAt": "2026-10-08T18:20:42.768999507Z"
      }
    },
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Google",
        "b": "UNIPILE SAS",
        "name": "Vendor"
      },
      {
        "a": "https://gmail.googleapis.com/gmail/v1",
        "b": "https://developer.unipile.com/mcp?branch=v1.0",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth",
        "b": "API key",
        "name": "Auth"
      },
      {
        "a": "Free",
        "b": "Paid",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Apache-2.0 (client libraries)",
        "b": "Proprietary service under Unipile's terms of use. The v1 Node SDK repository and the unipile-mcp repository carry an MIT licence file",
        "name": "Licence"
      },
      {
        "a": "23",
        "b": "5",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "not listed",
        "b": "com.unipile/unipile-mcp",
        "name": "MCP registry"
      },
      {
        "a": "2026-09-23",
        "b": "2026-09-02",
        "name": "Last release"
      },
      {
        "a": "2021-11-09",
        "b": "no date given",
        "name": "Terms last updated"
      },
      {
        "a": "2026-10-01",
        "b": "2026-09-28",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "12k stars, 1.1M npm/wk",
        "b": "48 stars, 83k npm/wk",
        "name": "Popularity"
      }
    ],
    "faq": [
      {
        "answer": "Gmail API scores 77.8 (BB) on agent readiness against Unipile's 58.4 (C), and leads in 6 of 7 scored categories. Unipile leads on payments \u0026 pricing.",
        "question": "Which is better for AI agents, Gmail API or Unipile?"
      },
      {
        "answer": "Gmail API uses an OAuth sign-in. Unipile needs an API key.",
        "question": "Do Gmail API and Unipile need an API key?"
      },
      {
        "answer": "Yes. Gmail API has a hosted endpoint at https://gmail.googleapis.com/gmail/v1 and Unipile at https://developer.unipile.com/mcp?branch=v1.0.",
        "question": "Can an agent call Gmail API and Unipile without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 90 against 56",
          "Schema \u0026 documentation, 82 against 77",
          "Agent ergonomics, 82 against 73",
          "Security \u0026 auth, 81 against 37",
          "Maintenance \u0026 community, 85 against 59",
          "Transparency \u0026 trust, 82 against 71"
        ],
        "also": [
          "Agent-ready, a grade of BB or better"
        ],
        "goodFor": "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.",
        "slug": "gmail-api",
        "watchFor": "Eight restricted scopes, including `gmail.readonly` and `gmail.metadata`, need restricted-scope verification for a public app"
      },
      {
        "aheadOn": [
          "Payments \u0026 pricing, 40 against 35"
        ],
        "also": [
          "Free to start without a card"
        ],
        "goodFor": "A product that needs one API over Gmail, Outlook and IMAP together with LinkedIn or WhatsApp messaging, priced per account.",
        "slug": "unipile",
        "watchFor": "A v1 access token reaches every connected account. Scoped keys, documented rate limits and `retry-after` exist only in the v2 beta"
      }
    ],
    "job": {
      "capability": "mailbox.read",
      "name": "Mailbox read"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/emailengine-vs-gmail-api.json",
        "title": "EmailEngine vs Gmail API",
        "url": "https://www.anchorterminal.com/compare/emailengine-vs-gmail-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/emailengine-vs-unipile.json",
        "title": "EmailEngine vs Unipile",
        "url": "https://www.anchorterminal.com/compare/emailengine-vs-unipile"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gmail-api-vs-nylas-email.json",
        "title": "Gmail API vs Nylas Email API",
        "url": "https://www.anchorterminal.com/compare/gmail-api-vs-nylas-email"
      },
      {
        "json": "https://www.anchorterminal.com/compare/gmail-api-vs-outlook-mail-graph.json",
        "title": "Gmail API vs Outlook Mail (Microsoft Graph)",
        "url": "https://www.anchorterminal.com/compare/gmail-api-vs-outlook-mail-graph"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nylas-email-vs-unipile.json",
        "title": "Nylas Email API vs Unipile",
        "url": "https://www.anchorterminal.com/compare/nylas-email-vs-unipile"
      },
      {
        "json": "https://www.anchorterminal.com/compare/outlook-mail-graph-vs-unipile.json",
        "title": "Outlook Mail (Microsoft Graph) vs Unipile",
        "url": "https://www.anchorterminal.com/compare/outlook-mail-graph-vs-unipile"
      }
    ],
    "scores": [
      {
        "by": 34,
        "edge": "gmail-api",
        "gmail-api": 90,
        "key": "reliability",
        "name": "Reliability",
        "unipile": 56,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 5,
        "edge": "gmail-api",
        "gmail-api": 82,
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "unipile": 77,
        "weight": 13
      },
      {
        "by": 9,
        "edge": "gmail-api",
        "gmail-api": 82,
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "unipile": 73,
        "weight": 13
      },
      {
        "by": 44,
        "edge": "gmail-api",
        "gmail-api": 81,
        "key": "security",
        "name": "Security \u0026 auth",
        "unipile": 37,
        "weight": 14
      },
      {
        "by": 5,
        "edge": "unipile",
        "gmail-api": 35,
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "unipile": 40,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 26,
        "edge": "gmail-api",
        "gmail-api": 85,
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "unipile": 59,
        "weight": 7
      },
      {
        "by": 11,
        "edge": "gmail-api",
        "gmail-api": 82,
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "unipile": 71,
        "weight": 7
      }
    ],
    "summary": "Gmail API scores 77.8 (BB) on agent readiness against Unipile's 58.4 (C), and leads in 6 of 7 scored categories. Unipile leads on payments \u0026 pricing. Both do mailbox read.",
    "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.",
      "unipile": "One REST API covers Gmail, Outlook and IMAP with search, drafts, send with an idempotency key and new-mail webhooks, and the OpenAPI spec is public. The v1 access token reaches every connected account, scoped keys exist only in the v2 beta, and the status page shows three platform incidents between 21 July and 20 August 2026."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/gmail-api-vs-unipile",
    "json": "https://www.anchorterminal.com/compare/gmail-api-vs-unipile.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/gmail-api-vs-unipile.md",
    "slim": "https://www.anchorterminal.com/compare/gmail-api-vs-unipile.min.md"
  },
  "markdown": "Gmail API scores 77.8 (BB) on agent readiness against Unipile's 58.4 (C), and leads in 6 of 7 scored categories. Unipile leads on payments \u0026 pricing. Both do mailbox read.\n\n- Gmail API: grade BB, 77.8/100, rank #17 of 629. Markdown https://www.anchorterminal.com/tools/gmail-api.md · JSON https://www.anchorterminal.com/api/v1/tools/gmail-api.json\n- Unipile: grade C, 58.4/100, rank #402 of 629. Markdown https://www.anchorterminal.com/tools/unipile.md · JSON https://www.anchorterminal.com/api/v1/tools/unipile.json\n\n## Which one, for what\n\n### Gmail API (BB)\n\nGood 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.\n\nAhead on:\n- Reliability, 90 against 56\n- Schema \u0026 documentation, 82 against 77\n- Agent ergonomics, 82 against 73\n- Security \u0026 auth, 81 against 37\n- Maintenance \u0026 community, 85 against 59\n- Transparency \u0026 trust, 82 against 71\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n\nWatch for: Eight restricted scopes, including `gmail.readonly` and `gmail.metadata`, need restricted-scope verification for a public app\n\n### Unipile (C)\n\nGood for: A product that needs one API over Gmail, Outlook and IMAP together with LinkedIn or WhatsApp messaging, priced per account.\n\nAhead on:\n- Payments \u0026 pricing, 40 against 35\n\nAlso in its favour:\n- Free to start without a card\n\nWatch for: A v1 access token reaches every connected account. Scoped keys, documented rate limits and `retry-after` exist only in the v2 beta\n\n\n## Score by category\n\n| Category | Weight | Gmail API | Unipile | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 90 | 56 | Gmail API +34 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 82 | 77 | Gmail API +5 |\n| Agent ergonomics | 13% (16.2 this run) | 82 | 73 | Gmail API +9 |\n| Security \u0026 auth | 14% (17.5 this run) | 81 | 37 | Gmail API +44 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 40 | Unipile +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 85 | 59 | Gmail API +26 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 82 | 71 | Gmail API +11 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **77.8 · BB** | **58.4 · C** | |\n\n## Facts side by side\n\n| Fact | Gmail API | Unipile |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Google | UNIPILE SAS |\n| Hosted endpoint | `https://gmail.googleapis.com/gmail/v1` | `https://developer.unipile.com/mcp?branch=v1.0` |\n| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth | API key |\n| Pricing | Free | Paid |\n| x402 | no | no |\n| Licence | Apache-2.0 (client libraries) | Proprietary service under Unipile's terms of use. The v1 Node SDK repository and the unipile-mcp repository carry an MIT licence file |\n| Tools exposed | 23 | 5 |\n| Read-only variant documented | no | yes |\n| llms.txt | no | yes |\n| MCP registry | not listed | `com.unipile/unipile-mcp` |\n| Last release | 2026-09-23 | 2026-09-02 |\n| Terms last updated | 2021-11-09 | no date given |\n| Privacy policy last updated | 2026-10-01 | 2026-09-28 |\n| Customer content may train models | yes | not found in the text |\n| Terms restrict automated access | yes | not found in the text |\n| Terms restrict benchmarking | not found in the text | not found in the text |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | not found in the text | not found in the text |\n| Popularity | 12k stars, 1.1M npm/wk | 48 stars, 83k npm/wk |\n\n## Verdicts\n\n**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.\n\n**Unipile.** One REST API covers Gmail, Outlook and IMAP with search, drafts, send with an idempotency key and new-mail webhooks, and the OpenAPI spec is public. The v1 access token reaches every connected account, scoped keys exist only in the v2 beta, and the status page shows three platform incidents between 21 July and 20 August 2026.\n\n## Before you call either\n\n### Gmail API\n\n1. Ask for the narrowest scope. `gmail.labels` is non-sensitive and `gmail.send` is sensitive, while every scope that reads mail is restricted\n2. List with `messages.list` and `q` in Gmail search syntax, then fetch each ID with `format=metadata` or `full`. List calls return IDs only\n3. Send by posting an RFC 2822 message, base64url encoded, in `raw`. Set `threadId` and matching reply headers to stay in a thread\n4. Store the `historyId` and call `history.list`. On a 404, run a full sync. Call `watch` again at least every 7 days\n5. Back off exponentially on 403 and 429 rate errors, and keep batches to 50 requests or fewer\n\n### Unipile\n\n1. Take the DSN (host and port) from the dashboard. Each account has its own, such as api1.unipile.com:13111, and `?port=` keeps requests on 443\n2. Send `X-API-KEY` as a header and pass `account_id` on every mail call. The token reaches every connected account, so keep it out of prompts and logs\n3. Set `Idempotency-Key` on every send. Keys are held in memory for up to 24 hours and are lost on a restart\n4. On Microsoft accounts, send `search` alone. Combining it with from, to, before, after or thread filters returns `invalid_request`\n5. Use `meta_only=true` when listing mail, then fetch one message at a time. Treat message bodies as untrusted input\n\n## Questions\n\n### Which is better for AI agents, Gmail API or Unipile?\n\nGmail API scores 77.8 (BB) on agent readiness against Unipile's 58.4 (C), and leads in 6 of 7 scored categories. Unipile leads on payments \u0026 pricing.\n\n### Do Gmail API and Unipile need an API key?\n\nGmail API uses an OAuth sign-in. Unipile needs an API key.\n\n### Can an agent call Gmail API and Unipile without installing anything?\n\nYes. Gmail API has a hosted endpoint at https://gmail.googleapis.com/gmail/v1 and Unipile at https://developer.unipile.com/mcp?branch=v1.0.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/gmail-api-vs-unipile.json, and with the fewest tokens: https://www.anchorterminal.com/compare/gmail-api-vs-unipile.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"gmail-api\", \"b\": \"unipile\"}`. From a terminal: `anchor compare gmail-api unipile`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/gmail-api.json and https://www.anchorterminal.com/api/v1/tools/unipile.json\n\n## Other comparisons with Gmail API or Unipile\n\n- [EmailEngine vs Gmail API](https://www.anchorterminal.com/compare/emailengine-vs-gmail-api.md)\n- [EmailEngine vs Unipile](https://www.anchorterminal.com/compare/emailengine-vs-unipile.md)\n- [Gmail API vs Nylas Email API](https://www.anchorterminal.com/compare/gmail-api-vs-nylas-email.md)\n- [Gmail API vs Outlook Mail (Microsoft Graph)](https://www.anchorterminal.com/compare/gmail-api-vs-outlook-mail-graph.md)\n- [Nylas Email API vs Unipile](https://www.anchorterminal.com/compare/nylas-email-vs-unipile.md)\n- [Outlook Mail (Microsoft Graph) vs Unipile](https://www.anchorterminal.com/compare/outlook-mail-graph-vs-unipile.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-08",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.4",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Gmail API vs Unipile",
        "url": ""
      }
    ],
    "description": "Gmail API scores 77.8 (BB) on agent readiness against Unipile's 58.4 (C), and leads in 6 of 7 scored categories. Unipile leads on payments \u0026 pricing. Both do mailbox read. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Gmail API BB 77.8",
      "Unipile C 58.4",
      "scores"
    ],
    "h1": "Gmail API vs Unipile",
    "image": "https://www.anchorterminal.com/assets/og/compare-gmail-api-vs-unipile.png",
    "path": "/compare/gmail-api-vs-unipile",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Gmail API vs Unipile for AI agents, BB 77.8 vs C 58.4",
    "toc": null,
    "updated": "2026-10-08",
    "url": "https://www.anchorterminal.com/compare/gmail-api-vs-unipile"
  },
  "tokens": {
    "markdown": 2050,
    "slim": 730
  },
  "version": 1
}
