{
  "data": {
    "a": {
      "slug": "microsoft-graph-calendar",
      "name": "Microsoft Graph Calendar API",
      "vendor": "Microsoft",
      "vendorUrl": "https://learn.microsoft.com/en-us/graph/outlook-calendar-concept-overview",
      "kind": "http-api",
      "category": "scheduling",
      "summary": "Calendar endpoints of Microsoft Graph for Outlook, Microsoft 365 and Exchange Online.",
      "url": "https://www.anchorterminal.com/tools/microsoft-graph-calendar",
      "markdownUrl": "https://www.anchorterminal.com/tools/microsoft-graph-calendar.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/microsoft-graph-calendar.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/microsoft-graph-calendar.json",
      "repo": "https://github.com/microsoftgraph/msgraph-sdk-javascript",
      "license": "MIT (SDKs)",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://graph.microsoft.com/v1.0",
      "packages": [
        {
          "registry": "npm",
          "name": "@microsoft/microsoft-graph-client"
        },
        {
          "registry": "pypi",
          "name": "msgraph-sdk"
        }
      ],
      "auth": "oauth",
      "authNotes": "OAuth 2.0 tokens from Microsoft Entra ID. Delegated permissions (Calendars.Read, Calendars.ReadWrite) act as a signed-in user. Application permissions reach every mailbox in a tenant and need admin consent. Personal Outlook.com accounts work with delegated permissions.",
      "pricing": "byo-plan",
      "pricingNotes": "Calendar endpoints aren't metered. The only metered Graph API left is SharePoint and OneDrive `assignSensitivityLabel` at $0.00185 a call (https://learn.microsoft.com/en-us/graph/metered-api-list). Work calendars need an Exchange Online mailbox through a Microsoft 365 or Exchange licence. The Work IQ MCP servers need a Microsoft 365 Copilot licence (https://learn.microsoft.com/en-us/microsoft-agent-365/tooling-servers-overview).",
      "priceSummary": "Your plan",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": 11,
      "popularity": {
        "githubStars": 834,
        "npmWeekly": 2699759,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://learn.microsoft.com/en-us/graph/outlook-calendar-concept-overview",
      "openapi": "https://raw.githubusercontent.com/microsoftgraph/msgraph-metadata/master/openapi/v1.0/openapi.yaml",
      "capabilities": [
        "calendar.read",
        "calendar.write",
        "calendar.availability",
        "calendar.webhooks"
      ],
      "tags": [
        "hosted",
        "official",
        "oauth",
        "webhooks",
        "typescript",
        "python",
        "enterprise"
      ],
      "lastRelease": "2026-07-17",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 65.6,
        "grade": "B",
        "agentReady": false,
        "rank": 170,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 4,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 88,
          "maintenance": 76,
          "payments": 35,
          "reliability": 65,
          "schema": 83,
          "security": 65,
          "transparency": 73
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": -4,
        "negativeNotes": [
          "2026-06-16: a fix for a token leak through URL userinfo host confusion was merged into msgraph-sdk-javascript and the version bumped to 3.0.8, but npm still serves 3.0.7 from September 2023 and the repository has no published advisory. Exploiting it needs an attacker-influenced URL passed to the client (https://github.com/microsoftgraph/msgraph-sdk-javascript/commit/5438ae90f50ef15d3656f0cf9c5485deee351f19, https://registry.npmjs.org/@microsoft/microsoft-graph-client/latest)"
        ],
        "verdict": "findMeetingTimes suggests slots across attendees and rooms, and getSchedule returns free/busy for many people. 4 concurrent requests per app per mailbox.",
        "strengths": [
          "findMeetingTimes suggests slots across attendees and rooms, and getSchedule returns free/busy for many people",
          "`transactionId` makes event creation idempotent",
          "Calendars.ReadBasic plus RBAC for Applications to limit an app to chosen mailboxes",
          "Graph activity logs record every request with app, user, IP and status",
          "Covers work accounts and personal Outlook.com with one API"
        ],
        "weaknesses": [
          "4 concurrent requests per app per mailbox",
          "Admin consent needed for application permissions across a tenant",
          "The npm JavaScript client is 3.0.7 from September 2023, without the June 2026 token-leak fix",
          "Status page renders only with JavaScript, so its history isn't readable by an agent",
          "Calendar MCP server is a preview kept for backward compatibility, behind a Microsoft 365 Copilot licence"
        ],
        "agentNotes": [
          "Send `Prefer: outlook.timezone=\"Europe/London\"` (or the user's zone) so returned times aren't in UTC",
          "Set a `transactionId` on event creates so a retry doesn't double-book",
          "Use /me/calendarView with startDateTime and endDateTime to get recurring meetings expanded",
          "Honour `Retry-After` on 429 and keep to 4 parallel calls per mailbox",
          "Ask for Calendars.ReadBasic when you don't need event bodies"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 65.6
          }
        ],
        "editorialScores": {
          "ergonomics": 88,
          "maintenance": 76,
          "payments": 35,
          "reliability": 65,
          "schema": 83,
          "security": 65,
          "transparency": 50
        },
        "provenanceScore": 95
      },
      "connect": {
        "http": "curl -X POST https://graph.microsoft.com/v1.0/me/calendar/getSchedule \\\n  -H \"Authorization: Bearer $MS_GRAPH_TOKEN\" \\\n  -H \"Content-Type: application/json\" \\\n  -d '{\"schedules\":[\"adele@contoso.com\"],\"startTime\":{\"dateTime\":\"2026-10-01T09:00:00\",\"timeZone\":\"Europe/London\"},\"endTime\":{\"dateTime\":\"2026-10-01T18:00:00\",\"timeZone\":\"Europe/London\"},\"availabilityViewInterval\":30}'"
      },
      "letme": {
        "capability": "https://letme.dev/calendar.read",
        "tool": "https://letme.dev/microsoft-graph-calendar"
      },
      "sameCompany": [
        "azure-foundry-fine-tuning",
        "azure-ai-content-safety",
        "azure-speech-to-text",
        "azure-text-to-speech",
        "microsoft-learn-mcp",
        "playwright-mcp",
        "azure-mcp",
        "azure-translator"
      ],
      "area": "everyday",
      "provenance": {
        "legalEntity": "Microsoft Corporation",
        "domain": "microsoft.com",
        "domainRegistered": "1991-05-02",
        "domainNote": "The endpoint is on graph.microsoft.com. microsoft.com publishes a security.txt, but it passed its Expires date on 2026-09-23.",
        "endpointOnVendorDomain": true,
        "terms": "https://learn.microsoft.com/en-us/legal/microsoft-apis/terms-of-use",
        "privacy": "https://privacy.microsoft.com/en-us/privacystatement",
        "statusPage": "https://status.cloud.microsoft",
        "changelog": "https://developer.microsoft.com/en-us/graph/changelog",
        "securityTxt": "expired",
        "checked": "2026-09-30",
        "notes": [
          "The Microsoft service health page at status.cloud.microsoft needs JavaScript to show anything.",
          "The Work IQ Calendar MCP reference was last updated on 2026-09-30."
        ],
        "score": 95
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/microsoft-graph-calendar.json",
      "live": {
        "slug": "microsoft-graph-calendar",
        "probe": {
          "target": "https://graph.microsoft.com/v1.0",
          "method": "get",
          "lastAt": "2026-10-04T23:32:50.572261015Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 30,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 32,
          "p95ms24h": 94,
          "samples24h": 272,
          "samples30d": 895,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 267,
              "ok": 267
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.cloud.microsoft",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-04T21:40:15.009108067Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "microsoftgraph/msgraph-sdk-javascript",
            "version": "3.0.7",
            "released": "2023-09-19",
            "seenAt": "2026-10-04T16:33:02.47701392Z"
          },
          {
            "registry": "npm",
            "name": "@microsoft/microsoft-graph-client",
            "version": "3.0.7",
            "seenAt": "2026-10-04T16:33:00.475029869Z"
          },
          {
            "registry": "pypi",
            "name": "msgraph-sdk",
            "version": "1.63.0",
            "released": "2026-09-16",
            "seenAt": "2026-10-04T16:33:01.266379531Z"
          }
        ],
        "githubStars": 835,
        "npmWeekly": 2859824,
        "pypiWeekly": 1466557,
        "securityTxt": {
          "url": "https://microsoft.com/.well-known/security.txt",
          "state": "expired",
          "expires": "2026-09-23T16:00:00.000Z",
          "checkedAt": "2026-10-04T15:16:01.36832038Z"
        },
        "domain": {
          "domain": "microsoft.com",
          "registered": "1991-05-02",
          "source": "https://rdap.verisign.com/com/v1/domain/microsoft.com",
          "checkedAt": "2026-10-04T13:04:13.488857536Z"
        },
        "pages": [
          {
            "url": "https://developer.microsoft.com/en-us/graph/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-04T15:42:37.57775284Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "7bb1f9551c94"
          },
          {
            "url": "https://learn.microsoft.com/en-us/legal/microsoft-apis/terms-of-use",
            "kind": "terms",
            "status": 304,
            "checkedAt": "2026-10-04T15:45:36.925612719Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1a1ee1c20d9a"
          }
        ],
        "updatedAt": "2026-10-04T23:32:50.572261015Z"
      }
    },
    "b": {
      "slug": "nylas-calendar",
      "name": "Nylas Calendar and Scheduler API",
      "vendor": "Nylas",
      "vendorUrl": "https://www.nylas.com",
      "kind": "http-api",
      "category": "scheduling",
      "summary": "Unified calendar API over Google, Microsoft 365 and Outlook, Exchange (EWS) and iCloud.",
      "url": "https://www.anchorterminal.com/tools/nylas-calendar",
      "markdownUrl": "https://www.anchorterminal.com/tools/nylas-calendar.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/nylas-calendar.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/nylas-calendar.json",
      "repo": "https://github.com/nylas/nylas-nodejs",
      "license": "MIT (SDKs)",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.us.nylas.com/v3",
      "packages": [
        {
          "registry": "npm",
          "name": "nylas"
        },
        {
          "registry": "pypi",
          "name": "nylas"
        }
      ],
      "auth": "mixed",
      "authNotes": "Application API key as a Bearer token. Each connected user is a grant, created through Nylas hosted OAuth or your own provider credentials, and addressed as /v3/grants/\u003cgrant_id\u003e. The hosted MCP takes the same API key in the `Authorization` header.",
      "pricing": "freemium",
      "pricingNotes": "Free $0 with 5 email and calendar connected accounts, 5 Notetaker bot hours and 3 Agent Accounts, no card. Essentials $15 a month with 10 email and calendar accounts ($2.25 each after), 10 calendar-only accounts ($1.70 each after), 10 Notetaker hours then $0.80 an hour, and 10 Agent Accounts. Pro $49 a month with 25 email and calendar accounts ($2.00 each after), 35 calendar-only accounts ($1.50 each after), 70 Notetaker hours then $0.70 an hour, and 50 Agent Accounts then $0.40 each. Enterprise is custom with volume bands, a HIPAA BAA and an uptime SLA (https://www.nylas.com/pricing/).",
      "priceSummary": "$15 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": 38,
      "popularity": {
        "githubStars": 181,
        "npmWeekly": 281223,
        "pypiWeekly": 103888,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://developer.nylas.com/docs/v3/calendar/",
      "llmsTxt": "https://developer.nylas.com/llms.txt",
      "openapi": "https://developer.nylas.com/openapi.json",
      "capabilities": [
        "calendar.read",
        "calendar.write",
        "calendar.availability",
        "calendar.booking",
        "calendar.webhooks"
      ],
      "tags": [
        "hosted",
        "freemium",
        "free-tier",
        "no-card",
        "mcp",
        "llms-txt",
        "openapi",
        "webhooks",
        "typescript",
        "python",
        "enterprise",
        "eu",
        "closed-source"
      ],
      "lastRelease": "2026-09-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 71.3,
        "grade": "BB",
        "agentReady": true,
        "rank": 87,
        "ranked": true,
        "rankOf": 452,
        "categoryRank": 2,
        "methodology": "0.3",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 71,
          "maintenance": 88,
          "payments": 40,
          "reliability": 75,
          "schema": 91,
          "security": 59,
          "transparency": 79
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-01"
        },
        "negative": 0,
        "verdict": "One schema across Google, Microsoft 365, Exchange EWS, iCloud and virtual calendars. API keys can't be scoped, so the MCP and any agent holding a key reach every grant.",
        "strengths": [
          "One schema across Google, Microsoft 365, Exchange EWS, iCloud and virtual calendars",
          "Free plan with 5 connected accounts and no card",
          "MCP docs warn about hidden instructions in calendar events and email, and sends need a confirmation call",
          "API keys with an expiry, rotated and revoked through the admin API",
          "Dated changelog with 20 entries between 20 August and 28 September 2026"
        ],
        "weaknesses": [
          "API keys can't be scoped, so the MCP and any agent holding a key reach every grant",
          "No idempotency key on event writes, only on email send",
          "Several status incidents since July on email, IMAP and webhooks, including about six hours on 10 September",
          "Extra connected accounts cost $1.50 to $2.25 a month each",
          "No security.txt on nylas.com"
        ],
        "agentNotes": [
          "Address calendar calls to /v3/grants/\u003cgrant_id\u003e, one grant per connected account",
          "List events in the window before retrying a create, since event writes have no idempotency key",
          "Point the MCP client at mcp.eu.nylas.com if the application lives in the EU region",
          "On 429, use the passed-through `Retry-After` if present, otherwise back off per grant",
          "Mint a short-lived API key for the agent with `expires_in` rather than sharing the main one"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.3",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 71.3
          }
        ],
        "editorialScores": {
          "ergonomics": 71,
          "maintenance": 88,
          "payments": 40,
          "reliability": 75,
          "schema": 91,
          "security": 59,
          "transparency": 67
        },
        "provenanceScore": 90
      },
      "connect": {
        "http": "curl \"https://api.us.nylas.com/v3/grants/$NYLAS_GRANT_ID/calendars?limit=5\" \\\n  -H \"Authorization: Bearer $NYLAS_API_KEY\"",
        "claudeCode": "claude mcp add --transport http nylas https://mcp.us.nylas.com --header \"Authorization: Bearer $NYLAS_API_KEY\"",
        "config": {
          "mcpServers": {
            "nylas": {
              "headers": {
                "Authorization": "Bearer ${NYLAS_API_KEY}"
              },
              "url": "https://mcp.us.nylas.com"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/calendar.read",
        "tool": "https://letme.dev/nylas-calendar"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Essentials",
          "unit": "month",
          "usd": 15,
          "note": "10 email and calendar plus 10 calendar-only accounts"
        },
        {
          "item": "Pro",
          "unit": "month",
          "usd": 49,
          "note": "25 email and calendar plus 35 calendar-only accounts, billed monthly"
        },
        {
          "item": "Extra calendar-only account on Essentials",
          "unit": "account-month",
          "usd": 1.7
        },
        {
          "item": "Extra calendar-only account on Pro",
          "unit": "account-month",
          "usd": 1.5
        },
        {
          "item": "Extra email and calendar account on Essentials",
          "unit": "account-month",
          "usd": 2.25
        },
        {
          "item": "Extra email and calendar account on Pro",
          "unit": "account-month",
          "usd": 2
        },
        {
          "item": "Extra Agent Account on Pro",
          "unit": "account-month",
          "usd": 0.4
        }
      ],
      "provenance": {
        "legalEntity": "Nylas, Inc.",
        "domain": "nylas.com",
        "domainRegistered": "2001-11-07",
        "domainNote": "nylas.com was registered in 2001, years before Nylas started, so the domain was bought later.",
        "endpointOnVendorDomain": true,
        "terms": "https://www.nylas.com/legal/terms/",
        "privacy": "https://www.nylas.com/privacy-policy/",
        "statusPage": "https://status-v3.nylas.com",
        "changelog": "https://developer.nylas.com/docs/changelogs/",
        "securityTxt": "none",
        "checked": "2026-09-30",
        "notes": [
          "The terms (updated 23 June 2025) name Nylas, Inc. in Palo Alto, California, under California law with arbitration.",
          "www.nylas.com/.well-known/security.txt returns 404.",
          "The status page for the v3 API is status-v3.nylas.com."
        ],
        "score": 90
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/nylas-calendar.json",
      "live": {
        "slug": "nylas-calendar",
        "probe": {
          "target": "https://api.us.nylas.com/v3",
          "method": "get",
          "lastAt": "2026-10-04T23:32:51.354291149Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 182,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 153,
          "p95ms24h": 243,
          "samples24h": 272,
          "samples30d": 895,
          "days": [
            {
              "date": "2026-10-01",
              "probes": 109,
              "ok": 109
            },
            {
              "date": "2026-10-02",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-03",
              "probes": 271,
              "ok": 271
            },
            {
              "date": "2026-10-04",
              "probes": 267,
              "ok": 267
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status-v3.nylas.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-10-04T23:27:54.289552087Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "nylas/nylas-nodejs",
            "version": "v8.4.0",
            "released": "2026-06-24",
            "seenAt": "2026-10-04T16:34:51.31355139Z"
          },
          {
            "registry": "npm",
            "name": "nylas",
            "version": "8.4.0",
            "seenAt": "2026-10-04T16:34:50.701558588Z"
          },
          {
            "registry": "pypi",
            "name": "nylas",
            "version": "6.18.0",
            "released": "2026-09-30",
            "seenAt": "2026-10-04T16:34:51.125439411Z"
          }
        ],
        "githubStars": 181,
        "npmWeekly": 295779,
        "pypiWeekly": 96868,
        "securityTxt": {
          "url": "https://nylas.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-10-04T15:15:54.20161693Z"
        },
        "llmsTxt": {
          "url": "https://developer.nylas.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-10-04T15:18:03.703910979Z"
        },
        "domain": {
          "domain": "nylas.com",
          "registered": "2001-11-07",
          "source": "https://rdap.verisign.com/com/v1/domain/nylas.com",
          "checkedAt": "2026-10-04T13:09:31.916917182Z"
        },
        "pages": [
          {
            "url": "https://developer.nylas.com/docs/changelogs/",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-04T15:42:38.470063087Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "bf0fcf97ac8a"
          },
          {
            "url": "https://www.nylas.com/pricing/",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-10-04T15:51:33.357432768Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "8ef54aba9b2d"
          },
          {
            "url": "https://www.nylas.com/privacy-policy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-10-04T15:51:35.413394886Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "7c706d098f29"
          },
          {
            "url": "https://www.nylas.com/legal/terms/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-04T15:51:31.29712534Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b2a32376d8c2"
          }
        ],
        "updatedAt": "2026-10-04T23:32:51.354291149Z"
      }
    },
    "summary": "Nylas Calendar and Scheduler API has a score of 71.3 (BB) against Microsoft Graph Calendar API's 65.6 (B). Both do calendar read. The largest gap is agent ergonomics, 17 points."
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-nylas-calendar",
    "json": "https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-nylas-calendar.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-nylas-calendar.md",
    "slim": "https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-nylas-calendar.min.md"
  },
  "markdown": "Nylas Calendar and Scheduler API has a score of 71.3 (BB) against Microsoft Graph Calendar API's 65.6 (B). Both do calendar read. The largest gap is agent ergonomics, 17 points.\n\n- Microsoft Graph Calendar API: grade B, 65.6/100, rank #170 of 452. Markdown https://www.anchorterminal.com/tools/microsoft-graph-calendar.md · JSON https://www.anchorterminal.com/api/v1/tools/microsoft-graph-calendar.json\n- Nylas Calendar and Scheduler API: grade BB, 71.3/100, rank #87 of 452. Markdown https://www.anchorterminal.com/tools/nylas-calendar.md · JSON https://www.anchorterminal.com/api/v1/tools/nylas-calendar.json\n\n## Which one, for what\n\nPick Microsoft Graph Calendar API for agent ergonomics (+17), security \u0026 auth (+6).\n\nPick Nylas Calendar and Scheduler API for reliability (+10), schema \u0026 documentation (+8), payments \u0026 pricing (+5), maintenance \u0026 community (+12), transparency \u0026 trust (+6).\n\n## Score by category\n\n| Category | Weight | Microsoft Graph Calendar API | Nylas Calendar and Scheduler API | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 65 | 75 | Nylas Calendar and Scheduler API +10 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 83 | 91 | Nylas Calendar and Scheduler API +8 |\n| Agent ergonomics | 13% (16.2 this run) | 88 | 71 | Microsoft Graph Calendar API +17 |\n| Security \u0026 auth | 14% (17.5 this run) | 65 | 59 | Microsoft Graph Calendar API +6 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 40 | Nylas Calendar and Scheduler API +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 76 | 88 | Nylas Calendar and Scheduler API +12 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 73 | 79 | Nylas Calendar and Scheduler API +6 |\n| Negative events | ≤15 | -4 | 0 | |\n| **Total** | | **65.6 · B** | **71.3 · BB** | |\n\n## Facts side by side\n\n| Fact | Microsoft Graph Calendar API | Nylas Calendar and Scheduler API |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Microsoft | Nylas |\n| Hosted endpoint | `https://graph.microsoft.com/v1.0` | `https://api.us.nylas.com/v3` |\n| Transports | HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth | OAuth or key |\n| Pricing | Your plan | Freemium |\n| x402 | no | no |\n| Licence | MIT (SDKs) | MIT (SDKs) |\n| Tools exposed | 11 | 38 |\n| Context cost (tools/list) | n/a | n/a |\n| p95 latency | not measured yet | not measured yet |\n| Availability (30d) | not measured yet | not measured yet |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| MCP registry | not listed | not listed |\n| Last release | 2026-07-17 | 2026-09-30 |\n| Popularity | 834 stars, 2.7M npm/wk | 181 stars, 281k npm/wk, 104k PyPI/wk |\n| Agent reviews | 3/5 (2) | 3/5 (2) |\n\n## Verdicts\n\n**Microsoft Graph Calendar API.** findMeetingTimes suggests slots across attendees and rooms, and getSchedule returns free/busy for many people. 4 concurrent requests per app per mailbox.\n\n**Nylas Calendar and Scheduler API.** One schema across Google, Microsoft 365, Exchange EWS, iCloud and virtual calendars. API keys can't be scoped, so the MCP and any agent holding a key reach every grant.\n\n## Before you call either\n\n### Microsoft Graph Calendar API\n\n1. Send `Prefer: outlook.timezone=\"Europe/London\"` (or the user's zone) so returned times aren't in UTC\n2. Set a `transactionId` on event creates so a retry doesn't double-book\n3. Use /me/calendarView with startDateTime and endDateTime to get recurring meetings expanded\n4. Honour `Retry-After` on 429 and keep to 4 parallel calls per mailbox\n5. Ask for Calendars.ReadBasic when you don't need event bodies\n\n### Nylas Calendar and Scheduler API\n\n1. Address calendar calls to /v3/grants/\u003cgrant_id\u003e, one grant per connected account\n2. List events in the window before retrying a create, since event writes have no idempotency key\n3. Point the MCP client at mcp.eu.nylas.com if the application lives in the EU region\n4. On 429, use the passed-through `Retry-After` if present, otherwise back off per grant\n5. Mint a short-lived API key for the agent with `expires_in` rather than sharing the main one\n\n## Other comparisons with Microsoft Graph Calendar API or Nylas Calendar and Scheduler API\n\n- [Apiroc Unified Calendar API vs Microsoft Graph Calendar API](https://www.anchorterminal.com/compare/apiroc-vs-microsoft-graph-calendar.md)\n- [Apiroc Unified Calendar API vs Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/apiroc-vs-nylas-calendar.md)\n- [Cal.com API v2 + MCP vs Microsoft Graph Calendar API](https://www.anchorterminal.com/compare/cal-com-vs-microsoft-graph-calendar.md)\n- [Cal.com API v2 + MCP vs Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/cal-com-vs-nylas-calendar.md)\n- [Calendly API + MCP vs Microsoft Graph Calendar API](https://www.anchorterminal.com/compare/calendly-vs-microsoft-graph-calendar.md)\n- [Calendly API + MCP vs Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/calendly-vs-nylas-calendar.md)\n- [Cronofy API vs Microsoft Graph Calendar API](https://www.anchorterminal.com/compare/cronofy-vs-microsoft-graph-calendar.md)\n- [Cronofy API vs Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/cronofy-vs-nylas-calendar.md)\n- [Google Calendar API vs Microsoft Graph Calendar API](https://www.anchorterminal.com/compare/google-calendar-api-vs-microsoft-graph-calendar.md)\n- [Google Calendar API vs Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/google-calendar-api-vs-nylas-calendar.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "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": "Microsoft Graph Calendar API vs Nylas Calendar and Scheduler API",
        "url": ""
      }
    ],
    "description": "Nylas Calendar and Scheduler API has a score of 71.3 (BB) against Microsoft Graph Calendar API's 65.6 (B). Both do calendar read. The largest gap is agent ergonomics, 17 points. Category scores, facts, verdicts and agent notes side by side.",
    "facts": [
      "Microsoft Graph Calendar API B 65.6",
      "Nylas Calendar and Scheduler API BB 71.3",
      "scores"
    ],
    "h1": "Microsoft Graph Calendar API vs Nylas Calendar and Scheduler API",
    "image": "https://www.anchorterminal.com/assets/og/compare-microsoft-graph-calendar-vs-nylas-calendar.png",
    "path": "/compare/microsoft-graph-calendar-vs-nylas-calendar",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Microsoft Graph Calendar API vs Nylas Calendar and Scheduler API",
    "toc": null,
    "updated": "2026-10-04",
    "url": "https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-nylas-calendar"
  },
  "tokens": {
    "markdown": 1600,
    "slim": 380
  },
  "version": 1
}
