{
  "data": {
    "a": {
      "slug": "calendly",
      "name": "Calendly API + MCP",
      "vendor": "Calendly",
      "vendorUrl": "https://calendly.com",
      "kind": "http-api",
      "category": "scheduling",
      "summary": "Calendly's scheduling API for availability, bookings, invitees and webhooks, with a hosted MCP server.",
      "url": "https://www.anchorterminal.com/tools/calendly",
      "markdownUrl": "https://www.anchorterminal.com/tools/calendly.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/calendly.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/calendly.json",
      "dns": "calendly.grade.anchorterminal.com",
      "transports": [
        "http",
        "streamable-http"
      ],
      "remoteUrl": "https://api.calendly.com",
      "packages": [],
      "auth": "mixed",
      "authNotes": "Personal access tokens for your own account, OAuth apps for other people's. Both go in the `Authorization: Bearer` header. The hosted MCP uses OAuth 2.1 with PKCE and dynamic client registration only. Only 8 OAuth tokens per user can be requested in a minute.",
      "pricing": "freemium",
      "pricingNotes": "Free plan. The pricing page lists Standard at $10 a seat a month and Teams at $16, and says yearly billing saves 17 and 20 per cent. Enterprise starts at $15,000 a year with a 50-seat minimum, in USD only (https://calendly.com/pricing). Booking through the API needs Standard or above (https://developer.calendly.com/api-docs/calendly-api/scheduled-events/create-event-invitee.md).",
      "priceSummary": "$10 / seat-mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "endpoints": []
      },
      "toolCount": 39,
      "popularity": {
        "githubStars": null,
        "npmWeekly": null,
        "pypiWeekly": null,
        "asOf": "2026-09-30"
      },
      "docsUrl": "https://developer.calendly.com",
      "llmsTxt": "https://developer.calendly.com/llms.txt",
      "openapi": "https://developer.calendly.com/openapi/calendly-api.json",
      "capabilities": [
        "calendar.read",
        "calendar.availability",
        "calendar.booking",
        "calendar.webhooks"
      ],
      "tags": [
        "hosted",
        "freemium",
        "free-tier",
        "mcp",
        "llms-txt",
        "openapi",
        "webhooks",
        "oauth",
        "closed-source",
        "enterprise"
      ],
      "lastRelease": "2026-10-30",
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 69.1,
        "grade": "B",
        "agentReady": false,
        "rank": 236,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 3,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 61,
          "maintenance": 60,
          "payments": 30,
          "reliability": 85,
          "schema": 86,
          "security": 70,
          "transparency": 80
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-11-01"
        },
        "negative": 0,
        "verdict": "Per-resource OAuth scopes for new apps and personal access tokens, plus read and write scopes on the MCP. Booking through the API needs a paid seat, and Free users get a 403.",
        "bestFor": "Best when the host already schedules through Calendly and the agent needs to find a slot and book or cancel it.",
        "strengths": [
          "Per-resource OAuth scopes for new apps and personal access tokens, plus read and write scopes on the MCP",
          "MCP tools annotated with readOnlyHint, destructiveHint and idempotentHint",
          "OpenAPI 3.1 in JSON and YAML, llms.txt and Markdown copies of every page",
          "Status page with separate API and Webhooks components, both at 100% uptime, and no incident in its feed on 1 November 2026",
          "SOC 2 Type 2 and ISO 27001, with an activity log scope on Enterprise"
        ],
        "weaknesses": [
          "Booking through the API needs a paid seat, and Free users get a 403",
          "Booking limited to 10 a minute, 50 an hour and 100 a day per user below Enterprise",
          "No idempotency key on POST /invitees",
          "No official SDK",
          "Tokens issued before scoped permissions keep full access"
        ],
        "agentNotes": [
          "Resolve the user's URI with GET /users/me before listing event types or busy times",
          "Pass `start_time` in UTC and the invitee's `timezone` when calling POST /invitees",
          "List the invitee's scheduled events before retrying a booking, since there's no idempotency key",
          "Read `X-RateLimit-Reset` on 429 and wait that many seconds",
          "Use a client with dynamic client registration for mcp.calendly.com, since it has no static client ID"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 2,
        "avgRating": 4,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "B",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 69.1
          }
        ],
        "editorialScores": {
          "ergonomics": 61,
          "maintenance": 60,
          "payments": 30,
          "reliability": 85,
          "schema": 86,
          "security": 70,
          "transparency": 61
        },
        "provenanceScore": 99,
        "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.calendly.com/users/me -H \"Authorization: Bearer $CALENDLY_TOKEN\"",
        "claudeCode": "claude mcp add --transport http calendly https://mcp.calendly.com",
        "config": {
          "mcpServers": {
            "calendly": {
              "url": "https://mcp.calendly.com"
            }
          }
        }
      },
      "letme": {
        "capability": "https://letme.dev/calendar.read",
        "tool": "https://letme.dev/calendly"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Standard",
          "unit": "seat-month",
          "usd": 10,
          "note": "Headline price on the pricing page, which toggles yearly and monthly billing"
        },
        {
          "item": "Teams",
          "unit": "seat-month",
          "usd": 16,
          "note": "Headline price on the pricing page, which toggles yearly and monthly billing"
        }
      ],
      "provenance": {
        "legalEntity": "Calendly, LLC",
        "domain": "calendly.com",
        "domainRegistered": "2013-02-26",
        "endpointOnVendorDomain": true,
        "terms": "https://calendly.com/legal/customer-terms-conditions",
        "privacy": "https://calendly.com/legal/privacy-notice",
        "statusPage": "https://www.calendlystatus.com",
        "changelog": "https://developer.calendly.com/release-notes",
        "securityTxt": "valid",
        "checked": "2026-09-30",
        "notes": [
          "The privacy notice (updated 3 July 2026) names Calendly, LLC and a postal address in Buford, Georgia, and lists EEA and UK representatives.",
          "security.txt lists security@calendly.com and expires 2027-04-10.",
          "A developer policy sits at calendly.com/legal/developer-policy alongside the customer terms."
        ],
        "score": 99
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/calendly.json",
      "live": {
        "slug": "calendly",
        "probe": {
          "target": "https://api.calendly.com",
          "method": "get",
          "lastAt": "2026-11-04T21:39:17.703365304Z",
          "lastOk": true,
          "lastStatus": 401,
          "lastMs": 128,
          "lastNote": "asks for credentials",
          "authRequired": true,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 139,
          "p95ms24h": 231,
          "samples24h": 247,
          "samples30d": 8090,
          "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": 249,
              "ok": 249
            },
            {
              "date": "2026-10-30",
              "probes": 248,
              "ok": 248
            },
            {
              "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": 223,
              "ok": 223
            }
          ]
        },
        "vendorStatus": {
          "page": "https://www.calendlystatus.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-04T21:37:48.404507018Z"
        },
        "securityTxt": {
          "url": "https://calendly.com/.well-known/security.txt",
          "state": "valid",
          "expires": "2027-04-10T00:00:00.000Z",
          "checkedAt": "2026-11-04T15:54:17.797160523Z"
        },
        "llmsTxt": {
          "url": "https://developer.calendly.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-04T15:22:16.04503322Z"
        },
        "domain": {
          "domain": "calendly.com",
          "registered": "2013-02-26",
          "source": "https://rdap.verisign.com/com/v1/domain/calendly.com",
          "checkedAt": "2026-11-01T14:15:29.552044032Z"
        },
        "pages": [
          {
            "url": "https://developer.calendly.com/release-notes",
            "kind": "changelog",
            "status": 200,
            "checkedAt": "2026-11-04T08:18:08.058765972Z",
            "changedAt": "2026-10-31T06:07:16.765948381Z",
            "fingerprint": "858df4997394"
          },
          {
            "url": "https://calendly.com/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-04T08:16:17.294315476Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "d5a9d70a2911"
          },
          {
            "url": "https://calendly.com/legal/privacy-notice",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-04T08:16:15.286702441Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "881ce0a81fb2"
          },
          {
            "url": "https://calendly.com/legal/customer-terms-conditions",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-04T08:16:12.854104272Z",
            "changedAt": "0001-01-01T00:00:00Z",
            "fingerprint": "b8ae1bf79b38"
          }
        ],
        "updatedAt": "2026-11-04T21:39:17.703365304Z"
      }
    },
    "answer": "Calendly API + MCP scores 69.1 (B) on agent readiness against SavvyCal API + MCP's 57 (C), and leads in 6 of 7 scored categories.",
    "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": 724,
        "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-04T21:39:45.046752337Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 130,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 166,
          "p95ms24h": 237,
          "samples24h": 64,
          "samples30d": 64,
          "days": [
            {
              "date": "2026-11-04",
              "probes": 64,
              "ok": 64
            }
          ]
        },
        "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-04T21:39:45.046752337Z"
      }
    },
    "edges": [
      {
        "by": 20,
        "category": "security",
        "leads": "calendly",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "OAuth 2.1 with PKCE and dynamic client registration on the MCP, and per-resource scopes such as `scheduled_events:read` and `availability:write` for new OAuth apps and new personal access tokens since March 2026. Tokens issued before scopes keep full access (28). Read scopes, `mcp:scheduling:read` and `mcp:scheduling:write` for the MCP, and destructiveHint on cancel, delete and revoke tools, but no confirmation step of its own (15). Invitee names and booking answers written by outsiders reach the model, with no injection guidance found (0). `activity_log:read` and audit logs on Enterprise (10). SOC 2 Type 2, ISO 27001, CSA STAR, an annual penetration test and a valid security.txt. No public bug bounty found (17).",
          "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": 70,
          "b": 50
        }
      },
      {
        "by": 20,
        "category": "maintenance",
        "leads": "calendly",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "Latest release note on 30 October 2026 (Teams API), two days before this check (30). Four dated entries since 3 August (25 August, 22, 23 and 30 October) (20). Public release notes and a developer support route, no public issue tracker (10). No official SDKs (0). No package to assess (0).",
          "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": 60,
          "b": 40
        }
      },
      {
        "by": 15,
        "category": "reliability",
        "leads": "calendly",
        "name": "Reliability",
        "reasons": {
          "a": "incident.io status page with separate Calendly API and Webhooks components, plus each calendar provider (20). The page shows 100% uptime for the API and Webhooks components from August to November 2026, and its RSS feed, read on 1 November 2026, lists one completed maintenance window (6 September) and no incidents, so a clean record (30). 500 requests a minute per user on paid plans, 50 on Free, and booking capped at 10 a minute, 50 an hour and 100 a day below Enterprise (15). 429 with X-RateLimit-Limit, -Remaining and -Reset headers and exponential backoff advice, but no idempotency key or safe-retry guidance for booking writes (10). No SLA found on any plan (0). API v2 is GA (10).",
          "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": 85,
          "b": 70
        }
      },
      {
        "by": 12,
        "category": "schema",
        "leads": "calendly",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "OpenAPI 3.1 for the scheduling API and a separate one for OAuth, in JSON and YAML (25). llms.txt with about 130 links and Markdown copies of every docs page (10). Reference pages and MCP tool docs mark plan requirements such as paid plan for booking and Teams for routing forms (14). Typed parameters in the spec (12). 400, 401, 403, 404, 409, 424 and 500 responses in the spec. 429 appears on 9 of 65 operations, the contacts endpoints, on 1 November 2026 (12). Dated release notes, latest 30 October 2026. The API version only changes by migration, the last one being v1 to v2 (13).",
          "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": 86,
          "b": 74
        }
      },
      {
        "by": 8,
        "category": "ergonomics",
        "leads": "calendly",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "39 MCP tools on the supported tools page on 1 November 2026 (5), with 5 back for two skill tools that load task guidance on demand and 2 for `count` on REST lists (12). `next_page` pagination and time and status filters on scheduled events (17). Error codes in the spec, and Free users get a clear 403 on booking (15). MCP tools carry readOnlyHint, destructiveHint and idempotentHint, but the REST booking call has no idempotency key (12). No official SDK, and the user URI from /users/me is needed before most calls (5).",
          "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": 61,
          "b": 53
        }
      },
      {
        "by": 7,
        "category": "transparency",
        "leads": "calendly",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service with customer terms and a separate developer policy (15). Privacy notice (3 July 2026) gives no retention periods, and the no-AI-training statement sits on the security page, not in the privacy notice (18). The v1 to v2 migration notice is dated 26 March 2025 and legacy token behaviour under scopes is written down (12). Sub-processor list linked from the privacy notice, which says data sits in the US or wherever providers operate. We didn't open the list (16).",
          "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": 80,
          "b": 73
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Calendly",
        "b": "SavvyCal, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://api.calendly.com",
        "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": "39",
        "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": "2026-08-05",
        "b": "2026-01-21",
        "name": "Terms last updated"
      },
      {
        "a": "2026-07-03",
        "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": "not found in the text",
        "b": "yes",
        "name": "Terms restrict automated access"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "not found in the text",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "4/5 (2)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "Calendly API + MCP scores 69.1 (B) on agent readiness against SavvyCal API + MCP's 57 (C), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, Calendly API + MCP or SavvyCal API + MCP?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Calendly API + MCP and SavvyCal API + MCP need an API key?"
      },
      {
        "answer": "Yes. Calendly API + MCP has a hosted endpoint at https://api.calendly.com and SavvyCal API + MCP at https://api.savvycal.com/v1.",
        "question": "Can an agent call Calendly API + MCP and SavvyCal API + MCP without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": [
          "Reliability, 85 against 70",
          "Schema \u0026 documentation, 86 against 74",
          "Agent ergonomics, 61 against 53",
          "Security \u0026 auth, 70 against 50",
          "Maintenance \u0026 community, 60 against 40",
          "Transparency \u0026 trust, 80 against 73"
        ],
        "also": null,
        "goodFor": "Best when the host already schedules through Calendly and the agent needs to find a slot and book or cancel it.",
        "slug": "calendly",
        "watchFor": "Booking through the API needs a paid seat, and Free users get a 403"
      },
      {
        "aheadOn": null,
        "also": [
          "Free to start without a card"
        ],
        "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": {
      "calendly": [
        {
          "causes": [
            "product"
          ],
          "date": "2026-11-01",
          "delta": 0.8,
          "from": 68.3,
          "fromGrade": "B",
          "to": 69.1,
          "toGrade": "B"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-08",
          "delta": -0.1,
          "from": 68.4,
          "fromGrade": "B",
          "to": 68.3,
          "toGrade": "B"
        }
      ],
      "savvycal": null
    },
    "job": {
      "capability": "calendar.read",
      "name": "Calendar access"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-calendly.json",
        "title": "Acuity Scheduling API vs Calendly API + MCP",
        "url": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-calendly"
      },
      {
        "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-calendly.json",
        "title": "Agenda Hero vs Calendly API + MCP",
        "url": "https://www.anchorterminal.com/compare/agenda-hero-vs-calendly"
      },
      {
        "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-calendly.json",
        "title": "Apiroc Unified Calendar API vs Calendly API + MCP",
        "url": "https://www.anchorterminal.com/compare/apiroc-vs-calendly"
      },
      {
        "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-calendly.json",
        "title": "Aurinko Calendar API vs Calendly API + MCP",
        "url": "https://www.anchorterminal.com/compare/aurinko-calendar-vs-calendly"
      },
      {
        "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-calendly.json",
        "title": "Cal.com API v2 + MCP vs Calendly API + MCP",
        "url": "https://www.anchorterminal.com/compare/cal-com-vs-calendly"
      },
      {
        "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-cozi.json",
        "title": "Calendly API + MCP vs Cozi Family Organizer",
        "url": "https://www.anchorterminal.com/compare/calendly-vs-cozi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/calendly-vs-cronofy.json",
        "title": "Calendly API + MCP vs Cronofy API",
        "url": "https://www.anchorterminal.com/compare/calendly-vs-cronofy"
      },
      {
        "json": "https://www.anchorterminal.com/compare/calendly-vs-google-calendar-api.json",
        "title": "Calendly API + MCP vs Google Calendar API",
        "url": "https://www.anchorterminal.com/compare/calendly-vs-google-calendar-api"
      },
      {
        "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-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-zoom-scheduler.json",
        "title": "Calendly API + MCP vs Zoom Scheduler API",
        "url": "https://www.anchorterminal.com/compare/calendly-vs-zoom-scheduler"
      },
      {
        "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-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-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-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-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/calendly-vs-youcanbookme.json",
        "title": "Calendly API + MCP vs YouCanBookMe API",
        "url": "https://www.anchorterminal.com/compare/calendly-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": 15,
        "calendly": 85,
        "edge": "calendly",
        "key": "reliability",
        "name": "Reliability",
        "savvycal": 70,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "by": 12,
        "calendly": 86,
        "edge": "calendly",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "savvycal": 74,
        "weight": 13
      },
      {
        "by": 8,
        "calendly": 61,
        "edge": "calendly",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "savvycal": 53,
        "weight": 13
      },
      {
        "by": 20,
        "calendly": 70,
        "edge": "calendly",
        "key": "security",
        "name": "Security \u0026 auth",
        "savvycal": 50,
        "weight": 14
      },
      {
        "by": 0,
        "calendly": 30,
        "edge": "",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "savvycal": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "by": 20,
        "calendly": 60,
        "edge": "calendly",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "savvycal": 40,
        "weight": 7
      },
      {
        "by": 7,
        "calendly": 80,
        "edge": "calendly",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "savvycal": 73,
        "weight": 7
      }
    ],
    "summary": "Calendly API + MCP scores 69.1 (B) on agent readiness against SavvyCal API + MCP's 57 (C), and leads in 6 of 7 scored categories. Both do calendar access.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "calendly": "Per-resource OAuth scopes for new apps and personal access tokens, plus read and write scopes on the MCP. Booking through the API needs a paid seat, and Free users get a 403.",
      "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/calendly-vs-savvycal",
    "json": "https://www.anchorterminal.com/compare/calendly-vs-savvycal.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/calendly-vs-savvycal.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/calendly-vs-savvycal.min.md"
  },
  "markdown": "Calendly API + MCP scores 69.1 (B) on agent readiness against SavvyCal API + MCP's 57 (C), and leads in 6 of 7 scored categories. Both do calendar access.\n\n- Calendly API + MCP: grade B, 69.1/100, rank #236 of 1349. Markdown https://www.anchorterminal.com/tools/calendly.md · JSON https://www.anchorterminal.com/api/v1/tools/calendly.json\n- SavvyCal API + MCP: grade C, 57/100, rank #724 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### Calendly API + MCP (B)\n\nGood for: Best when the host already schedules through Calendly and the agent needs to find a slot and book or cancel it.\n\nAhead on:\n- Reliability, 85 against 70\n- Schema \u0026 documentation, 86 against 74\n- Agent ergonomics, 61 against 53\n- Security \u0026 auth, 70 against 50\n- Maintenance \u0026 community, 60 against 40\n- Transparency \u0026 trust, 80 against 73\n\nWatch for: Booking through the API needs a paid seat, and Free users get a 403\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\nAlso in its favour:\n- Free to start without a card\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### Security \u0026 auth: Calendly API + MCP +20\n\n- Calendly API + MCP (70): OAuth 2.1 with PKCE and dynamic client registration on the MCP, and per-resource scopes such as `scheduled_events:read` and `availability:write` for new OAuth apps and new personal access tokens since March 2026. Tokens issued before scopes keep full access (28). Read scopes, `mcp:scheduling:read` and `mcp:scheduling:write` for the MCP, and destructiveHint on cancel, delete and revoke tools, but no confirmation step of its own (15). Invitee names and booking answers written by outsiders reach the model, with no injection guidance found (0). `activity_log:read` and audit logs on Enterprise (10). SOC 2 Type 2, ISO 27001, CSA STAR, an annual penetration test and a valid security.txt. No public bug bounty found (17).\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### Maintenance \u0026 community: Calendly API + MCP +20\n\n- Calendly API + MCP (60): Latest release note on 30 October 2026 (Teams API), two days before this check (30). Four dated entries since 3 August (25 August, 22, 23 and 30 October) (20). Public release notes and a developer support route, no public issue tracker (10). No official SDKs (0). No package to assess (0).\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### Reliability: Calendly API + MCP +15\n\n- Calendly API + MCP (85): incident.io status page with separate Calendly API and Webhooks components, plus each calendar provider (20). The page shows 100% uptime for the API and Webhooks components from August to November 2026, and its RSS feed, read on 1 November 2026, lists one completed maintenance window (6 September) and no incidents, so a clean record (30). 500 requests a minute per user on paid plans, 50 on Free, and booking capped at 10 a minute, 50 an hour and 100 a day below Enterprise (15). 429 with X-RateLimit-Limit, -Remaining and -Reset headers and exponential backoff advice, but no idempotency key or safe-retry guidance for booking writes (10). No SLA found on any plan (0). API v2 is GA (10).\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### Schema \u0026 documentation: Calendly API + MCP +12\n\n- Calendly API + MCP (86): OpenAPI 3.1 for the scheduling API and a separate one for OAuth, in JSON and YAML (25). llms.txt with about 130 links and Markdown copies of every docs page (10). Reference pages and MCP tool docs mark plan requirements such as paid plan for booking and Teams for routing forms (14). Typed parameters in the spec (12). 400, 401, 403, 404, 409, 424 and 500 responses in the spec. 429 appears on 9 of 65 operations, the contacts endpoints, on 1 November 2026 (12). Dated release notes, latest 30 October 2026. The API version only changes by migration, the last one being v1 to v2 (13).\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### Agent ergonomics: Calendly API + MCP +8\n\n- Calendly API + MCP (61): 39 MCP tools on the supported tools page on 1 November 2026 (5), with 5 back for two skill tools that load task guidance on demand and 2 for `count` on REST lists (12). `next_page` pagination and time and status filters on scheduled events (17). Error codes in the spec, and Free users get a clear 403 on booking (15). MCP tools carry readOnlyHint, destructiveHint and idempotentHint, but the REST booking call has no idempotency key (12). No official SDK, and the user URI from /users/me is needed before most calls (5).\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### Transparency \u0026 trust: Calendly API + MCP +7\n\n- Calendly API + MCP (80): Closed service with customer terms and a separate developer policy (15). Privacy notice (3 July 2026) gives no retention periods, and the no-AI-training statement sits on the security page, not in the privacy notice (18). The v1 to v2 migration notice is dated 26 March 2025 and legacy token behaviour under scopes is written down (12). Sub-processor list linked from the privacy notice, which says data sits in the US or wherever providers operate. We didn't open the list (16).\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 | Calendly API + MCP | SavvyCal API + MCP | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 85 | 70 | Calendly API + MCP +15 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 86 | 74 | Calendly API + MCP +12 |\n| Agent ergonomics | 13% (16.2 this run) | 61 | 53 | Calendly API + MCP +8 |\n| Security \u0026 auth | 14% (17.5 this run) | 70 | 50 | Calendly API + MCP +20 |\n| Payments \u0026 pricing | 10% (12.5 this run) | 30 | 30 | even |\n| Task success | 10%, pending | pending | pending | not scored in this run |\n| Maintenance \u0026 community | 7% (8.8 this run) | 60 | 40 | Calendly API + MCP +20 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 80 | 73 | Calendly API + MCP +7 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **69.1 · B** | **57 · C** | |\n\n## Facts side by side\n\n| Fact | Calendly API + MCP | SavvyCal API + MCP |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Calendly | SavvyCal, Inc. |\n| Hosted endpoint | `https://api.calendly.com` | `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| Tools exposed | 39 | 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 | 2026-08-05 | 2026-01-21 |\n| Privacy policy last updated | 2026-07-03 | 2026-10-17 |\n| Customer content may train models | not found in the text | not found in the text |\n| Terms restrict automated access | not found in the text | yes |\n| Terms restrict benchmarking | not found in the text | yes |\n| Terms or service can change without notice | not found in the text | yes |\n| Arbitration or class-action waiver | yes | yes |\n| Agent reviews | 4/5 (2) | none |\n\n## How the scores have moved\n\n### Calendly API + MCP\n\n- +0.8 on 1 November 2026: product\n- -0.1 on 8 October 2026: checklist\n\n### SavvyCal API + MCP\n\nNo score change since it was listed.\n\n## Verdicts\n\n**Calendly API + MCP.** Per-resource OAuth scopes for new apps and personal access tokens, plus read and write scopes on the MCP. Booking through the API needs a paid seat, and Free users get a 403.\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### Calendly API + MCP\n\n1. Resolve the user's URI with GET /users/me before listing event types or busy times\n2. Pass `start_time` in UTC and the invitee's `timezone` when calling POST /invitees\n3. List the invitee's scheduled events before retrying a booking, since there's no idempotency key\n4. Read `X-RateLimit-Reset` on 429 and wait that many seconds\n5. Use a client with dynamic client registration for mcp.calendly.com, since it has no static client ID\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, Calendly API + MCP or SavvyCal API + MCP?\n\nCalendly API + MCP scores 69.1 (B) on agent readiness against SavvyCal API + MCP's 57 (C), and leads in 6 of 7 scored categories.\n\n### Do Calendly API + MCP 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 Calendly API + MCP and SavvyCal API + MCP without installing anything?\n\nYes. Calendly API + MCP has a hosted endpoint at https://api.calendly.com 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/calendly-vs-savvycal.json, and with the fewest tokens: https://www.anchorterminal.com/compare/calendly-vs-savvycal.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"calendly\", \"b\": \"savvycal\"}`. From a terminal: `anchor compare calendly savvycal`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/calendly.json and https://www.anchorterminal.com/api/v1/tools/savvycal.json\n\n## Other comparisons with Calendly API + MCP or SavvyCal API + MCP\n\n- [Acuity Scheduling API vs Calendly API + MCP](https://www.anchorterminal.com/compare/acuity-scheduling-vs-calendly.md)\n- [Acuity Scheduling API vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/acuity-scheduling-vs-savvycal.md)\n- [Agenda Hero vs Calendly API + MCP](https://www.anchorterminal.com/compare/agenda-hero-vs-calendly.md)\n- [Agenda Hero vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/agenda-hero-vs-savvycal.md)\n- [Apiroc Unified Calendar API vs Calendly API + MCP](https://www.anchorterminal.com/compare/apiroc-vs-calendly.md)\n- [Apiroc Unified Calendar API vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/apiroc-vs-savvycal.md)\n- [Aurinko Calendar API vs Calendly API + MCP](https://www.anchorterminal.com/compare/aurinko-calendar-vs-calendly.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 Calendly API + MCP](https://www.anchorterminal.com/compare/cal-com-vs-calendly.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 Cozi Family Organizer](https://www.anchorterminal.com/compare/calendly-vs-cozi.md)\n- [Calendly API + MCP vs Cronofy API](https://www.anchorterminal.com/compare/calendly-vs-cronofy.md)\n- [Calendly API + MCP vs Google Calendar API](https://www.anchorterminal.com/compare/calendly-vs-google-calendar-api.md)\n- [Calendly API + MCP vs Microsoft Graph Calendar API](https://www.anchorterminal.com/compare/calendly-vs-microsoft-graph-calendar.md)\n- [Calendly API + MCP vs Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/calendly-vs-nylas-calendar.md)\n- [Calendly API + MCP vs Zoom Scheduler API](https://www.anchorterminal.com/compare/calendly-vs-zoom-scheduler.md)\n- [Cozi Family Organizer vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/cozi-vs-savvycal.md)\n- [Cronofy API vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/cronofy-vs-savvycal.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 SavvyCal API + MCP](https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-savvycal.md)\n- [Nylas Calendar and Scheduler API vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/nylas-calendar-vs-savvycal.md)\n- [Calendly API + MCP vs YouCanBookMe API](https://www.anchorterminal.com/compare/calendly-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": "Calendly API + MCP vs SavvyCal API + MCP",
        "url": ""
      }
    ],
    "description": "Calendly scores 69.1 (B) to SavvyCal's 57 (C) for calendar access. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Calendly API + MCP B 69.1",
      "SavvyCal API + MCP C 57",
      "scores"
    ],
    "h1": "Calendly API + MCP vs SavvyCal API + MCP",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/calendly-vs-savvycal",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Calendly vs SavvyCal for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-04",
    "url": "https://www.anchorterminal.com/compare/calendly-vs-savvycal"
  },
  "tokens": {
    "markdown": 4650,
    "slim": 2730
  },
  "version": 1
}
