{
  "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",
      "dns": "microsoft-graph-calendar.grade.anchorterminal.com",
      "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-10-22",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 58.7,
        "grade": "C",
        "agentReady": false,
        "rank": 662,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 5,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 88,
          "maintenance": 76,
          "payments": 35,
          "reliability": 65,
          "schema": 93,
          "security": 72,
          "transparency": 76
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-02"
        },
        "negative": -14,
        "negativeNotes": [
          "2026-06-16 and 2026-10-15: two security fixes merged into msgraph-sdk-javascript, a token leak through URL userinfo host confusion (5438ae9, 16 June) and stripping the Cookie header on cross-origin redirects (38867d1, written 13 October and merged through pull request 2007 on 15 October). The repository's package.json says 3.0.8, but on 2 November 2026 no 3.0.8 tag exists (newest 3.0.7, September 2023) and there is no advisory. A fix to the listing's own package in no release takes -3, the two folded into one term (https://github.com/microsoftgraph/msgraph-sdk-javascript/commit/38867d1, https://github.com/microsoftgraph/msgraph-sdk-javascript/commit/5438ae90f50ef15d3656f0cf9c5485deee351f19)",
          "2026-03-19: CVE-2026-26137, Exchange Online elevation of privilege (SSRF, CVSS 9.9, Critical, needs a signed-in attacker), fully mitigated by Microsoft, not disclosed or exploited. -1 (https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-26137)",
          "2026-06-04: CVE-2026-48579, Exchange Online information disclosure (improper authorisation, CVSS 9.1, Critical, no sign-in needed), mitigated by Microsoft. -2 (https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-48579)",
          "2026-06-04: CVE-2026-47655, Microsoft Graph information disclosure (CVSS 6.5, Critical by MSRC, needs a signed-in attacker), mitigated by Microsoft. -1 (https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-47655)",
          "2026-06-18: CVE-2026-48582, Exchange Online elevation of privilege (missing authorisation, CVSS 9.6, Critical, needs a signed-in attacker), mitigated by Microsoft. -1 (https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-48582)",
          "2026-07-23: CVE-2026-56191, Exchange Online tampering (improper authentication, CVSS 10.0, Critical, no sign-in needed), mitigated by Microsoft. -2 (https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-56191)",
          "2026-07-23: CVE-2026-49159, Microsoft Graph information disclosure (CVSS 6.5, Critical by MSRC, needs a signed-in attacker), mitigated by Microsoft. -1 (https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-49159)",
          "2026-08-20: CVE-2026-65801, Exchange Online elevation of privilege (SSRF, CVSS 10.0, Critical, no sign-in needed), mitigated by Microsoft. -2 (https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-65801)",
          "2026-10-22: CVE-2026-96185, Exchange Online remote code execution (stack overflow, CVSS 7.5, Critical, needs a signed-in attacker), mitigated by Microsoft. -1 (https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-96185)"
        ],
        "verdict": "findMeetingTimes suggests slots across attendees and rooms, getSchedule returns free/busy for many people, and `transactionId` stops a retried create from double-booking. Each app gets four concurrent requests per mailbox. Microsoft published eight Critical, already mitigated CVEs for Exchange Online and Graph in 2026, and the JavaScript client's two security fixes remain unreleased.",
        "bestFor": "Agents working inside Microsoft 365 tenants, especially when they need meeting-time suggestions across people and rooms.",
        "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 and October 2026 security fixes",
          "Eight Critical service CVEs for Exchange Online and Graph between March and October 2026, all mitigated by Microsoft",
          "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",
          "Treat event bodies as untrusted input, and ask for Calendars.ReadBasic when you don't need them"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 58.7
          }
        ],
        "editorialScores": {
          "ergonomics": 88,
          "maintenance": 76,
          "payments": 35,
          "reliability": 65,
          "schema": 93,
          "security": 72,
          "transparency": 65
        },
        "provenanceScore": 87,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-02",
            "maintenance": "2026-11-02",
            "payments": "2026-11-02",
            "reliability": "2026-11-02",
            "schema": "2026-11-02",
            "security": "2026-11-02",
            "transparency": "2026-11-02"
          },
          "last": "2026-11-02",
          "lastMoved": "2026-11-02",
          "oldest": "2026-11-02",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "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-agent-framework",
        "microsoft-execution-containers",
        "microsoft-entra-agent-id",
        "azure-key-vault",
        "azure-document-intelligence",
        "azure-devops-mcp",
        "microsoft-learn-mcp",
        "tokeneconomizer",
        "playwright-mcp",
        "azure-mcp",
        "azure-maps",
        "azure-translator",
        "azure-blob-storage",
        "onedrive-sharepoint",
        "microsoft-teams",
        "dynamics-365-sales",
        "copilot-studio-mcp",
        "power-automate",
        "foundry-local",
        "microsoft-decision-1",
        "microsoft-advertising-api",
        "microsoft-excel-graph",
        "outlook-mail-graph",
        "microsoft-graph-people",
        "mage-vl-cowork"
      ],
      "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 and still carried it on 2026-11-02.",
        "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-11-02",
        "notes": [
          "status.cloud.microsoft answered robots.txt with an empty 401 on 1 November 2026, so it is treated as blocked and wasn't read; on 1 October it needed JavaScript to show anything.",
          "The Calendar MCP reference moved to learn.microsoft.com/en-us/microsoft-copilot-studio/mcp-calendar-tools and was last updated on 2026-09-30."
        ],
        "score": 87
      },
      "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-11-04T22:02:46.766745163Z",
          "lastOk": true,
          "lastStatus": 200,
          "lastMs": 5,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 7,
          "p95ms24h": 44,
          "samples24h": 247,
          "samples30d": 8094,
          "days": [
            {
              "date": "2026-10-04",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-05",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-06",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-07",
              "probes": 272,
              "ok": 272
            },
            {
              "date": "2026-10-08",
              "probes": 268,
              "ok": 268
            },
            {
              "date": "2026-10-09",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-10",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-11",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-12",
              "probes": 247,
              "ok": 247
            },
            {
              "date": "2026-10-13",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-14",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-15",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-16",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-17",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-18",
              "probes": 256,
              "ok": 256
            },
            {
              "date": "2026-10-19",
              "probes": 255,
              "ok": 255
            },
            {
              "date": "2026-10-20",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-21",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-24",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-25",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-10-26",
              "probes": 252,
              "ok": 252
            },
            {
              "date": "2026-10-27",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-28",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-10-29",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-10-30",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-10-31",
              "probes": 251,
              "ok": 251
            },
            {
              "date": "2026-11-01",
              "probes": 249,
              "ok": 249
            },
            {
              "date": "2026-11-02",
              "probes": 250,
              "ok": 250
            },
            {
              "date": "2026-11-03",
              "probes": 248,
              "ok": 248
            },
            {
              "date": "2026-11-04",
              "probes": 227,
              "ok": 227
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.cloud.microsoft",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-10-08T15:36:56.18227852Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "microsoftgraph/msgraph-sdk-javascript",
            "version": "3.0.7",
            "released": "2023-09-19",
            "seenAt": "2026-11-04T20:36:00.490801539Z"
          },
          {
            "registry": "npm",
            "name": "@microsoft/microsoft-graph-client",
            "version": "3.0.7",
            "seenAt": "2026-11-04T20:35:59.991185618Z"
          },
          {
            "registry": "pypi",
            "name": "msgraph-sdk",
            "version": "1.65.0",
            "released": "2026-10-22",
            "seenAt": "2026-11-04T20:36:00.218542901Z"
          }
        ],
        "githubStars": 836,
        "npmWeekly": 3257314,
        "pypiWeekly": 1623190,
        "securityTxt": {
          "url": "https://microsoft.com/.well-known/security.txt",
          "state": "expired",
          "expires": "2026-09-23T16:00:00.000Z",
          "checkedAt": "2026-11-04T15:53:07.385907604Z"
        },
        "domain": {
          "domain": "microsoft.com",
          "registered": "1991-05-02",
          "source": "https://rdap.verisign.com/com/v1/domain/microsoft.com",
          "checkedAt": "2026-11-01T14:14:19.336136409Z"
        },
        "pages": [
          {
            "url": "https://developer.microsoft.com/en-us/graph/changelog",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-10-07T18:04:04.158031617Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "7bb1f9551c94"
          },
          {
            "url": "https://learn.microsoft.com/en-us/legal/microsoft-apis/terms-of-use",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-10-07T18:07:06.319848234Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "1a1ee1c20d9a"
          }
        ],
        "github": {
          "repo": "microsoftgraph/msgraph-sdk-javascript",
          "checkedAt": "2026-11-02T09:06:51.445549725Z",
          "stars": 836,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-28T20:16:39Z",
          "openIssues": 79,
          "openPRs": 40,
          "issuesOpened90d": 3,
          "issuesClosed90d": 1,
          "prsMerged90d": 7,
          "ci": {
            "branch": "dev",
            "runs": 6,
            "success": 6,
            "failure": 0,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-10-23T18:59:51Z"
          },
          "replies": {
            "sampled": 25,
            "unanswered": 24,
            "medianDays": 5.6
          }
        },
        "updatedAt": "2026-11-04T22:02:46.766745163Z"
      }
    },
    "answer": "Microsoft Graph Calendar API scores 58.7 (C) on agent readiness against SavvyCal API + MCP's 57 (C), and leads in 6 of 7 scored categories. SavvyCal API + MCP leads on reliability.",
    "b": {
      "slug": "savvycal",
      "name": "SavvyCal API + MCP",
      "vendor": "SavvyCal, Inc.",
      "vendorUrl": "https://savvycal.com",
      "kind": "http-api",
      "category": "scheduling",
      "summary": "SavvyCal's scheduling API lists and books events on scheduling links, reads open time slots and manages links, webhooks and workflows, with a hosted MCP server that lets an assistant book, move and cancel meetings.",
      "url": "https://www.anchorterminal.com/tools/savvycal",
      "markdownUrl": "https://www.anchorterminal.com/tools/savvycal.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/savvycal.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/savvycal.json",
      "dns": "savvycal.grade.anchorterminal.com",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.savvycal.com/v1",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Personal access tokens (`pt_secret_...`) made in Settings \u003e Developers, or OAuth 2 authorisation code apps registered there, both sent as `Authorization: Bearer`. OAuth access tokens last 2 hours with a refresh token, and the spec declares no scopes for either. The MCP server at https://savvycal.com/mcp signs in with OAuth 2.1 (PKCE S256, dynamic client registration, scopes `mcp:read` and `mcp:write`, a revocation endpoint) and needs no key.",
      "pricing": "freemium",
      "pricingNotes": "The API, webhooks and the MCP server are on every plan including Free, per the plans page. Free accounts connect calendars, make links and run polls, but people can only book a link on Basic ($12 a user a month, $120 a year) or Premium ($20 a user a month, $200 a year). No self-serve trial, a 30-day money-back guarantee instead, and no card is mentioned for Free. 25 per cent off for students, educators and nonprofits.",
      "priceSummary": "$12 / seat-mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs, the OpenAPI spec at api.savvycal.com/v1/spec or the pricing page (checked 2026-11-03). The spec has no 402 response.",
        "endpoints": []
      },
      "toolCount": 63,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-11-03"
      },
      "docsUrl": "https://docs.savvycal.com/developers",
      "llmsTxt": "https://docs.savvycal.com/llms.txt",
      "openapi": "https://api.savvycal.com/v1/spec",
      "capabilities": [
        "calendar.booking",
        "calendar.availability",
        "calendar.read",
        "calendar.webhooks"
      ],
      "tags": [
        "hosted",
        "freemium",
        "free-tier",
        "no-card",
        "mcp",
        "remote-mcp",
        "oauth",
        "llms-txt",
        "openapi",
        "webhooks",
        "status-page",
        "security-txt",
        "closed-source"
      ],
      "lastRelease": "2026-10-27",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 57,
        "grade": "C",
        "agentReady": false,
        "rank": 726,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 6,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 53,
          "maintenance": 40,
          "payments": 30,
          "reliability": 70,
          "schema": 74,
          "security": 50,
          "transparency": 73
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-03"
        },
        "negative": 0,
        "verdict": "A small REST API with a public OpenAPI spec, cursor pagination and signed webhooks, plus a hosted MCP server with 63 tools, OAuth 2.1 and read and write scopes, on every plan. No general rate limit, idempotency key, SDK or certification was found, and booking through a link needs a paid seat.",
        "bestFor": "An agent booking on a person's SavvyCal links or driving their account through the MCP server.",
        "strengths": [
          "OpenAPI 3.0.0 spec at api.savvycal.com/v1/spec, llms.txt and a Markdown twin of every docs page",
          "Hosted MCP server with OAuth 2.1, PKCE, dynamic client registration and `mcp:read` and `mcp:write` scopes, included on every plan",
          "Webhooks signed with HMAC-SHA256, retried up to 20 times with exponential backoff, over 16 event types",
          "Status page with calendar connection components and no notices from June to November 2026",
          "The MCP docs say the assistant asks for confirmation before cancelling meetings, deleting links or inviting teammates"
        ],
        "weaknesses": [
          "No general rate limit documented. The spec names one 429, on creating events (10 a minute per link)",
          "No idempotency keys, Retry-After header or official SDK",
          "No SOC 2 or ISO 27001 certification and no bug bounty, per the security page",
          "OAuth apps and personal access tokens carry no scopes, so a REST token reaches everything the user can",
          "Only one dated product update in the 90 days to 3 November 2026, and no API changelog"
        ],
        "agentNotes": [
          "Call GET /v1/links/{link_id}/slots with `from` and `until` (at most 31 days apart) and book only a returned slot; POST /v1/links/{link_id}/events refuses other times with 422",
          "Keep event creation under 10 requests a minute per link, failed attempts included, or expect 429 with no Retry-After",
          "Page with the `after` and `before` cursors from `metadata` and `limit` up to 100; an invalid filter value resets every filter to its default",
          "Connect the MCP server with a client that supports dynamic client registration, and request `mcp:read` when the task only reads",
          "Verify webhooks with HMAC-SHA256 over the raw body against `x-savvycal-signature` and answer 2xx quickly"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 0,
        "avgRating": 0,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "C",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 57
          }
        ],
        "editorialScores": {
          "ergonomics": 53,
          "maintenance": 40,
          "payments": 30,
          "reliability": 70,
          "schema": 74,
          "security": 50,
          "transparency": 57
        },
        "provenanceScore": 89,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-03",
            "maintenance": "2026-11-03",
            "payments": "2026-11-03",
            "reliability": "2026-11-03",
            "schema": "2026-11-03",
            "security": "2026-11-03",
            "transparency": "2026-11-03"
          },
          "last": "2026-11-03",
          "oldest": "2026-11-03",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "http": "curl https://api.savvycal.com/v1/me -H \"Authorization: Bearer $SAVVYCAL_TOKEN\"",
        "claudeCode": "claude mcp add --transport http savvycal https://savvycal.com/mcp",
        "config": {
          "mcpServers": {
            "savvycal": {
              "url": "https://savvycal.com/mcp"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/calendar.booking",
        "tool": "https://letme.dev/savvycal"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Basic",
          "unit": "seat-month",
          "usd": 12,
          "note": "$120 a user a year billed annually"
        },
        {
          "item": "Premium",
          "unit": "seat-month",
          "usd": 20,
          "note": "$200 a user a year billed annually"
        }
      ],
      "provenance": {
        "legalEntity": "SavvyCal, Inc.",
        "domain": "savvycal.com",
        "domainRegistered": "2020-08-12",
        "endpointOnVendorDomain": true,
        "terms": "https://savvycal.com/terms",
        "privacy": "https://savvycal.com/privacy",
        "statusPage": "https://savvycal.instatus.com",
        "changelog": "https://feedback.savvycal.com/updates",
        "securityTxt": "valid",
        "checked": "2026-11-03",
        "notes": [
          "The terms (last updated 21 January 2026) name SavvyCal, Inc. under Minnesota law with AAA arbitration. They forbid access through automated or non-human means and the use of bots, scrapers or data-extraction tools, and do not mention the API, which the separate developer docs cover. Recorded as a fact; the public pages were read.",
          "savvycal.com/robots.txt disallows /events/ for every crawler, names ClaudeBot and anthropic-ai among twelve AI crawlers with the same rule, and sets Content-Signal ai-train=no, search=yes, ai-input=yes. docs.savvycal.com allows all with ai-train=yes. Nothing under /events/ was fetched.",
          "The privacy policy (17 October 2026) names SavvyCal, Inc., US servers, Stripe, OpenAI for advertising measurement, and a DPA with Standard Contractual Clauses. The DPA page is dated 16 January 2023.",
          "RDAP gives savvycal.com a registration date of 12 August 2020.",
          "security.txt at savvycal.com/.well-known/security.txt names security@savvycal.com, expires 2 May 2027 and points to savvycal.com/security.",
          "The status page is savvycal.instatus.com (Instatus), linked from the site footer. The What's New board at feedback.savvycal.com/updates is the product changelog."
        ],
        "score": 89
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/savvycal.json",
      "live": {
        "slug": "savvycal",
        "probe": {
          "target": "https://api.savvycal.com/v1",
          "method": "get",
          "lastAt": "2026-11-04T22:02:57.017408527Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 165,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 166,
          "p95ms24h": 237,
          "samples24h": 68,
          "samples30d": 68,
          "days": [
            {
              "date": "2026-11-04",
              "probes": 68,
              "ok": 68
            }
          ]
        },
        "vendorStatus": {
          "page": "https://savvycal.instatus.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-04T21:26:44.192765993Z"
        },
        "securityTxt": {
          "url": "https://savvycal.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-05-03T00:00:00.000Z",
          "checkedAt": "2026-11-04T15:54:05.808454415Z"
        },
        "updatedAt": "2026-11-04T22:02:57.017408527Z"
      }
    },
    "edges": [
      {
        "by": 36,
        "category": "maintenance",
        "leads": "microsoft-graph-calendar",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "msgraph-sdk-python v1.65.0 on 22 October 2026 (30). Five Python SDK tags since 4 August (v1.61.0 on 5 August to v1.65.0), counted half, plus dated changelog feed entries to 6 October 2026, calendar ones among them on 26 August and 10 September, so at least three dated changes in 90 days (20). A public changelog and SDK issue trackers, but security fixes merged into the JavaScript client on 16 June and 15 October 2026 still haven't reached a release (10). Current SDKs in most languages, with the JavaScript client the exception at 3.0.7 from 19 September 2023 (10). Active tagging on the Python repository, none of it reaching the JavaScript package (6). 30+20+10+10+6 = 76.",
          "b": "Read as a closed service. The newest dated change is the MCP integration of 27 October 2026 on the updates board (30). It is the only dated entry since 7 July, so fewer than three in 90 days (0 of 20). A public updates board, a feature request board and a support address with a stated 24-hour reply within US Central business hours (10 of 15). No official SDKs (0). No package to assess (0). 30 + 0 + 10 + 0 + 0 = 40."
        },
        "scores": {
          "a": 76,
          "b": 40
        }
      },
      {
        "by": 35,
        "category": "ergonomics",
        "leads": "microsoft-graph-calendar",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "`$select`, `$top`, `bodyPreview` and `Prefer: outlook.body-content-type=\"text\"` keep event payloads small (23). `@odata.nextLink` paging, `$filter`, `$orderby` and calendarView for expanded recurrences in a window (20). Graph errors carry a code, message and request ID, and 429s say which throttle scope was hit (17). `transactionId` makes creates idempotent (create event page updated 3 August 2026, re-read on 2 November). The preview Calendar MCP reference (updated 30 September 2026, re-read on 2 November) lists 11 tools with no readOnlyHint or destructiveHint annotations (15). Official SDKs in .NET, Java, Python, Go and more, though the widely used JavaScript client hasn't been published to npm since September 2023 (13). 23+20+17+15+13 = 88.",
          "b": "List responses are sized by `limit` (default 20, at most 100) with no field selection. The MCP server lists 63 tools with no documented toolset or read-only list, though a client can ask for the `mcp:read` scope alone (10 of 25). Cursor pagination with `after`, `before` and `limit`, and date and status filters on events (17 of 20). Errors name the field, the failed validation and a limit count, which an agent can act on, but a 429 carries no wait time (14 of 20). No idempotency key on booking or link creation, and the MCP annotations could not be read; the docs say the assistant confirms before cancelling, deleting or inviting (6 of 20). Creating an event needs five fields, and there is no official SDK in any language (6 of 15). 10 + 17 + 14 + 6 + 6 = 53."
        },
        "scores": {
          "a": 88,
          "b": 53
        }
      },
      {
        "by": 22,
        "category": "security",
        "leads": "microsoft-graph-calendar",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "OAuth 2.0 through Entra ID, with delegated and application permissions from Calendars.ReadBasic (no bodies) through Calendars.Read to Calendars.ReadWrite (30). Calendars.ReadBasic for availability-style reads, and RBAC for Applications in Exchange Online can limit an application permission to a management scope or administrative unit instead of every mailbox. Nothing asks for confirmation before a delete (18). Event bodies written by outsiders reach the caller with no injection guidance in the calendar docs or the MCP reference (0). Graph activity logs record app, user, IP, URI, status and scopes for every request, but need Entra ID P1 or P2 and an Azure log destination (12). microsoft.com's security.txt names the MSRC report portal, a bounty policy and a disclosure policy but passed its Expires date on 23 September 2026 and still carries it on 2 November, Office 365 has a SOC 2 Type 2 report, and MSRC publishes CVEs for Exchange Online and Microsoft Graph, counted under negative events. Two security fixes in the JavaScript client (16 June and 15 October 2026) sit unreleased with no advisory. Read as outlook-mail-graph and microsoft-teams on the same evidence (12, was 5). 30+18+0+12+12 = 72.",
          "b": "OAuth 2 authorisation code apps with 2-hour access tokens and refresh tokens, and personal access tokens, both in the Authorization header only. The spec declares no scopes for either, and PAT expiry and revocation are not described. The MCP server uses OAuth 2.1 with PKCE S256, dynamic client registration, `mcp:read` and `mcp:write` scopes and a revocation endpoint (22 of 30). `mcp:read` gives a read-only MCP grant, and the vendor says the assistant asks before booking, cancelling, deleting or inviting. REST tokens have no read-only form (14 of 20). Invitee names, answers and metadata written by outsiders come back through events and webhooks with no injection guidance; the AI page says the assistant sees calendar conflicts but not event names (2 of 15). Webhook request logs and a Connected Apps list with revoke, but no per-call audit log for the operator (4 of 15). Valid security.txt to 2 May 2027, a security page and an SSDLC page, but no SOC 2 or ISO 27001 (the page says not yet) and no bug bounty (8 of 20). 22 + 14 + 2 + 4 + 8 = 50."
        },
        "scores": {
          "a": 72,
          "b": 50
        }
      },
      {
        "by": 19,
        "category": "schema",
        "leads": "microsoft-graph-calendar",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "OpenAPI for all of Graph v1.0 in microsoftgraph/msgraph-metadata, plus CSDL metadata (25). No llms.txt, but every learn.microsoft.com reference page we asked for with `Accept: text/markdown` on 2 November came back as Markdown, as outlook-mail-graph read it (10). Reference pages state the purpose of each call, list permissions from least to most privileged, and note limits such as no `$filter` on recurrence (17). Typed properties and enums in the metadata (13). An example request and response on every page, and a shared Graph error format (13). v1.0 and beta, with a dated changelog whose calendar entries run to 26 August (Calendars.Read.All and Calendars.ReadWrite.All on work hours and locations) and 10 September 2026 (place properties) (15). 25+10+17+13+13+15 = 93.",
          "b": "OpenAPI 3.0.0 at api.savvycal.com/v1/spec covers all 22 operations with 56 schemas; the MCP tools' schemas could not be read without signing in (23 of 25). llms.txt and a Markdown twin of every docs page (10). Only 8 of the 22 operations carry a description, and those state constraints (events must match an open slot, an invalid filter resets every filter) rather than when to choose another endpoint (10 of 20). Required flags on 14 of 43 parameters, 34 enum properties across the schemas, `limit` bounded 1 to 100, `until` at most 31 days after `from` (12 of 15). Example values on parameters and a documented error shape keyed by field, with 400, 401, 404, 422 and 429 declared per operation, but no full response examples (10 of 15). A /v1 path and a promise that changes are additive, with dated product updates on the feedback board but no API changelog (9 of 15). 23 + 10 + 10 + 12 + 10 + 9 = 74."
        },
        "scores": {
          "a": 93,
          "b": 74
        }
      },
      {
        "by": 5,
        "category": "reliability",
        "leads": "savvycal",
        "name": "Reliability",
        "reasons": {
          "a": "Graded on the v1.0 REST API. A public Microsoft service health page at status.cloud.microsoft (20), per the 1 October check. Its robots.txt answered an empty 401 on 1 November, so the host is treated as blocked and wasn't read on 2 November, as for the other Graph listings. No readable components or incident history (5). Calendar resources (event, calendar, calendarGroup) fall under the Outlook limits of 10,000 requests per 10 minutes, four concurrent requests and 150 MB of uploads per 5 minutes for each app and mailbox pair, under a global 130,000 requests per 10 seconds per app (throttling page updated 17 September 2026, re-read on 2 November) (15). 429 responses carry `Retry-After` and throttle headers with backoff guidance, and event creation takes a `transactionId` that Microsoft documents as reducing unnecessary retries on the server, so a retried create isn't doubled (15). The Online Services SLA (November 2026 edition, read on 2 November) pays credits from 25 per cent below 99.9 per cent uptime for Exchange Online, the service that holds every work calendar, but measures downtime as users unable to send or receive email with Outlook Web Access and has no Microsoft Graph entry. None of Exchange Online's four service levels (Outlook Web Access email, email delivery time, guaranteed delivery, email ingress and egress) measures calendar access, so a calendar outage isn't downtime under it. microsoft-teams and outlook-mail-graph take 7 because their levels measure the same function the API serves (messaging and meetings, sending and receiving email), and onedrive-sharepoint 10 because its level covers reading and writing the content its API reads and writes. Here no level covers what the API does (0). Calendar endpoints are generally available on v1.0 (10). 20+5+15+15+0+10 = 65.",
          "b": "Read with the hosted lines. Instatus page at savvycal.instatus.com with App, Microsoft 365, Google Calendar and Integrations components and a month-by-month history (20). No notices from June to November 2026 and 100 per cent App uptime each month, a clean record (30). The only limit with a number is in the OpenAPI spec, 10 event creations a minute per link, failed ones included; nothing covers the rest of the API (7 of 15). That 429 is declared with no Retry-After, backoff guidance or idempotency key, and webhooks are the only place retries are described (3 of 15). No SLA; the terms give the service as is (0). The v1 API is generally available and the MCP server, announced 27 October 2026, is not marked beta (10). 20 + 30 + 7 + 3 + 0 + 10 = 70."
        },
        "scores": {
          "a": 65,
          "b": 70
        }
      },
      {
        "by": 5,
        "category": "payments",
        "leads": "microsoft-graph-calendar",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 (0). Calendar endpoints aren't on the metered API list (re-read on 2 November, only SharePoint and OneDrive assignSensitivityLabel is metered) and Microsoft 365 plan prices are public, but work calendars need a licensed mailbox (15). Personal Outlook.com accounts work with delegated permissions at no cost and no card (20). A person registers an app in Entra and, for application permissions, an admin consents (0). 0+15+20+0 = 35.",
          "b": "No x402, MPP or L402 (0). Per-seat plan prices public, nothing per call (10). A Free plan with the API, webhooks and MCP server included and no card mentioned, though booking through a link needs Basic or Premium and there is no self-serve trial (20). A person signs up in a browser and approves the OAuth consent (0). 0 + 10 + 20 + 0 = 30."
        },
        "scores": {
          "a": 35,
          "b": 30
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Microsoft",
        "b": "SavvyCal, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://graph.microsoft.com/v1.0",
        "b": "https://api.savvycal.com/v1",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Your plan",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT (SDKs)",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "11",
        "b": "63",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "no",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-22",
        "b": "2026-10-27",
        "name": "Last release"
      },
      {
        "a": "2025-10-01",
        "b": "2026-01-21",
        "name": "Terms last updated"
      },
      {
        "a": "2026-09-01",
        "b": "2026-10-17",
        "name": "Privacy policy last updated"
      },
      {
        "a": "yes",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "834 stars, 2.7M npm/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "3/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Microsoft Graph Calendar API scores 58.7 (C) on agent readiness against SavvyCal API + MCP's 57 (C), and leads in 6 of 7 scored categories. SavvyCal API + MCP leads on reliability.",
        "question": "Which is better for AI agents, Microsoft Graph Calendar API or SavvyCal API + MCP?"
      },
      {
        "answer": "Microsoft Graph Calendar API uses an OAuth sign-in. SavvyCal API + MCP takes an API key or an OAuth sign-in.",
        "question": "Do Microsoft Graph Calendar API and SavvyCal API + MCP need an API key?"
      },
      {
        "answer": "Yes. Microsoft Graph Calendar API has a hosted endpoint at https://graph.microsoft.com/v1.0 and SavvyCal API + MCP at https://api.savvycal.com/v1.",
        "question": "Can an agent call Microsoft Graph Calendar API and SavvyCal API + MCP without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 93 against 74",
          "Agent ergonomics, 88 against 53",
          "Security \u0026 auth, 72 against 50",
          "Payments \u0026 pricing, 35 against 30",
          "Maintenance \u0026 community, 76 against 40"
        ],
        "also": null,
        "goodFor": "Agents working inside Microsoft 365 tenants, especially when they need meeting-time suggestions across people and rooms.",
        "slug": "microsoft-graph-calendar",
        "watchFor": "4 concurrent requests per app per mailbox"
      },
      {
        "aheadOn": [
          "Reliability, 70 against 65"
        ],
        "also": [
          "Free to start without a card",
          "No incidents deducted, where Microsoft Graph Calendar API loses 14 points for them"
        ],
        "goodFor": "An agent booking on a person's SavvyCal links or driving their account through the MCP server.",
        "slug": "savvycal",
        "watchFor": "No general rate limit documented. The spec names one 429, on creating events (10 a minute per link)"
      }
    ],
    "history": {
      "microsoft-graph-calendar": [
        {
          "causes": [
            "evidence",
            "correction"
          ],
          "date": "2026-11-02",
          "delta": -6.5,
          "from": 65.2,
          "fromGrade": "B",
          "to": 58.7,
          "toGrade": "C"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 65.1,
          "fromGrade": "B",
          "to": 65.2,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-08",
          "delta": -0.5,
          "from": 65.6,
          "fromGrade": "B",
          "to": 65.1,
          "toGrade": "B"
        }
      ],
      "savvycal": null
    },
    "job": {
      "capability": "calendar.read",
      "name": "Calendar access"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-microsoft-graph-calendar.json",
        "title": "Acuity Scheduling API vs Microsoft Graph Calendar API",
        "url": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-microsoft-graph-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-savvycal.json",
        "title": "Acuity Scheduling API vs SavvyCal API + MCP",
        "url": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-savvycal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agenda-hero-vs-microsoft-graph-calendar.json",
        "title": "Agenda Hero vs Microsoft Graph Calendar API",
        "url": "https://www.anchorterminal.com/compare/agenda-hero-vs-microsoft-graph-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/agenda-hero-vs-savvycal.json",
        "title": "Agenda Hero vs SavvyCal API + MCP",
        "url": "https://www.anchorterminal.com/compare/agenda-hero-vs-savvycal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apiroc-vs-microsoft-graph-calendar.json",
        "title": "Apiroc Unified Calendar API vs Microsoft Graph Calendar API",
        "url": "https://www.anchorterminal.com/compare/apiroc-vs-microsoft-graph-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/apiroc-vs-savvycal.json",
        "title": "Apiroc Unified Calendar API vs SavvyCal API + MCP",
        "url": "https://www.anchorterminal.com/compare/apiroc-vs-savvycal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-microsoft-graph-calendar.json",
        "title": "Aurinko Calendar API vs Microsoft Graph Calendar API",
        "url": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-microsoft-graph-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-savvycal.json",
        "title": "Aurinko Calendar API vs SavvyCal API + MCP",
        "url": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-savvycal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cal-com-vs-microsoft-graph-calendar.json",
        "title": "Cal.com API v2 + MCP vs Microsoft Graph Calendar API",
        "url": "https://www.anchorterminal.com/compare/cal-com-vs-microsoft-graph-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cal-com-vs-savvycal.json",
        "title": "Cal.com API v2 + MCP vs SavvyCal API + MCP",
        "url": "https://www.anchorterminal.com/compare/cal-com-vs-savvycal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/calendly-vs-microsoft-graph-calendar.json",
        "title": "Calendly API + MCP vs Microsoft Graph Calendar API",
        "url": "https://www.anchorterminal.com/compare/calendly-vs-microsoft-graph-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/calendly-vs-savvycal.json",
        "title": "Calendly API + MCP vs SavvyCal API + MCP",
        "url": "https://www.anchorterminal.com/compare/calendly-vs-savvycal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cozi-vs-microsoft-graph-calendar.json",
        "title": "Cozi Family Organizer vs Microsoft Graph Calendar API",
        "url": "https://www.anchorterminal.com/compare/cozi-vs-microsoft-graph-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cozi-vs-savvycal.json",
        "title": "Cozi Family Organizer vs SavvyCal API + MCP",
        "url": "https://www.anchorterminal.com/compare/cozi-vs-savvycal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cronofy-vs-microsoft-graph-calendar.json",
        "title": "Cronofy API vs Microsoft Graph Calendar API",
        "url": "https://www.anchorterminal.com/compare/cronofy-vs-microsoft-graph-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cronofy-vs-savvycal.json",
        "title": "Cronofy API vs SavvyCal API + MCP",
        "url": "https://www.anchorterminal.com/compare/cronofy-vs-savvycal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-calendar-api-vs-microsoft-graph-calendar.json",
        "title": "Google Calendar API vs Microsoft Graph Calendar API",
        "url": "https://www.anchorterminal.com/compare/google-calendar-api-vs-microsoft-graph-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/google-calendar-api-vs-savvycal.json",
        "title": "Google Calendar API vs SavvyCal API + MCP",
        "url": "https://www.anchorterminal.com/compare/google-calendar-api-vs-savvycal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-nylas-calendar.json",
        "title": "Microsoft Graph Calendar API vs Nylas Calendar and Scheduler API",
        "url": "https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-nylas-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-zoom-scheduler.json",
        "title": "Microsoft Graph Calendar API vs Zoom Scheduler API",
        "url": "https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-zoom-scheduler"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nylas-calendar-vs-savvycal.json",
        "title": "Nylas Calendar and Scheduler API vs SavvyCal API + MCP",
        "url": "https://www.anchorterminal.com/compare/nylas-calendar-vs-savvycal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/savvycal-vs-youcanbookme.json",
        "title": "SavvyCal API + MCP vs YouCanBookMe API",
        "url": "https://www.anchorterminal.com/compare/savvycal-vs-youcanbookme"
      },
      {
        "json": "https://www.anchorterminal.com/compare/savvycal-vs-zoom-scheduler.json",
        "title": "SavvyCal API + MCP vs Zoom Scheduler API",
        "url": "https://www.anchorterminal.com/compare/savvycal-vs-zoom-scheduler"
      },
      {
        "json": "https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-youcanbookme.json",
        "title": "Microsoft Graph Calendar API vs YouCanBookMe API",
        "url": "https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-youcanbookme"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 5,
        "edge": "savvycal",
        "key": "reliability",
        "microsoft-graph-calendar": 65,
        "name": "Reliability",
        "savvycal": 70,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 19,
        "edge": "microsoft-graph-calendar",
        "key": "schema",
        "microsoft-graph-calendar": 93,
        "name": "Schema \u0026 documentation",
        "savvycal": 74,
        "weight": 13
      },
      {
        "by": 35,
        "edge": "microsoft-graph-calendar",
        "key": "ergonomics",
        "microsoft-graph-calendar": 88,
        "name": "Agent ergonomics",
        "savvycal": 53,
        "weight": 13
      },
      {
        "by": 22,
        "edge": "microsoft-graph-calendar",
        "key": "security",
        "microsoft-graph-calendar": 72,
        "name": "Security \u0026 auth",
        "savvycal": 50,
        "weight": 14
      },
      {
        "by": 5,
        "edge": "microsoft-graph-calendar",
        "key": "payments",
        "microsoft-graph-calendar": 35,
        "name": "Payments \u0026 pricing",
        "savvycal": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 36,
        "edge": "microsoft-graph-calendar",
        "key": "maintenance",
        "microsoft-graph-calendar": 76,
        "name": "Maintenance \u0026 community",
        "savvycal": 40,
        "weight": 7
      },
      {
        "by": 3,
        "edge": "microsoft-graph-calendar",
        "key": "transparency",
        "microsoft-graph-calendar": 76,
        "name": "Transparency \u0026 trust",
        "savvycal": 73,
        "weight": 7
      }
    ],
    "summary": "Microsoft Graph Calendar API scores 58.7 (C) on agent readiness against SavvyCal API + MCP's 57 (C), and leads in 6 of 7 scored categories. SavvyCal API + MCP leads on reliability. Both do calendar access.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "microsoft-graph-calendar": "findMeetingTimes suggests slots across attendees and rooms, getSchedule returns free/busy for many people, and `transactionId` stops a retried create from double-booking. Each app gets four concurrent requests per mailbox. Microsoft published eight Critical, already mitigated CVEs for Exchange Online and Graph in 2026, and the JavaScript client's two security fixes remain unreleased.",
      "savvycal": "A small REST API with a public OpenAPI spec, cursor pagination and signed webhooks, plus a hosted MCP server with 63 tools, OAuth 2.1 and read and write scopes, on every plan. No general rate limit, idempotency key, SDK or certification was found, and booking through a link needs a paid seat."
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-savvycal",
    "json": "https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-savvycal.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-savvycal.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-savvycal.min.md"
  },
  "markdown": "Microsoft Graph Calendar API scores 58.7 (C) on agent readiness against SavvyCal API + MCP's 57 (C), and leads in 6 of 7 scored categories. SavvyCal API + MCP leads on reliability. Both do calendar access.\n\n- Microsoft Graph Calendar API: grade C, 58.7/100, rank #662 of 1349. Markdown https://www.anchorterminal.com/tools/microsoft-graph-calendar.md · JSON https://www.anchorterminal.com/api/v1/tools/microsoft-graph-calendar.json\n- SavvyCal API + MCP: grade C, 57/100, rank #726 of 1349. Markdown https://www.anchorterminal.com/tools/savvycal.md · JSON https://www.anchorterminal.com/api/v1/tools/savvycal.json\n- Best calendar and scheduling APIs for AI agents: https://www.anchorterminal.com/best/scheduling/index.md\n- All 89 scheduling comparisons: https://www.anchorterminal.com/compare/scheduling/index.md\n\n## Which one, for what\n\n### Microsoft Graph Calendar API (C)\n\nGood for: Agents working inside Microsoft 365 tenants, especially when they need meeting-time suggestions across people and rooms.\n\nAhead on:\n- Schema \u0026 documentation, 93 against 74\n- Agent ergonomics, 88 against 53\n- Security \u0026 auth, 72 against 50\n- Payments \u0026 pricing, 35 against 30\n- Maintenance \u0026 community, 76 against 40\n\nWatch for: 4 concurrent requests per app per mailbox\n\n### SavvyCal API + MCP (C)\n\nGood for: An agent booking on a person's SavvyCal links or driving their account through the MCP server.\n\nAhead on:\n- Reliability, 70 against 65\n\nAlso in its favour:\n- Free to start without a card\n- No incidents deducted, where Microsoft Graph Calendar API loses 14 points for them\n\nWatch for: No general rate limit documented. The spec names one 429, on creating events (10 a minute per link)\n\n\n## Why the edge\n\n### Maintenance \u0026 community: Microsoft Graph Calendar API +36\n\n- Microsoft Graph Calendar API (76): msgraph-sdk-python v1.65.0 on 22 October 2026 (30). Five Python SDK tags since 4 August (v1.61.0 on 5 August to v1.65.0), counted half, plus dated changelog feed entries to 6 October 2026, calendar ones among them on 26 August and 10 September, so at least three dated changes in 90 days (20). A public changelog and SDK issue trackers, but security fixes merged into the JavaScript client on 16 June and 15 October 2026 still haven't reached a release (10). Current SDKs in most languages, with the JavaScript client the exception at 3.0.7 from 19 September 2023 (10). Active tagging on the Python repository, none of it reaching the JavaScript package (6). 30+20+10+10+6 = 76.\n- SavvyCal API + MCP (40): Read as a closed service. The newest dated change is the MCP integration of 27 October 2026 on the updates board (30). It is the only dated entry since 7 July, so fewer than three in 90 days (0 of 20). A public updates board, a feature request board and a support address with a stated 24-hour reply within US Central business hours (10 of 15). No official SDKs (0). No package to assess (0). 30 + 0 + 10 + 0 + 0 = 40.\n\n### Agent ergonomics: Microsoft Graph Calendar API +35\n\n- Microsoft Graph Calendar API (88): `$select`, `$top`, `bodyPreview` and `Prefer: outlook.body-content-type=\"text\"` keep event payloads small (23). `@odata.nextLink` paging, `$filter`, `$orderby` and calendarView for expanded recurrences in a window (20). Graph errors carry a code, message and request ID, and 429s say which throttle scope was hit (17). `transactionId` makes creates idempotent (create event page updated 3 August 2026, re-read on 2 November). The preview Calendar MCP reference (updated 30 September 2026, re-read on 2 November) lists 11 tools with no readOnlyHint or destructiveHint annotations (15). Official SDKs in .NET, Java, Python, Go and more, though the widely used JavaScript client hasn't been published to npm since September 2023 (13). 23+20+17+15+13 = 88.\n- SavvyCal API + MCP (53): List responses are sized by `limit` (default 20, at most 100) with no field selection. The MCP server lists 63 tools with no documented toolset or read-only list, though a client can ask for the `mcp:read` scope alone (10 of 25). Cursor pagination with `after`, `before` and `limit`, and date and status filters on events (17 of 20). Errors name the field, the failed validation and a limit count, which an agent can act on, but a 429 carries no wait time (14 of 20). No idempotency key on booking or link creation, and the MCP annotations could not be read; the docs say the assistant confirms before cancelling, deleting or inviting (6 of 20). Creating an event needs five fields, and there is no official SDK in any language (6 of 15). 10 + 17 + 14 + 6 + 6 = 53.\n\n### Security \u0026 auth: Microsoft Graph Calendar API +22\n\n- Microsoft Graph Calendar API (72): OAuth 2.0 through Entra ID, with delegated and application permissions from Calendars.ReadBasic (no bodies) through Calendars.Read to Calendars.ReadWrite (30). Calendars.ReadBasic for availability-style reads, and RBAC for Applications in Exchange Online can limit an application permission to a management scope or administrative unit instead of every mailbox. Nothing asks for confirmation before a delete (18). Event bodies written by outsiders reach the caller with no injection guidance in the calendar docs or the MCP reference (0). Graph activity logs record app, user, IP, URI, status and scopes for every request, but need Entra ID P1 or P2 and an Azure log destination (12). microsoft.com's security.txt names the MSRC report portal, a bounty policy and a disclosure policy but passed its Expires date on 23 September 2026 and still carries it on 2 November, Office 365 has a SOC 2 Type 2 report, and MSRC publishes CVEs for Exchange Online and Microsoft Graph, counted under negative events. Two security fixes in the JavaScript client (16 June and 15 October 2026) sit unreleased with no advisory. Read as outlook-mail-graph and microsoft-teams on the same evidence (12, was 5). 30+18+0+12+12 = 72.\n- SavvyCal API + MCP (50): OAuth 2 authorisation code apps with 2-hour access tokens and refresh tokens, and personal access tokens, both in the Authorization header only. The spec declares no scopes for either, and PAT expiry and revocation are not described. The MCP server uses OAuth 2.1 with PKCE S256, dynamic client registration, `mcp:read` and `mcp:write` scopes and a revocation endpoint (22 of 30). `mcp:read` gives a read-only MCP grant, and the vendor says the assistant asks before booking, cancelling, deleting or inviting. REST tokens have no read-only form (14 of 20). Invitee names, answers and metadata written by outsiders come back through events and webhooks with no injection guidance; the AI page says the assistant sees calendar conflicts but not event names (2 of 15). Webhook request logs and a Connected Apps list with revoke, but no per-call audit log for the operator (4 of 15). Valid security.txt to 2 May 2027, a security page and an SSDLC page, but no SOC 2 or ISO 27001 (the page says not yet) and no bug bounty (8 of 20). 22 + 14 + 2 + 4 + 8 = 50.\n\n### Schema \u0026 documentation: Microsoft Graph Calendar API +19\n\n- Microsoft Graph Calendar API (93): OpenAPI for all of Graph v1.0 in microsoftgraph/msgraph-metadata, plus CSDL metadata (25). No llms.txt, but every learn.microsoft.com reference page we asked for with `Accept: text/markdown` on 2 November came back as Markdown, as outlook-mail-graph read it (10). Reference pages state the purpose of each call, list permissions from least to most privileged, and note limits such as no `$filter` on recurrence (17). Typed properties and enums in the metadata (13). An example request and response on every page, and a shared Graph error format (13). v1.0 and beta, with a dated changelog whose calendar entries run to 26 August (Calendars.Read.All and Calendars.ReadWrite.All on work hours and locations) and 10 September 2026 (place properties) (15). 25+10+17+13+13+15 = 93.\n- SavvyCal API + MCP (74): OpenAPI 3.0.0 at api.savvycal.com/v1/spec covers all 22 operations with 56 schemas; the MCP tools' schemas could not be read without signing in (23 of 25). llms.txt and a Markdown twin of every docs page (10). Only 8 of the 22 operations carry a description, and those state constraints (events must match an open slot, an invalid filter resets every filter) rather than when to choose another endpoint (10 of 20). Required flags on 14 of 43 parameters, 34 enum properties across the schemas, `limit` bounded 1 to 100, `until` at most 31 days after `from` (12 of 15). Example values on parameters and a documented error shape keyed by field, with 400, 401, 404, 422 and 429 declared per operation, but no full response examples (10 of 15). A /v1 path and a promise that changes are additive, with dated product updates on the feedback board but no API changelog (9 of 15). 23 + 10 + 10 + 12 + 10 + 9 = 74.\n\n### Reliability: SavvyCal API + MCP +5\n\n- Microsoft Graph Calendar API (65): Graded on the v1.0 REST API. A public Microsoft service health page at status.cloud.microsoft (20), per the 1 October check. Its robots.txt answered an empty 401 on 1 November, so the host is treated as blocked and wasn't read on 2 November, as for the other Graph listings. No readable components or incident history (5). Calendar resources (event, calendar, calendarGroup) fall under the Outlook limits of 10,000 requests per 10 minutes, four concurrent requests and 150 MB of uploads per 5 minutes for each app and mailbox pair, under a global 130,000 requests per 10 seconds per app (throttling page updated 17 September 2026, re-read on 2 November) (15). 429 responses carry `Retry-After` and throttle headers with backoff guidance, and event creation takes a `transactionId` that Microsoft documents as reducing unnecessary retries on the server, so a retried create isn't doubled (15). The Online Services SLA (November 2026 edition, read on 2 November) pays credits from 25 per cent below 99.9 per cent uptime for Exchange Online, the service that holds every work calendar, but measures downtime as users unable to send or receive email with Outlook Web Access and has no Microsoft Graph entry. None of Exchange Online's four service levels (Outlook Web Access email, email delivery time, guaranteed delivery, email ingress and egress) measures calendar access, so a calendar outage isn't downtime under it. microsoft-teams and outlook-mail-graph take 7 because their levels measure the same function the API serves (messaging and meetings, sending and receiving email), and onedrive-sharepoint 10 because its level covers reading and writing the content its API reads and writes. Here no level covers what the API does (0). Calendar endpoints are generally available on v1.0 (10). 20+5+15+15+0+10 = 65.\n- SavvyCal API + MCP (70): Read with the hosted lines. Instatus page at savvycal.instatus.com with App, Microsoft 365, Google Calendar and Integrations components and a month-by-month history (20). No notices from June to November 2026 and 100 per cent App uptime each month, a clean record (30). The only limit with a number is in the OpenAPI spec, 10 event creations a minute per link, failed ones included; nothing covers the rest of the API (7 of 15). That 429 is declared with no Retry-After, backoff guidance or idempotency key, and webhooks are the only place retries are described (3 of 15). No SLA; the terms give the service as is (0). The v1 API is generally available and the MCP server, announced 27 October 2026, is not marked beta (10). 20 + 30 + 7 + 3 + 0 + 10 = 70.\n\n### Payments \u0026 pricing: Microsoft Graph Calendar API +5\n\n- Microsoft Graph Calendar API (35): No x402, MPP or L402 (0). Calendar endpoints aren't on the metered API list (re-read on 2 November, only SharePoint and OneDrive assignSensitivityLabel is metered) and Microsoft 365 plan prices are public, but work calendars need a licensed mailbox (15). Personal Outlook.com accounts work with delegated permissions at no cost and no card (20). A person registers an app in Entra and, for application permissions, an admin consents (0). 0+15+20+0 = 35.\n- SavvyCal API + MCP (30): No x402, MPP or L402 (0). Per-seat plan prices public, nothing per call (10). A Free plan with the API, webhooks and MCP server included and no card mentioned, though booking through a link needs Basic or Premium and there is no self-serve trial (20). A person signs up in a browser and approves the OAuth consent (0). 0 + 10 + 20 + 0 = 30.\n\n## Score by category\n\n| Category | Weight | Microsoft Graph Calendar API | SavvyCal API + MCP | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 65 | 70 | SavvyCal API + MCP +5 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 93 | 74 | Microsoft Graph Calendar API +19 |\n| Agent ergonomics | 13% (16.2 this run) | 88 | 53 | Microsoft Graph Calendar API +35 |\n| Security \u0026 auth | 14% (17.5 this run) | 72 | 50 | Microsoft Graph Calendar API +22 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 35 | 30 | Microsoft Graph Calendar API +5 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 76 | 40 | Microsoft Graph Calendar API +36 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 76 | 73 | Microsoft Graph Calendar API +3 |\n| Negative events | ≤15 | -14 | 0 | |\n| **Total** | | **58.7 · C** | **57 · C** | |\n\n## Facts side by side\n\n| Fact | Microsoft Graph Calendar API | SavvyCal API + MCP |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Microsoft | SavvyCal, Inc. |\n| Hosted endpoint | `https://graph.microsoft.com/v1.0` | `https://api.savvycal.com/v1` |\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) | none |\n| Tools exposed | 11 | 63 |\n| Read-only variant documented | no | no |\n| llms.txt | no | yes |\n| Last release | 2026-10-22 | 2026-10-27 |\n| Terms last updated | 2025-10-01 | 2026-01-21 |\n| Privacy policy last updated | 2026-09-01 | 2026-10-17 |\n| Customer content may train models | yes | not found in the text |\n| Terms restrict automated access | yes | yes |\n| Terms restrict benchmarking | yes | yes |\n| Terms or service can change without notice | yes | yes |\n| Arbitration or class-action waiver | not found in the text | yes |\n| Popularity | 834 stars, 2.7M npm/wk | none |\n| Agent reviews | 3/5 (2) | none |\n\n## How the scores have moved\n\n### Microsoft Graph Calendar API\n\n- -6.5 on 2 November 2026 (B to C): new evidence, correction\n- +0.1 on 27 October 2026: checklist\n- -0.5 on 8 October 2026: checklist\n\n### SavvyCal API + MCP\n\nNo score change since it was listed.\n\n## Verdicts\n\n**Microsoft Graph Calendar API.** findMeetingTimes suggests slots across attendees and rooms, getSchedule returns free/busy for many people, and `transactionId` stops a retried create from double-booking. Each app gets four concurrent requests per mailbox. Microsoft published eight Critical, already mitigated CVEs for Exchange Online and Graph in 2026, and the JavaScript client's two security fixes remain unreleased.\n\n**SavvyCal API + MCP.** A small REST API with a public OpenAPI spec, cursor pagination and signed webhooks, plus a hosted MCP server with 63 tools, OAuth 2.1 and read and write scopes, on every plan. No general rate limit, idempotency key, SDK or certification was found, and booking through a link needs a paid seat.\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. Treat event bodies as untrusted input, and ask for Calendars.ReadBasic when you don't need them\n\n### SavvyCal API + MCP\n\n1. Call GET /v1/links/{link_id}/slots with `from` and `until` (at most 31 days apart) and book only a returned slot; POST /v1/links/{link_id}/events refuses other times with 422\n2. Keep event creation under 10 requests a minute per link, failed attempts included, or expect 429 with no Retry-After\n3. Page with the `after` and `before` cursors from `metadata` and `limit` up to 100; an invalid filter value resets every filter to its default\n4. Connect the MCP server with a client that supports dynamic client registration, and request `mcp:read` when the task only reads\n5. Verify webhooks with HMAC-SHA256 over the raw body against `x-savvycal-signature` and answer 2xx quickly\n\n## Questions\n\n### Which is better for AI agents, Microsoft Graph Calendar API or SavvyCal API + MCP?\n\nMicrosoft Graph Calendar API scores 58.7 (C) on agent readiness against SavvyCal API + MCP's 57 (C), and leads in 6 of 7 scored categories. SavvyCal API + MCP leads on reliability.\n\n### Do Microsoft Graph Calendar API and SavvyCal API + MCP need an API key?\n\nMicrosoft Graph Calendar API uses an OAuth sign-in. SavvyCal API + MCP takes an API key or an OAuth sign-in.\n\n### Can an agent call Microsoft Graph Calendar API and SavvyCal API + MCP without installing anything?\n\nYes. Microsoft Graph Calendar API has a hosted endpoint at https://graph.microsoft.com/v1.0 and SavvyCal API + MCP at https://api.savvycal.com/v1.\n\n\n## For agents\n\n- This comparison as JSON: https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-savvycal.json, and with the fewest tokens: https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-savvycal.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"microsoft-graph-calendar\", \"b\": \"savvycal\"}`. From a terminal: `anchor compare microsoft-graph-calendar savvycal`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/microsoft-graph-calendar.json and https://www.anchorterminal.com/api/v1/tools/savvycal.json\n\n## Other comparisons with Microsoft Graph Calendar API or SavvyCal API + MCP\n\n- [Acuity Scheduling API vs Microsoft Graph Calendar API](https://www.anchorterminal.com/compare/acuity-scheduling-vs-microsoft-graph-calendar.md)\n- [Acuity Scheduling API vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/acuity-scheduling-vs-savvycal.md)\n- [Agenda Hero vs Microsoft Graph Calendar API](https://www.anchorterminal.com/compare/agenda-hero-vs-microsoft-graph-calendar.md)\n- [Agenda Hero vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/agenda-hero-vs-savvycal.md)\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 SavvyCal API + MCP](https://www.anchorterminal.com/compare/apiroc-vs-savvycal.md)\n- [Aurinko Calendar API vs Microsoft Graph Calendar API](https://www.anchorterminal.com/compare/aurinko-calendar-vs-microsoft-graph-calendar.md)\n- [Aurinko Calendar API vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/aurinko-calendar-vs-savvycal.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 SavvyCal API + MCP](https://www.anchorterminal.com/compare/cal-com-vs-savvycal.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 SavvyCal API + MCP](https://www.anchorterminal.com/compare/calendly-vs-savvycal.md)\n- [Cozi Family Organizer vs Microsoft Graph Calendar API](https://www.anchorterminal.com/compare/cozi-vs-microsoft-graph-calendar.md)\n- [Cozi Family Organizer vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/cozi-vs-savvycal.md)\n- [Cronofy API vs Microsoft Graph Calendar API](https://www.anchorterminal.com/compare/cronofy-vs-microsoft-graph-calendar.md)\n- [Cronofy API vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/cronofy-vs-savvycal.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 SavvyCal API + MCP](https://www.anchorterminal.com/compare/google-calendar-api-vs-savvycal.md)\n- [Microsoft Graph Calendar API vs Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-nylas-calendar.md)\n- [Microsoft Graph Calendar API vs Zoom Scheduler API](https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-zoom-scheduler.md)\n- [Nylas Calendar and Scheduler API vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/nylas-calendar-vs-savvycal.md)\n- [SavvyCal API + MCP vs YouCanBookMe API](https://www.anchorterminal.com/compare/savvycal-vs-youcanbookme.md)\n- [SavvyCal API + MCP vs Zoom Scheduler API](https://www.anchorterminal.com/compare/savvycal-vs-zoom-scheduler.md)\n- [Microsoft Graph Calendar API vs YouCanBookMe API](https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-youcanbookme.md)\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "attributionRequired": true,
    "credit": "CC BY 4.0, credit Anchor Terminal and link the page or API address you took it from (https://www.anchorterminal.com/terms/#data)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-11-04",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.7",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run",
    "terms": "https://www.anchorterminal.com/terms/#data"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Compare",
        "url": "https://www.anchorterminal.com/compare/"
      },
      {
        "name": "Microsoft Graph Calendar API vs SavvyCal API + MCP",
        "url": ""
      }
    ],
    "description": "Microsoft Graph Calendar scores 58.7 (C) to SavvyCal's 57 (C) for calendar access. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Microsoft Graph Calendar API C 58.7",
      "SavvyCal API + MCP C 57",
      "scores"
    ],
    "h1": "Microsoft Graph Calendar API vs SavvyCal API + MCP",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/microsoft-graph-calendar-vs-savvycal",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Microsoft Graph Calendar vs SavvyCal for AI agents (2026)",
    "toc": null,
    "updated": "2026-11-04",
    "url": "https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-savvycal"
  },
  "tokens": {
    "markdown": 5450,
    "slim": 3330
  },
  "version": 1
}
