{
  "data": {
    "a": {
      "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",
      "dns": "nylas-calendar.grade.anchorterminal.com",
      "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 or a Nylas IAM API key as a Bearer token. IAM keys (since 6 October 2026) are bound to one grant, workspace, application or organisation with roles and permissions, and always expire. 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 either 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 credit 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 ($43 annual) with 25 email and calendar accounts ($2.00 each after, $1.75 annual), 35 calendar-only accounts ($1.50 each after, $1.35 annual), 70 Notetaker hours then $0.70 an hour, and 50 Agent Accounts. Enterprise is custom, with a 99.99% availability SLA on annual contracts (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-10-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 75.5,
        "grade": "BB",
        "agentReady": true,
        "rank": 51,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 2,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 71,
          "maintenance": 88,
          "payments": 40,
          "reliability": 72,
          "schema": 91,
          "security": 85,
          "transparency": 82
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-01"
        },
        "negative": 0,
        "verdict": "One schema across Google, Microsoft 365, Exchange EWS, iCloud and virtual calendars, and since 6 October IAM keys can limit an agent to one calendar grant with chosen permissions. Event writes take no idempotency key, and the MCP's confirmation step covers email sends, not event changes or deletions.",
        "bestFor": "Products that need read, write and availability across every major provider plus email on one grant, from a handful of users upwards.",
        "strengths": [
          "One schema across Google, Microsoft 365, Exchange EWS, iCloud and virtual calendars",
          "IAM API keys bind an agent to one grant with chosen permissions, always expire and are logged for 400 days",
          "Free plan with 5 connected accounts and no card",
          "MCP docs warn about hidden instructions in calendar events and tell agents to treat them as untrusted",
          "OpenAPI 3.1 file with 244 operations and a dated changelog with 20 entries between 15 September and 30 October 2026"
        ],
        "weaknesses": [
          "Application API keys still reach every grant, and the IAM pages name no calendar permission",
          "No idempotency key on event writes, only on email send",
          "The MCP's confirmation step covers email sends only, not event creation, updates or deletion",
          "Delayed or missing webhooks across all providers for about five hours on 19 August 2026",
          "38 MCP tools load at once with no toolsets, so a calendar-only agent carries the email tools too"
        ],
        "agentNotes": [
          "Address calendar calls to /v3/grants/\u003cgrant_id\u003e, one grant per connected account",
          "Use an IAM API key bound to the one grant the agent needs rather than the application key",
          "List events in the window before retrying a create, since event writes have no idempotency key",
          "Keep availability requests within 732 days, the cap since 10 October 2026",
          "On 429, use the passed-through `Retry-After` if present, otherwise back off per grant"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 3,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "BB",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 75.5
          }
        ],
        "editorialScores": {
          "ergonomics": 71,
          "maintenance": 88,
          "payments": 40,
          "reliability": 72,
          "schema": 91,
          "security": 85,
          "transparency": 67
        },
        "provenanceScore": 96,
        "checked": {
          "categories": {
            "ergonomics": "2026-11-01",
            "maintenance": "2026-11-01",
            "payments": "2026-11-01",
            "reliability": "2026-11-01",
            "schema": "2026-11-01",
            "security": "2026-11-01",
            "transparency": "2026-11-01"
          },
          "last": "2026-11-01",
          "lastMoved": "2026-11-01",
          "oldest": "2026-11-01",
          "stale": false,
          "staleAfterDays": 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"
      },
      "sameCompany": [
        "nylas-notetaker",
        "nylas-email"
      ],
      "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 calendar-only account on Pro annual",
          "unit": "account-month",
          "usd": 1.35
        },
        {
          "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": "valid",
        "checked": "2026-11-01",
        "notes": [
          "The terms (updated 23 June 2025) name Nylas, Inc. in Palo Alto, California, under California law with arbitration.",
          "developer.nylas.com/.well-known/security.txt is an RFC 9116 file with security@nylas.com as contact and Policy https://www.nylas.com/security/, expiring on 1 August 2027. www.nylas.com/.well-known/security.txt returns 404.",
          "The status page for the v3 API is status-v3.nylas.com."
        ],
        "score": 96
      },
      "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-11-04T22:02:49.153477969Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 170,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 175,
          "p95ms24h": 246,
          "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-v3.nylas.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-04T22:01:09.058111966Z"
        },
        "versions": [
          {
            "registry": "github",
            "name": "nylas/nylas-nodejs",
            "version": "v8.5.0",
            "released": "2026-11-04",
            "seenAt": "2026-11-04T20:40:39.961163038Z"
          },
          {
            "registry": "npm",
            "name": "nylas",
            "version": "8.5.0",
            "seenAt": "2026-11-04T20:40:38.842013838Z"
          },
          {
            "registry": "pypi",
            "name": "nylas",
            "version": "6.18.0",
            "released": "2026-09-30",
            "seenAt": "2026-11-04T20:40:39.626274249Z"
          }
        ],
        "githubStars": 180,
        "npmWeekly": 547955,
        "pypiWeekly": 122618,
        "securityTxt": {
          "url": "https://nylas.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-04T15:53:04.264086343Z"
        },
        "llmsTxt": {
          "url": "https://developer.nylas.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-04T15:23:40.564288847Z"
        },
        "domain": {
          "domain": "nylas.com",
          "registered": "2001-11-07",
          "source": "https://rdap.verisign.com/com/v1/domain/nylas.com",
          "checkedAt": "2026-11-01T14:23:35.373653199Z"
        },
        "pages": [
          {
            "url": "https://developer.nylas.com/docs/changelogs/",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-04T08:18:19.35188913Z",
            "changedAt": "2026-10-31T06:07:27.740116772Z",
            "fingerprint": "bd9a2008a70b"
          },
          {
            "url": "https://developer.nylas.com/docs/changelogs/2026-10-10-availability-metadata-and-provider-fixes/",
            "kind": "deprecations",
            "status": 200,
            "checkedAt": "2026-11-04T08:18:23.522071043Z",
            "changedAt": "2026-10-31T06:07:31.93033799Z",
            "fingerprint": "f39b8f77f7ec"
          },
          {
            "url": "https://www.nylas.com/pricing/",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-04T08:43:00.986942987Z",
            "changedAt": "2026-10-30T05:58:26.391023995Z",
            "fingerprint": "7331ddea70df"
          },
          {
            "url": "https://www.nylas.com/privacy-policy/",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-04T08:43:02.562173764Z",
            "changedAt": "2026-10-30T05:58:26.881176912Z",
            "fingerprint": "98943bc01feb"
          },
          {
            "url": "https://www.nylas.com/legal/terms/",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-04T08:42:58.055948265Z",
            "changedAt": "2026-10-30T05:58:21.745601982Z",
            "fingerprint": "97e8708900a7"
          }
        ],
        "github": {
          "repo": "nylas/nylas-nodejs",
          "checkedAt": "2026-11-02T09:11:28.143578213Z",
          "stars": 181,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2026-10-21T18:59:14Z",
          "openIssues": 4,
          "openPRs": 4,
          "issuesOpened90d": 1,
          "issuesClosed90d": 0,
          "prsMerged90d": 4,
          "ci": {
            "branch": "main",
            "runs": 50,
            "success": 49,
            "failure": 1,
            "other": 0,
            "latest": "success",
            "latestAt": "2026-10-13T16:22:32Z"
          },
          "replies": {
            "sampled": 25,
            "unanswered": 3,
            "medianDays": 10
          }
        },
        "updatedAt": "2026-11-04T22:02:49.153477969Z"
      }
    },
    "answer": "Nylas Calendar and Scheduler API scores 75.5 (BB) on agent readiness against SavvyCal API + MCP's 57 (C), and leads in every scored category.",
    "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": 48,
        "category": "maintenance",
        "leads": "nylas-calendar",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "Changelog entries up to 30 October 2026, the last calendar-specific one on 22 October with event webhook, recurring cancellation and Microsoft availability fixes (30). 20 dated changelog entries between 15 September and 30 October (20). Public dated changelog, open SDK repositories with commits to 30 September (Python) and 13 October (Node), and support (15). Current official SDKs (15). nylas-python v6.18.0 on 30 September 2026. The Node SDK's package.json is still 8.4.0 (24 June 2026) with unreleased commits on main to 13 October (8). 30+20+15+15+8 = 88.",
          "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": 88,
          "b": 40
        }
      },
      {
        "by": 35,
        "category": "security",
        "leads": "nylas-calendar",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "Nylas IAM, launched 6 October 2026, issues API keys bound to one grant, workspace, application or organisation with roles and permissions. Every new IAM key expires, keys can be disabled or rotated, and the IAM guide (re-read 1 November) shows principals and credentials created and rotated through a public /v3/iam API once a first management key is made in the Dashboard. End users connect through OAuth with scopes the app picks. Application keys still reach every grant, so 1 is held back as for nylas-email, and 1 more because the IAM pages name no calendar permission, as nylas-notetaker holds back for Notetaker (28). A principal can be bound to one grant with read permissions, the agent security page shows a scheduling agent limited to reading calendars and creating events, and anything outside the binding answers 403. The MCP confirmation step covers email sends only, so creating, updating or deleting an event needs no confirmation. 3 below nylas-email's 17, which has the send confirmation (14). The MCP and agent security docs say event descriptions and locations can carry hidden instructions and tell agents to treat calendar content as untrusted (13). IAM Access Activity records allowed and denied API, authentication and MCP requests for 400 days with links to request logs, and Dashboard logs are kept 14 days. Requests made with an application key appear only in the logs (13). SOC 2 Type II, ISO 27001 and 27701, CSA STAR, an annual penetration test and a private bug bounty with security@nylas.com, per the 1 October check, and an RFC 9116 security.txt on developer.nylas.com valid to 1 August 2027. www.nylas.com still has none. nylas-email scores this 17 (17). 28+14+13+13+17 = 85.",
          "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": 85,
          "b": 50
        }
      },
      {
        "by": 18,
        "category": "ergonomics",
        "leads": "nylas-calendar",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "38 MCP tools with no toolsets found on 1 November (5), plus 5 for `limit` and `select` field selection on the REST API (10). Page tokens and time filters on event lists (18). Typed errors with a request ID and a provider error passed through, and a retry table (18). The MCP needs a confirmation call before sending mail, but event create, update and delete need none, event writes have no idempotency key and we found no tool annotations (10). Official SDKs in Node, Python and more (15). 10+18+18+10+15 = 71.",
          "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": 71,
          "b": 53
        }
      },
      {
        "by": 17,
        "category": "schema",
        "leads": "nylas-calendar",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "OpenAPI 3.1 file at developer.nylas.com/openapi.json with 140 paths and 244 operations on 1 November, 20 of the paths and 34 operations for calendars, events, availability and scheduling (25). llms.txt and Markdown docs (10). Guides say when to use each API, and the MCP page lists each tool with a one-line purpose and no when-not-to guidance (15). Typed parameters in the reference (12). An errors page with a JSON shape (`type`, `message`, `provider_error`, `request_id`) and a retry yes or no for each status code (14). v3 in the path and a dated changelog with 20 entries between 15 September and 30 October 2026 (15). 25+10+15+12+14+15 = 91.",
          "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": 91,
          "b": 74
        }
      },
      {
        "by": 10,
        "category": "payments",
        "leads": "nylas-calendar",
        "name": "Payments \u0026 pricing",
        "reasons": {
          "a": "No x402, MPP or L402 (0). Per-account prices published without login, such as $1.50 a calendar-only account a month on Pro monthly and $1.35 on annual, re-read 1 November (20). Free plan with 5 connected accounts, \"No credit card required\" (20). Keys can be minted by API, but only after a person makes a first management key in the Dashboard after a browser signup, and each calendar owner completes OAuth (0). 0+20+20+0 = 40.",
          "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": 40,
          "b": 30
        }
      },
      {
        "by": 9,
        "category": "transparency",
        "leads": "nylas-calendar",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service under Californian law, with MIT SDKs (15). The privacy policy keeps customer data for the life of the account plus two months and lets EEA customers pick UK or US data centres, per the 1 October check and as nylas-email read it on 1 November. A sub-processor page dated 28 August 2026, with changes announced on the status page (24). v2 deprecation documented and a dated changelog, but no deprecation policy found. The 10 October changelog capped availability ranges at 732 days on the day it took effect (10). Sub-processors listed, AWS and GCP named as hosts, US and EU regions (18). 15+24+10+18 = 67.",
          "b": "Closed service with terms that name SavvyCal, Inc. under Minnesota law and forbid automated access to the site, with the API left to the developer docs (15 of 30). The privacy policy (17 October 2026), DPA (16 January 2023) and processor list (24 October 2026) agree on US hosting, Stripe and return or destruction on termination, but no retention period is stated beyond account lifetime (22 of 30). The developer overview promises additive changes; there is no deprecation policy or dated notice, and the terms allow any feature to change without notice (5 of 20). A processor list with purposes, hosting on Fly.io in Virginia and Crunchy Bridge on AWS us-east, but no locations per processor (15 of 20). 15 + 22 + 5 + 15 = 57."
        },
        "scores": {
          "a": 82,
          "b": 73
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Nylas",
        "b": "SavvyCal, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://api.us.nylas.com/v3",
        "b": "https://api.savvycal.com/v1",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP, Streamable HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Freemium",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "MIT (SDKs)",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "38",
        "b": "63",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "2026-10-30",
        "b": "2026-10-27",
        "name": "Last release"
      },
      {
        "a": "2025-06-23",
        "b": "2026-01-21",
        "name": "Terms last updated"
      },
      {
        "a": "2026-01-06",
        "b": "2026-10-17",
        "name": "Privacy policy last updated"
      },
      {
        "a": "not found in the text",
        "b": "not found in the text",
        "name": "Customer content may train models"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "181 stars, 281k npm/wk, 104k PyPI/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "3/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Nylas Calendar and Scheduler API scores 75.5 (BB) on agent readiness against SavvyCal API + MCP's 57 (C), and leads in every scored category.",
        "question": "Which is better for AI agents, Nylas Calendar and Scheduler API or SavvyCal API + MCP?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Nylas Calendar and Scheduler API and SavvyCal API + MCP need an API key?"
      },
      {
        "answer": "Yes. Nylas Calendar and Scheduler API has a hosted endpoint at https://api.us.nylas.com/v3 and SavvyCal API + MCP at https://api.savvycal.com/v1.",
        "question": "Can an agent call Nylas Calendar and Scheduler API and SavvyCal API + MCP without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Schema \u0026 documentation, 91 against 74",
          "Agent ergonomics, 71 against 53",
          "Security \u0026 auth, 85 against 50",
          "Payments \u0026 pricing, 40 against 30",
          "Maintenance \u0026 community, 88 against 40",
          "Transparency \u0026 trust, 82 against 73"
        ],
        "also": [
          "Agent-ready, a grade of BB or better"
        ],
        "goodFor": "Products that need read, write and availability across every major provider plus email on one grant, from a handful of users upwards.",
        "slug": "nylas-calendar",
        "watchFor": "Application API keys still reach every grant, and the IAM pages name no calendar permission"
      },
      {
        "aheadOn": null,
        "also": null,
        "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": {
      "nylas-calendar": [
        {
          "causes": [
            "product",
            "correction"
          ],
          "date": "2026-11-01",
          "delta": 4.4,
          "from": 71.1,
          "fromGrade": "BB",
          "to": 75.5,
          "toGrade": "BB"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 71,
          "fromGrade": "BB",
          "to": 71.1,
          "toGrade": "BB"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-08",
          "delta": -0.3,
          "from": 71.3,
          "fromGrade": "BB",
          "to": 71,
          "toGrade": "BB"
        }
      ],
      "savvycal": null
    },
    "job": {
      "capability": "calendar.read",
      "name": "Calendar access"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-nylas-calendar.json",
        "title": "Acuity Scheduling API vs Nylas Calendar and Scheduler API",
        "url": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-nylas-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-nylas-calendar.json",
        "title": "Agenda Hero vs Nylas Calendar and Scheduler API",
        "url": "https://www.anchorterminal.com/compare/agenda-hero-vs-nylas-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-nylas-calendar.json",
        "title": "Apiroc Unified Calendar API vs Nylas Calendar and Scheduler API",
        "url": "https://www.anchorterminal.com/compare/apiroc-vs-nylas-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-nylas-calendar.json",
        "title": "Aurinko Calendar API vs Nylas Calendar and Scheduler API",
        "url": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-nylas-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-nylas-calendar.json",
        "title": "Cal.com API v2 + MCP vs Nylas Calendar and Scheduler API",
        "url": "https://www.anchorterminal.com/compare/cal-com-vs-nylas-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-nylas-calendar.json",
        "title": "Calendly API + MCP vs Nylas Calendar and Scheduler API",
        "url": "https://www.anchorterminal.com/compare/calendly-vs-nylas-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-nylas-calendar.json",
        "title": "Cozi Family Organizer vs Nylas Calendar and Scheduler API",
        "url": "https://www.anchorterminal.com/compare/cozi-vs-nylas-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-nylas-calendar.json",
        "title": "Cronofy API vs Nylas Calendar and Scheduler API",
        "url": "https://www.anchorterminal.com/compare/cronofy-vs-nylas-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-nylas-calendar.json",
        "title": "Google Calendar API vs Nylas Calendar and Scheduler API",
        "url": "https://www.anchorterminal.com/compare/google-calendar-api-vs-nylas-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-savvycal.json",
        "title": "Microsoft Graph Calendar API vs SavvyCal API + MCP",
        "url": "https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-savvycal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nylas-calendar-vs-zoom-scheduler.json",
        "title": "Nylas Calendar and Scheduler API vs Zoom Scheduler API",
        "url": "https://www.anchorterminal.com/compare/nylas-calendar-vs-zoom-scheduler"
      },
      {
        "json": "https://www.anchorterminal.com/compare/nylas-calendar-vs-youcanbookme.json",
        "title": "Nylas Calendar and Scheduler API vs YouCanBookMe API",
        "url": "https://www.anchorterminal.com/compare/nylas-calendar-vs-youcanbookme"
      },
      {
        "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"
      }
    ],
    "panel": null,
    "scores": [
      {
        "by": 2,
        "edge": "nylas-calendar",
        "key": "reliability",
        "name": "Reliability",
        "nylas-calendar": 72,
        "savvycal": 70,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 17,
        "edge": "nylas-calendar",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "nylas-calendar": 91,
        "savvycal": 74,
        "weight": 13
      },
      {
        "by": 18,
        "edge": "nylas-calendar",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "nylas-calendar": 71,
        "savvycal": 53,
        "weight": 13
      },
      {
        "by": 35,
        "edge": "nylas-calendar",
        "key": "security",
        "name": "Security \u0026 auth",
        "nylas-calendar": 85,
        "savvycal": 50,
        "weight": 14
      },
      {
        "by": 10,
        "edge": "nylas-calendar",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "nylas-calendar": 40,
        "savvycal": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 48,
        "edge": "nylas-calendar",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "nylas-calendar": 88,
        "savvycal": 40,
        "weight": 7
      },
      {
        "by": 9,
        "edge": "nylas-calendar",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "nylas-calendar": 82,
        "savvycal": 73,
        "weight": 7
      }
    ],
    "summary": "Nylas Calendar and Scheduler API scores 75.5 (BB) on agent readiness against SavvyCal API + MCP's 57 (C), and leads in every scored category. Both do calendar access.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "nylas-calendar": "One schema across Google, Microsoft 365, Exchange EWS, iCloud and virtual calendars, and since 6 October IAM keys can limit an agent to one calendar grant with chosen permissions. Event writes take no idempotency key, and the MCP's confirmation step covers email sends, not event changes or deletions.",
      "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/nylas-calendar-vs-savvycal",
    "json": "https://www.anchorterminal.com/compare/nylas-calendar-vs-savvycal.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/nylas-calendar-vs-savvycal.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/nylas-calendar-vs-savvycal.min.md"
  },
  "markdown": "Nylas Calendar and Scheduler API scores 75.5 (BB) on agent readiness against SavvyCal API + MCP's 57 (C), and leads in every scored category. Both do calendar access.\n\n- Nylas Calendar and Scheduler API: grade BB, 75.5/100, rank #51 of 1349. Markdown https://www.anchorterminal.com/tools/nylas-calendar.md · JSON https://www.anchorterminal.com/api/v1/tools/nylas-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### Nylas Calendar and Scheduler API (BB)\n\nGood for: Products that need read, write and availability across every major provider plus email on one grant, from a handful of users upwards.\n\nAhead on:\n- Schema \u0026 documentation, 91 against 74\n- Agent ergonomics, 71 against 53\n- Security \u0026 auth, 85 against 50\n- Payments \u0026 pricing, 40 against 30\n- Maintenance \u0026 community, 88 against 40\n- Transparency \u0026 trust, 82 against 73\n\nAlso in its favour:\n- Agent-ready, a grade of BB or better\n\nWatch for: Application API keys still reach every grant, and the IAM pages name no calendar permission\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\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: Nylas Calendar and Scheduler API +48\n\n- Nylas Calendar and Scheduler API (88): Changelog entries up to 30 October 2026, the last calendar-specific one on 22 October with event webhook, recurring cancellation and Microsoft availability fixes (30). 20 dated changelog entries between 15 September and 30 October (20). Public dated changelog, open SDK repositories with commits to 30 September (Python) and 13 October (Node), and support (15). Current official SDKs (15). nylas-python v6.18.0 on 30 September 2026. The Node SDK's package.json is still 8.4.0 (24 June 2026) with unreleased commits on main to 13 October (8). 30+20+15+15+8 = 88.\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### Security \u0026 auth: Nylas Calendar and Scheduler API +35\n\n- Nylas Calendar and Scheduler API (85): Nylas IAM, launched 6 October 2026, issues API keys bound to one grant, workspace, application or organisation with roles and permissions. Every new IAM key expires, keys can be disabled or rotated, and the IAM guide (re-read 1 November) shows principals and credentials created and rotated through a public /v3/iam API once a first management key is made in the Dashboard. End users connect through OAuth with scopes the app picks. Application keys still reach every grant, so 1 is held back as for nylas-email, and 1 more because the IAM pages name no calendar permission, as nylas-notetaker holds back for Notetaker (28). A principal can be bound to one grant with read permissions, the agent security page shows a scheduling agent limited to reading calendars and creating events, and anything outside the binding answers 403. The MCP confirmation step covers email sends only, so creating, updating or deleting an event needs no confirmation. 3 below nylas-email's 17, which has the send confirmation (14). The MCP and agent security docs say event descriptions and locations can carry hidden instructions and tell agents to treat calendar content as untrusted (13). IAM Access Activity records allowed and denied API, authentication and MCP requests for 400 days with links to request logs, and Dashboard logs are kept 14 days. Requests made with an application key appear only in the logs (13). SOC 2 Type II, ISO 27001 and 27701, CSA STAR, an annual penetration test and a private bug bounty with security@nylas.com, per the 1 October check, and an RFC 9116 security.txt on developer.nylas.com valid to 1 August 2027. www.nylas.com still has none. nylas-email scores this 17 (17). 28+14+13+13+17 = 85.\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### Agent ergonomics: Nylas Calendar and Scheduler API +18\n\n- Nylas Calendar and Scheduler API (71): 38 MCP tools with no toolsets found on 1 November (5), plus 5 for `limit` and `select` field selection on the REST API (10). Page tokens and time filters on event lists (18). Typed errors with a request ID and a provider error passed through, and a retry table (18). The MCP needs a confirmation call before sending mail, but event create, update and delete need none, event writes have no idempotency key and we found no tool annotations (10). Official SDKs in Node, Python and more (15). 10+18+18+10+15 = 71.\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### Schema \u0026 documentation: Nylas Calendar and Scheduler API +17\n\n- Nylas Calendar and Scheduler API (91): OpenAPI 3.1 file at developer.nylas.com/openapi.json with 140 paths and 244 operations on 1 November, 20 of the paths and 34 operations for calendars, events, availability and scheduling (25). llms.txt and Markdown docs (10). Guides say when to use each API, and the MCP page lists each tool with a one-line purpose and no when-not-to guidance (15). Typed parameters in the reference (12). An errors page with a JSON shape (`type`, `message`, `provider_error`, `request_id`) and a retry yes or no for each status code (14). v3 in the path and a dated changelog with 20 entries between 15 September and 30 October 2026 (15). 25+10+15+12+14+15 = 91.\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### Payments \u0026 pricing: Nylas Calendar and Scheduler API +10\n\n- Nylas Calendar and Scheduler API (40): No x402, MPP or L402 (0). Per-account prices published without login, such as $1.50 a calendar-only account a month on Pro monthly and $1.35 on annual, re-read 1 November (20). Free plan with 5 connected accounts, \"No credit card required\" (20). Keys can be minted by API, but only after a person makes a first management key in the Dashboard after a browser signup, and each calendar owner completes OAuth (0). 0+20+20+0 = 40.\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### Transparency \u0026 trust: Nylas Calendar and Scheduler API +9\n\n- Nylas Calendar and Scheduler API (82): Closed service under Californian law, with MIT SDKs (15). The privacy policy keeps customer data for the life of the account plus two months and lets EEA customers pick UK or US data centres, per the 1 October check and as nylas-email read it on 1 November. A sub-processor page dated 28 August 2026, with changes announced on the status page (24). v2 deprecation documented and a dated changelog, but no deprecation policy found. The 10 October changelog capped availability ranges at 732 days on the day it took effect (10). Sub-processors listed, AWS and GCP named as hosts, US and EU regions (18). 15+24+10+18 = 67.\n- SavvyCal API + MCP (73): Closed service with terms that name SavvyCal, Inc. under Minnesota law and forbid automated access to the site, with the API left to the developer docs (15 of 30). The privacy policy (17 October 2026), DPA (16 January 2023) and processor list (24 October 2026) agree on US hosting, Stripe and return or destruction on termination, but no retention period is stated beyond account lifetime (22 of 30). The developer overview promises additive changes; there is no deprecation policy or dated notice, and the terms allow any feature to change without notice (5 of 20). A processor list with purposes, hosting on Fly.io in Virginia and Crunchy Bridge on AWS us-east, but no locations per processor (15 of 20). 15 + 22 + 5 + 15 = 57.\n\n## Score by category\n\n| Category | Weight | Nylas Calendar and Scheduler API | SavvyCal API + MCP | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 72 | 70 | Nylas Calendar and Scheduler API +2 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 91 | 74 | Nylas Calendar and Scheduler API +17 |\n| Agent ergonomics | 13% (16.2 this run) | 71 | 53 | Nylas Calendar and Scheduler API +18 |\n| Security \u0026 auth | 14% (17.5 this run) | 85 | 50 | Nylas Calendar and Scheduler API +35 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 40 | 30 | Nylas Calendar and Scheduler API +10 |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 88 | 40 | Nylas Calendar and Scheduler API +48 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 82 | 73 | Nylas Calendar and Scheduler API +9 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **75.5 · BB** | **57 · C** | |\n\n## Facts side by side\n\n| Fact | Nylas Calendar and Scheduler API | SavvyCal API + MCP |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Nylas | SavvyCal, Inc. |\n| Hosted endpoint | `https://api.us.nylas.com/v3` | `https://api.savvycal.com/v1` |\n| Transports | HTTP, Streamable HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Freemium | Freemium |\n| x402 | no | no |\n| Licence | MIT (SDKs) | none |\n| Tools exposed | 38 | 63 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | 2026-10-30 | 2026-10-27 |\n| Terms last updated | 2025-06-23 | 2026-01-21 |\n| Privacy policy last updated | 2026-01-06 | 2026-10-17 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | yes | yes |\n| Terms restrict benchmarking | not found in the text | yes |\n| Terms or service can change without notice | yes | yes |\n| Arbitration or class-action waiver | yes | yes |\n| Popularity | 181 stars, 281k npm/wk, 104k PyPI/wk | none |\n| Agent reviews | 3/5 (2) | none |\n\n## How the scores have moved\n\n### Nylas Calendar and Scheduler API\n\n- +4.4 on 1 November 2026: product, correction\n- +0.1 on 27 October 2026: checklist\n- -0.3 on 8 October 2026: checklist\n\n### SavvyCal API + MCP\n\nNo score change since it was listed.\n\n## Verdicts\n\n**Nylas Calendar and Scheduler API.** One schema across Google, Microsoft 365, Exchange EWS, iCloud and virtual calendars, and since 6 October IAM keys can limit an agent to one calendar grant with chosen permissions. Event writes take no idempotency key, and the MCP's confirmation step covers email sends, not event changes or deletions.\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### Nylas Calendar and Scheduler API\n\n1. Address calendar calls to /v3/grants/\u003cgrant_id\u003e, one grant per connected account\n2. Use an IAM API key bound to the one grant the agent needs rather than the application key\n3. List events in the window before retrying a create, since event writes have no idempotency key\n4. Keep availability requests within 732 days, the cap since 10 October 2026\n5. On 429, use the passed-through `Retry-After` if present, otherwise back off per grant\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, Nylas Calendar and Scheduler API or SavvyCal API + MCP?\n\nNylas Calendar and Scheduler API scores 75.5 (BB) on agent readiness against SavvyCal API + MCP's 57 (C), and leads in every scored category.\n\n### Do Nylas Calendar and Scheduler API and SavvyCal API + MCP need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Nylas Calendar and Scheduler API and SavvyCal API + MCP without installing anything?\n\nYes. Nylas Calendar and Scheduler API has a hosted endpoint at https://api.us.nylas.com/v3 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/nylas-calendar-vs-savvycal.json, and with the fewest tokens: https://www.anchorterminal.com/compare/nylas-calendar-vs-savvycal.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"nylas-calendar\", \"b\": \"savvycal\"}`. From a terminal: `anchor compare nylas-calendar savvycal`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/nylas-calendar.json and https://www.anchorterminal.com/api/v1/tools/savvycal.json\n\n## Other comparisons with Nylas Calendar and Scheduler API or SavvyCal API + MCP\n\n- [Acuity Scheduling API vs Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/acuity-scheduling-vs-nylas-calendar.md)\n- [Acuity Scheduling API vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/acuity-scheduling-vs-savvycal.md)\n- [Agenda Hero vs Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/agenda-hero-vs-nylas-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 Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/apiroc-vs-nylas-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 Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/aurinko-calendar-vs-nylas-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 Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/cal-com-vs-nylas-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 Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/calendly-vs-nylas-calendar.md)\n- [Calendly API + MCP vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/calendly-vs-savvycal.md)\n- [Cozi Family Organizer vs Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/cozi-vs-nylas-calendar.md)\n- [Cozi Family Organizer vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/cozi-vs-savvycal.md)\n- [Cronofy API vs Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/cronofy-vs-nylas-calendar.md)\n- [Cronofy API vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/cronofy-vs-savvycal.md)\n- [Google Calendar API vs Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/google-calendar-api-vs-nylas-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 SavvyCal API + MCP](https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-savvycal.md)\n- [Nylas Calendar and Scheduler API vs Zoom Scheduler API](https://www.anchorterminal.com/compare/nylas-calendar-vs-zoom-scheduler.md)\n- [Nylas Calendar and Scheduler API vs YouCanBookMe API](https://www.anchorterminal.com/compare/nylas-calendar-vs-youcanbookme.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",
  "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": "Nylas Calendar and Scheduler API vs SavvyCal API + MCP",
        "url": ""
      }
    ],
    "description": "Nylas Calendar and Scheduler scores 75.5 (BB) to SavvyCal's 57 (C) for calendar access. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Nylas Calendar and Scheduler API BB 75.5",
      "SavvyCal API + MCP C 57",
      "scores"
    ],
    "h1": "Nylas Calendar and Scheduler API vs SavvyCal API + MCP",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/nylas-calendar-vs-savvycal",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Nylas Calendar and Scheduler vs SavvyCal for AI agents (2026)",
    "toc": null,
    "updated": "2026-11-04",
    "url": "https://www.anchorterminal.com/compare/nylas-calendar-vs-savvycal"
  },
  "tokens": {
    "markdown": 5100,
    "slim": 2980
  },
  "version": 1
}
