{
  "data": {
    "similar": [
      {
        "grade": "BB",
        "json": "https://www.anchorterminal.com/tools/nylas-calendar.json",
        "name": "Nylas Calendar and Scheduler API",
        "score": 75.5,
        "shared": [
          "calendar.read",
          "calendar.availability",
          "calendar.booking",
          "calendar.webhooks"
        ],
        "slug": "nylas-calendar"
      },
      {
        "grade": "B",
        "json": "https://www.anchorterminal.com/tools/calendly.json",
        "name": "Calendly API + MCP",
        "score": 69.1,
        "shared": [
          "calendar.read",
          "calendar.availability",
          "calendar.booking",
          "calendar.webhooks"
        ],
        "slug": "calendly"
      },
      {
        "grade": "B",
        "json": "https://www.anchorterminal.com/tools/cronofy.json",
        "name": "Cronofy API",
        "score": 67.5,
        "shared": [
          "calendar.read",
          "calendar.availability",
          "calendar.booking",
          "calendar.webhooks"
        ],
        "slug": "cronofy"
      },
      {
        "grade": "C",
        "json": "https://www.anchorterminal.com/tools/cal-com.json",
        "name": "Cal.com API v2 + MCP",
        "score": 57.2,
        "shared": [
          "calendar.read",
          "calendar.availability",
          "calendar.booking",
          "calendar.webhooks"
        ],
        "slug": "cal-com"
      },
      {
        "grade": "D",
        "json": "https://www.anchorterminal.com/tools/zoom-scheduler.json",
        "name": "Zoom Scheduler API",
        "score": 50.7,
        "shared": [
          "calendar.read",
          "calendar.availability",
          "calendar.booking",
          "calendar.webhooks"
        ],
        "slug": "zoom-scheduler"
      },
      {
        "grade": "E",
        "json": "https://www.anchorterminal.com/tools/aurinko-calendar.json",
        "name": "Aurinko Calendar API",
        "score": 45.7,
        "shared": [
          "calendar.read",
          "calendar.availability",
          "calendar.booking",
          "calendar.webhooks"
        ],
        "slug": "aurinko-calendar"
      }
    ],
    "tool": {
      "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": 759,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 7,
        "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"
        ],
        "breakdown": [
          {
            "key": "reliability",
            "name": "Reliability",
            "weight": 16,
            "effectiveWeight": 20,
            "score": 70,
            "points": 14,
            "reason": "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.",
            "checked": "2026-11-03"
          },
          {
            "key": "performance",
            "name": "Performance",
            "weight": 10,
            "effectiveWeight": 0,
            "pending": true,
            "points": 0,
            "reason": "Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes."
          },
          {
            "key": "schema",
            "name": "Schema \u0026 documentation",
            "weight": 13,
            "effectiveWeight": 16.25,
            "score": 74,
            "points": 12.03,
            "reason": "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.",
            "checked": "2026-11-03"
          },
          {
            "key": "ergonomics",
            "name": "Agent ergonomics",
            "weight": 13,
            "effectiveWeight": 16.25,
            "score": 53,
            "points": 8.61,
            "reason": "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.",
            "checked": "2026-11-03"
          },
          {
            "key": "security",
            "name": "Security \u0026 auth",
            "weight": 14,
            "effectiveWeight": 17.5,
            "score": 50,
            "points": 8.75,
            "reason": "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.",
            "checked": "2026-11-03"
          },
          {
            "key": "payments",
            "name": "Payments \u0026 pricing",
            "weight": 10,
            "effectiveWeight": 12.5,
            "score": 30,
            "points": 3.75,
            "reason": "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.",
            "checked": "2026-11-03"
          },
          {
            "key": "tasks",
            "name": "Task success",
            "weight": 10,
            "effectiveWeight": 0,
            "pending": true,
            "points": 0,
            "reason": "Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored."
          },
          {
            "key": "maintenance",
            "name": "Maintenance \u0026 community",
            "weight": 7,
            "effectiveWeight": 8.75,
            "score": 40,
            "points": 3.5,
            "reason": "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.",
            "checked": "2026-11-03"
          },
          {
            "key": "transparency",
            "name": "Transparency \u0026 trust",
            "weight": 7,
            "effectiveWeight": 8.75,
            "score": 73,
            "points": 6.39,
            "note": "editorial 57, provenance 89",
            "reason": "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.",
            "checked": "2026-11-03"
          }
        ],
        "assessment": {
          "date": "2026-11-03",
          "basis": "public evidence",
          "confidence": "medium",
          "notes": {
            "ergonomics": "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.",
            "maintenance": "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.",
            "payments": "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.",
            "reliability": "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.",
            "schema": "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.",
            "security": "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.",
            "transparency": "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."
          },
          "sources": [
            {
              "what": "developer overview",
              "url": "https://docs.savvycal.com/developers",
              "seen": "2026-11-03"
            },
            {
              "what": "authentication (PAT and OAuth 2)",
              "url": "https://docs.savvycal.com/developers/authentication.md",
              "seen": "2026-11-03"
            },
            {
              "what": "API v1 reference index",
              "url": "https://docs.savvycal.com/developers/v1/api.md",
              "seen": "2026-11-03"
            },
            {
              "what": "OpenAPI 3.0.0 spec, 22 operations",
              "url": "https://api.savvycal.com/v1/spec",
              "seen": "2026-11-03"
            },
            {
              "what": "webhooks guide",
              "url": "https://docs.savvycal.com/developers/webhooks.md",
              "seen": "2026-11-03"
            },
            {
              "what": "MCP integration guide, 63 tools",
              "url": "https://docs.savvycal.com/integrating-with-ai-assistants.md",
              "seen": "2026-11-03"
            },
            {
              "what": "AI assistants page",
              "url": "https://savvycal.com/ai",
              "seen": "2026-11-03"
            },
            {
              "what": "MCP protected-resource and authorisation server metadata",
              "url": "https://savvycal.com/.well-known/oauth-authorization-server",
              "seen": "2026-11-03"
            },
            {
              "what": "error schema",
              "url": "https://docs.savvycal.com/developers/v1/api/schemas/error.md",
              "seen": "2026-11-03"
            },
            {
              "what": "pagination schema",
              "url": "https://docs.savvycal.com/developers/v1/api/schemas/paginationmeta.md",
              "seen": "2026-11-03"
            },
            {
              "what": "llms.txt",
              "url": "https://docs.savvycal.com/llms.txt",
              "seen": "2026-11-03"
            },
            {
              "what": "pricing",
              "url": "https://savvycal.com/pricing",
              "seen": "2026-11-03"
            },
            {
              "what": "plans and pricing docs",
              "url": "https://docs.savvycal.com/plans-and-pricing.md",
              "seen": "2026-11-03"
            },
            {
              "what": "status page",
              "url": "https://savvycal.instatus.com/",
              "seen": "2026-11-03"
            },
            {
              "what": "status history, September to November 2026",
              "url": "https://savvycal.instatus.com/history",
              "seen": "2026-11-03"
            },
            {
              "what": "status history, June to August 2026",
              "url": "https://savvycal.instatus.com/history/2",
              "seen": "2026-11-03"
            },
            {
              "what": "updates board (changelog)",
              "url": "https://feedback.savvycal.com/updates",
              "seen": "2026-11-03"
            },
            {
              "what": "terms",
              "url": "https://savvycal.com/terms",
              "seen": "2026-11-03"
            },
            {
              "what": "privacy policy",
              "url": "https://savvycal.com/privacy",
              "seen": "2026-11-03"
            },
            {
              "what": "DPA",
              "url": "https://savvycal.com/dpa",
              "seen": "2026-11-03"
            },
            {
              "what": "data processors",
              "url": "https://savvycal.com/data-processors",
              "seen": "2026-11-03"
            },
            {
              "what": "security page",
              "url": "https://savvycal.com/security",
              "seen": "2026-11-03"
            },
            {
              "what": "security.txt",
              "url": "https://savvycal.com/.well-known/security.txt",
              "seen": "2026-11-03"
            },
            {
              "what": "robots.txt",
              "url": "https://savvycal.com/robots.txt",
              "seen": "2026-11-03"
            },
            {
              "what": "company page",
              "url": "https://savvycal.com/company",
              "seen": "2026-11-03"
            },
            {
              "what": "RDAP for savvycal.com",
              "url": "https://rdap.verisign.com/com/v1/domain/savvycal.com",
              "seen": "2026-11-03"
            }
          ],
          "openQuestions": [
            "unchecked: the MCP tool definitions, annotations and any read-only subset, which need an OAuth sign-in. Tool counts come from the docs",
            "Whether a general rate limit applies to the REST API beyond the 10-a-minute booking cap in the spec",
            "Whether personal access tokens expire or can be scoped. The docs describe only creating and naming them",
            "firstReleased is null. The company page and the TinySeed announcement of September 2019 show the product existed then, but no first-hand release date was found",
            "The terms forbid automated and non-human access to the site and bot or scraper use. Public pages were read; robots.txt allows everything but /events/ and sets Content-Signal ai-train=no, both recorded as facts",
            "No official X, LinkedIn or GitHub account for the company was found on savvycal.com"
          ]
        },
        "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
        },
        "scoreHistory": [
          {
            "date": "2026-11-03",
            "grade": "C",
            "kind": "listed",
            "method": "0.7",
            "score": 57
          }
        ]
      },
      "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"
      },
      "notable": [
        "The v1 API has 22 operations across events, scheduling links, time slots, the current user, time zones, webhooks and workflows, generated from an OpenAPI 3.0.0 spec titled SavvyCal Meetings API 1.0.0 (https://api.savvycal.com/v1/spec)",
        "The hosted MCP server at https://savvycal.com/mcp lists 63 tools across account, events, links, people on links, availability, calendars, contacts, polls, workflows, teams and branding, and asks for confirmation before cancelling, deleting or inviting (https://docs.savvycal.com/integrating-with-ai-assistants.md)",
        "The MCP integration was announced on 27 October 2026 and is included on every plan at no extra cost (https://feedback.savvycal.com/updates)",
        "The only documented rate limit is on booking, where more than 10 requests to create an event on one link in a minute, failed ones included, answer 429 (https://api.savvycal.com/v1/spec)",
        "Webhooks are signed with HMAC-SHA256 in `x-savvycal-signature`, follow up to 3 redirects and retry with exponential backoff for up to 20 attempts, over 16 event types (https://docs.savvycal.com/developers/webhooks.md)",
        "The status page at savvycal.instatus.com shows no notices from June to November 2026 and 100 per cent App uptime each month (https://savvycal.instatus.com/history)",
        "The security page says SavvyCal holds no SOC 2 or ISO 27001 certification yet and runs no bug bounty, and security.txt is valid to 2 May 2027 (https://savvycal.com/security)"
      ],
      "area": "everyday",
      "details": [
        {
          "label": "Surface listed",
          "value": "The REST API v1 at https://api.savvycal.com/v1 and the hosted MCP server at https://savvycal.com/mcp, read from docs.savvycal.com, the OpenAPI spec, savvycal.com, the status page and the updates board on 3 November 2026. No account was made and no tool was called; the MCP endpoint answered 401 with protected-resource metadata to a plain GET"
        },
        {
          "label": "REST operations",
          "value": "22. Events (list, get, cancel, create on a link), scheduling links (list, create personal, create in a scope, get, update, delete, duplicate, toggle, slots), current user, time zones (list, get), webhooks (list, create, get, delete), workflows (list, rules)"
        },
        {
          "label": "MCP tools",
          "value": "63 per the docs. Account 2, events 6, scheduling links 9, people on links 3, availability 15, calendars 2, contacts and people 5, meeting polls 7, workflows 6, teams 6, branding 2. It cannot manage integrations, billing or team roles"
        },
        {
          "label": "Rate limits",
          "value": "Only one documented, 10 event creations a minute per link, failed ones included, answered with 429. No general limit, Retry-After or idempotency key found"
        },
        {
          "label": "Pagination",
          "value": "Cursor based. `limit` 1 to 100 (default 20), `after` and `before` from the response `metadata`, null at either end"
        },
        {
          "label": "Errors",
          "value": "An `errors` object keyed by field name (`base` for the whole request), each entry with `message`, optional `validation` such as required, format or length, and `count`. 400, 401, 404, 422 and 429 declared per operation"
        },
        {
          "label": "Webhooks",
          "value": "16 event types (event lifecycle, paid checkout, attendees, polls, workflow actions), HMAC-SHA256 signature per webhook secret, up to 20 attempts with exponential backoff, request log in the app"
        },
        {
          "label": "Calendars",
          "value": "Google Calendar and Microsoft 365, the two components on the status page, plus iCloud and Outlook per the docs"
        },
        {
          "label": "SDKs",
          "value": "None official. The docs recommend open-source OAuth client libraries"
        },
        {
          "label": "Hosting",
          "value": "Fly.io, IAD region (Virginia), with the database on Crunchy Bridge on AWS us-east, per the security page. Processor list at savvycal.com/data-processors, updated 24 October 2026"
        },
        {
          "label": "Legal entity",
          "value": "SavvyCal, Inc., Minneapolis, Minnesota, named in the terms (21 January 2026), privacy policy (17 October 2026) and DPA"
        }
      ],
      "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,
        "checks": [
          {
            "check": "Legal entity named",
            "value": "SavvyCal, Inc.",
            "points": 20,
            "max": 20,
            "state": "ok"
          },
          {
            "check": "Domain age",
            "value": "savvycal.com, registered 2020-08-12 (6 years)",
            "points": 11,
            "max": 15,
            "state": "part"
          },
          {
            "check": "Endpoint on the vendor's domain",
            "value": "api.savvycal.com",
            "points": 15,
            "max": 15,
            "state": "ok"
          },
          {
            "check": "Terms of service",
            "value": "read, states 6 of the 7 things a reader expects, and has 3 clauses that cost points",
            "points": 3.1,
            "max": 10,
            "state": "part"
          },
          {
            "check": "Privacy policy",
            "value": "read, states 7 of the 8 things a reader expects",
            "points": 9.3,
            "max": 10,
            "state": "part"
          },
          {
            "check": "Status page",
            "value": "savvycal.instatus.com",
            "points": 10,
            "max": 10,
            "state": "ok"
          },
          {
            "check": "Changelog",
            "value": "published",
            "points": 10,
            "max": 10,
            "state": "ok"
          },
          {
            "check": "security.txt",
            "value": "valid",
            "points": 10,
            "max": 10,
            "state": "ok"
          },
          {
            "check": "People named",
            "value": "4 named with their role, none with a public profile",
            "points": 7,
            "max": 10,
            "state": "part"
          },
          {
            "check": "Support route",
            "value": "a support address, help pages, a community",
            "points": 5,
            "max": 5,
            "state": "ok"
          }
        ],
        "policies": [
          {
            "kind": "terms",
            "url": "https://savvycal.com/terms",
            "state": "read",
            "readAt": "2026-11-03",
            "statedDate": "2026-01-21",
            "words": 4077,
            "points": 3.1,
            "max": 10,
            "expected": [
              {
                "key": "terms.date",
                "label": "Gives the date it was last updated",
                "found": true,
                "quote": "Last updated January 21, 2026",
                "says": "Last updated 2026-01-21"
              },
              {
                "key": "terms.law",
                "label": "Names the governing law or courts",
                "found": true,
                "quote": "These Terms of Use and your use of SavvyCal are governed by and construed in accordance with the laws of the State of Minnesota applicable to agreements made and to be entirely performed within the State of Minnesota, without regard to its conflict of law principles.",
                "says": "The law of the State of Minnesota"
              },
              {
                "key": "terms.liability",
                "label": "States a limit on its liability",
                "found": true,
                "quote": "NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED HEREIN, OUR LIABILITY TO YOU FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE ACTION, WILL AT ALL TIMES BE LIMITED TO THE AMOUNT PAID, IF ANY, BY YOU TO US DURING THE SIX (6) MONTH PERIOD PRIOR TO ANY CAUSE OF ACTION ARISING.",
                "says": "Capped at the fees paid in the 6 months before the claim"
              },
              {
                "key": "terms.termination",
                "label": "Says how the agreement or account can be ended",
                "found": true,
                "quote": "If you provide any information that is untrue, inaccurate, not current, or incomplete, we have the right to suspend or terminate your account and refuse any and all current or future use of SavvyCal (or any portion thereof)."
              },
              {
                "key": "terms.changes",
                "label": "Says how changes to the terms are announced",
                "found": true,
                "quote": "We may amend our Terms at any time by publishing revised Terms on our Website and/or by sending an email to the address you gave us.",
                "says": "Says it gives notice of a change"
              },
              {
                "key": "terms.use",
                "label": "Lists what users may not do",
                "found": true,
                "quote": "(5) you will not access SavvyCal through automated or non-human means, whether through a bot, script or otherwise;"
              },
              {
                "key": "terms.sla",
                "label": "Refers to a service level or uptime commitment",
                "found": false
              }
            ],
            "toKnow": [
              {
                "key": "terms.automated",
                "label": "Restricts automated access",
                "found": true,
                "quote": "(5) you will not access SavvyCal through automated or non-human means, whether through a bot, script or otherwise;",
                "costsPoints": true
              },
              {
                "key": "terms.benchmark",
                "label": "Restricts benchmarking or competitive use",
                "found": true,
                "quote": "Use SavvyCal as part of any effort to compete with us or otherwise use SavvyCal and/or the Content for any revenue-generating endeavor or commercial enterprise.",
                "costsPoints": true
              },
              {
                "key": "terms.nonotice",
                "label": "Says the terms or the service can change without notice",
                "found": true,
                "quote": "SavvyCal reserves the right to change any and all features of our Services, at any time, without prior notice.",
                "costsPoints": true
              },
              {
                "key": "terms.arbitration",
                "label": "Requires arbitration or waives class actions",
                "found": true,
                "quote": "If the Parties are unable to resolve a Dispute through informal negotiations, the Dispute (except those Disputes expressly excluded below) will be finally and exclusively resolved by binding arbitration."
              }
            ],
            "notes": [
              {
                "date": "2026-11-03",
                "text": "Use is for individual purposes, and commercial endeavours need SavvyCal's specific endorsement or approval.",
                "quote": "SavvyCal may not be used in connection with any commercial endeavors except those that are specifically endorsed or approved by us."
              },
              {
                "date": "2026-11-03",
                "text": "Liability is capped at the amount paid in the six months before the cause of action arose.",
                "quote": "NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED HEREIN, OUR LIABILITY TO YOU FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE ACTION, WILL AT ALL TIMES BE LIMITED TO THE AMOUNT PAID, IF ANY, BY YOU TO US DURING THE SIX (6) MONTH PERIOD PRIOR TO ANY CAUSE OF ACTION ARISING."
              },
              {
                "date": "2026-11-03",
                "text": "Users may not use a buying agent or purchasing agent to make purchases on SavvyCal.",
                "quote": "Use a buying agent or purchasing agent to make purchases on SavvyCal."
              }
            ]
          },
          {
            "kind": "privacy",
            "url": "https://savvycal.com/privacy",
            "state": "read",
            "readAt": "2026-11-03",
            "statedDate": "2026-10-17",
            "words": 2893,
            "points": 9.3,
            "max": 10,
            "expected": [
              {
                "key": "privacy.date",
                "label": "Gives the date it was last updated",
                "found": true,
                "quote": "Last updated October 17, 2026",
                "says": "Last updated 2026-10-17"
              },
              {
                "key": "privacy.collected",
                "label": "Says what personal data is collected",
                "found": true,
                "quote": "We collect information that you voluntarily provide to us when you:"
              },
              {
                "key": "privacy.retention",
                "label": "Says how long data is kept",
                "found": true,
                "quote": "We will only keep your personal information for as long as it is necessary for the purposes set out in this privacy policy, unless a longer retention period is required or permitted by law (such as tax, accounting, or other legal requirements).",
                "says": "For as long as needed, with no period named"
              },
              {
                "key": "privacy.processors",
                "label": "Says who else receives the data",
                "found": true,
                "quote": "We do not sell your information to any third parties or disclose it in exchange for money or other valuable consideration."
              },
              {
                "key": "privacy.sale",
                "label": "Says whether personal data is sold or shared for advertising",
                "found": true,
                "quote": "We do not rent, buy, or sell personal information.",
                "says": "Says it does not sell personal data"
              },
              {
                "key": "privacy.rights",
                "label": "Says what rights people have over their data",
                "found": true,
                "quote": "We do not process any sensitive information (as per the GDPR Article 9)."
              },
              {
                "key": "privacy.contact",
                "label": "Gives a privacy contact",
                "found": false
              },
              {
                "key": "privacy.transfers",
                "label": "Says where data is transferred or stored",
                "found": true,
                "quote": "We have implemented measures to protect your personal information, including by using the European Commission’s Standard Contractual Clauses for transfers of personal information between our group companies and between us and our third-party providers.",
                "says": "Relies on standard contractual clauses"
              }
            ],
            "toKnow": [
              {
                "key": "privacy.sells",
                "label": "Says it sells personal data or shares it for advertising",
                "found": true,
                "quote": "OpenAI receives this information as an independent controller and may use it for its own purposes, including to measure and deliver ads and to develop and improve its products and services."
              }
            ],
            "notes": [
              {
                "date": "2026-11-03",
                "text": "Connected calendars are queried only for busy times, and no details of calendar events are stored.",
                "quote": "We do not store any details about your calendar events."
              },
              {
                "date": "2026-11-03",
                "text": "Visitors arriving from a ChatGPT ad have signup and subscription events, device data, IP address and a hashed email sent to OpenAI's measurement pixel.",
                "quote": "The pixel may also detect contact information you enter on the Website, such as your email address, and send it to OpenAI as a one-way (SHA-256) hash instead of plain text."
              }
            ]
          }
        ]
      },
      "humans": {
        "slug": "savvycal",
        "checked": "2026-11-03",
        "company": "SavvyCal",
        "people": [
          {
            "name": "Derrick Reimer",
            "role": "Founder",
            "founder": true,
            "page": "/people/derrick-reimer/"
          },
          {
            "name": "Jesse Leite",
            "role": "Engineering",
            "page": "/people/jesse-leite/"
          },
          {
            "name": "Reggie Rendal",
            "role": "Support",
            "page": "/people/reggie-rendal/"
          },
          {
            "name": "Stephen Lovino",
            "role": "Support",
            "page": "/people/stephen-lovino/"
          }
        ],
        "peopleNote": "The company page (savvycal.com/company, read 3 November 2026) names Derrick Reimer as founder, who previously co-founded Drip, and lists Jesse Leite (engineering), Reggie Rendal and Stephen Lovino (support). It links only Reimer's personal site, derrickreimer.com, which carries no LinkedIn, X or GitHub link, so none is recorded. The page calls SavvyCal an indie SaaS business with a little financial backing from TinySeed and a few angel investors, independent by choice. TinySeed's own announcement of September 2019 names SavvyCal in its first accelerator batch. The angels are not named on any first-hand page, and no funding amount was found on savvycal.com, tinyseed.com or the company page. No company X, LinkedIn or GitHub account appears on savvycal.com.",
        "companySocial": {},
        "support": {
          "emails": [
            "support@savvycal.com"
          ],
          "urls": [
            "https://docs.savvycal.com/",
            "https://docs.savvycal.com/contact"
          ],
          "community": [
            {
              "label": "Feature requests and updates board",
              "url": "https://feedback.savvycal.com/",
              "kind": "forum"
            }
          ]
        },
        "sources": [
          "https://savvycal.com/company",
          "https://www.derrickreimer.com/",
          "https://tinyseed.com/latest/2019-batch-announcement-mightycal",
          "https://savvycal.com/",
          "https://docs.savvycal.com/contact.md",
          "https://feedback.savvycal.com/updates",
          "https://savvycal.com/terms"
        ],
        "ownership": {
          "status": "private",
          "checked": "2026-11-03",
          "sources": [
            "https://savvycal.com/company",
            "https://savvycal.com/terms",
            "https://tinyseed.com/latest/2019-batch-announcement-mightycal"
          ]
        },
        "investors": [
          {
            "name": "TinySeed",
            "kind": "accelerator",
            "rounds": [
              "2019 accelerator batch, September 2019"
            ],
            "url": "https://tinyseed.com",
            "source": "https://tinyseed.com/latest/2019-batch-announcement-mightycal",
            "quote": "We're thrilled to announce that Derrick Reimer, founder of SavvyCal, has joined the 2019 TinySeed accelerator batch.",
            "page": "/investors/tinyseed/"
          }
        ]
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/savvycal.json",
      "live": {
        "slug": "savvycal",
        "probe": {
          "target": "https://api.savvycal.com/v1",
          "method": "get",
          "lastAt": "2026-11-04T20:05:24.118823393Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 138,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 166,
          "p95ms24h": 230,
          "samples24h": 48,
          "samples30d": 48,
          "days": [
            {
              "date": "2026-11-04",
              "probes": 48,
              "ok": 48
            }
          ]
        },
        "vendorStatus": {
          "page": "https://savvycal.instatus.com",
          "indicator": "unknown",
          "summary": "no machine-readable status found",
          "checkedAt": "2026-11-04T15:32:34.395223761Z"
        },
        "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-04T20:05:24.118823393Z"
      }
    },
    "verify": {
      "accepts": "a page on savvycal.com or one of its subdomains",
      "badgeUrl": "https://www.anchorterminal.com/badges/savvycal.svg",
      "body": {
        "slug": "savvycal",
        "url": "the page with the badge or the link"
      },
      "docs": "https://www.anchorterminal.com/builders/#verify",
      "effect": "none, it never changes a grade, rank or review",
      "endpoint": "https://www.anchorterminal.com/api/v1/verify",
      "listingUrl": "https://www.anchorterminal.com/tools/savvycal",
      "mcpTool": "verify_listing",
      "recheck": "weekly; two failed checks in a row and it lapses, a later pass restores it",
      "snippets": {
        "html": "\u003ca href=\"https://www.anchorterminal.com/tools/savvycal\"\u003e\u003cimg src=\"https://www.anchorterminal.com/badges/savvycal.svg\" alt=\"SavvyCal API + MCP on Anchor Terminal\" height=\"20\"\u003e\u003c/a\u003e",
        "markdown": "[![SavvyCal API + MCP on Anchor Terminal](https://www.anchorterminal.com/badges/savvycal.svg)](https://www.anchorterminal.com/tools/savvycal)",
        "link": "\u003ca href=\"https://www.anchorterminal.com/tools/savvycal\"\u003eSavvyCal API + MCP on Anchor Terminal\u003c/a\u003e"
      }
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/savvycal",
    "json": "https://www.anchorterminal.com/tools/savvycal.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/savvycal.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "pricing": "https://www.anchorterminal.com/tools/savvycal#pricing",
    "reviews": "https://www.anchorterminal.com/tools/savvycal#reviews",
    "slim": "https://www.anchorterminal.com/tools/savvycal.min.md"
  },
  "markdown": "## Overview\n\n**Grade C · 57/100 · rank #759 of 1349 · #7 in Calendars \u0026 scheduling · not agent-ready · confidence medium**\n\n\n## Assessment\n\nA 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## Facts\n\n| Field | Value |\n| --- | --- |\n| Vendor | SavvyCal, Inc. (https://savvycal.com) |\n| Kind | HTTP API |\n| Category | Calendars \u0026 scheduling (https://www.anchorterminal.com/categories/scheduling) |\n| Transport | HTTP, Streamable HTTP |\n| Endpoint | `https://api.savvycal.com/v1` |\n| Auth | OAuth or key · 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. |\n| Pricing | Freemium ($12 / seat-mo) · 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. |\n| x402 | No · 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. |\n| Licence | unknown |\n| Tools exposed | 63 |\n| Docs | https://docs.savvycal.com/developers |\n| llms.txt | https://docs.savvycal.com/llms.txt |\n| Last release | 2026-10-27 |\n| Surface listed | The REST API v1 at https://api.savvycal.com/v1 and the hosted MCP server at https://savvycal.com/mcp, read from docs.savvycal.com, the OpenAPI spec, savvycal.com, the status page and the updates board on 3 November 2026. No account was made and no tool was called; the MCP endpoint answered 401 with protected-resource metadata to a plain GET |\n| REST operations | 22. Events (list, get, cancel, create on a link), scheduling links (list, create personal, create in a scope, get, update, delete, duplicate, toggle, slots), current user, time zones (list, get), webhooks (list, create, get, delete), workflows (list, rules) |\n| MCP tools | 63 per the docs. Account 2, events 6, scheduling links 9, people on links 3, availability 15, calendars 2, contacts and people 5, meeting polls 7, workflows 6, teams 6, branding 2. It cannot manage integrations, billing or team roles |\n| Rate limits | Only one documented, 10 event creations a minute per link, failed ones included, answered with 429. No general limit, Retry-After or idempotency key found |\n| Pagination | Cursor based. `limit` 1 to 100 (default 20), `after` and `before` from the response `metadata`, null at either end |\n| Errors | An `errors` object keyed by field name (`base` for the whole request), each entry with `message`, optional `validation` such as required, format or length, and `count`. 400, 401, 404, 422 and 429 declared per operation |\n| Webhooks | 16 event types (event lifecycle, paid checkout, attendees, polls, workflow actions), HMAC-SHA256 signature per webhook secret, up to 20 attempts with exponential backoff, request log in the app |\n| Calendars | Google Calendar and Microsoft 365, the two components on the status page, plus iCloud and Outlook per the docs |\n| SDKs | None official. The docs recommend open-source OAuth client libraries |\n| Hosting | Fly.io, IAD region (Virginia), with the database on Crunchy Bridge on AWS us-east, per the security page. Processor list at savvycal.com/data-processors, updated 24 October 2026 |\n| Legal entity | SavvyCal, Inc., Minneapolis, Minnesota, named in the terms (21 January 2026), privacy policy (17 October 2026) and DPA |\n| Capabilities | calendar.booking, calendar.availability, calendar.read, calendar.webhooks |\n| Tags | hosted, freemium, free-tier, no-card, mcp, remote-mcp, oauth, llms-txt, openapi, webhooks, status-page, security-txt, closed-source |\n| JSON | https://www.anchorterminal.com/api/v1/tools/savvycal.json |\n\n## Score breakdown (methodology v0.7, October 2026 research run)\n\nAssessed 2026-11-03 from public evidence against the published checklist (https://www.anchorterminal.com/benchmark/#checklist). Confidence: medium. Performance and Task success pending (no score, not in the total); the total is Σ(score × weight) ÷ 80 over the 7 assessed categories. \"This run\" is each category's share of the 100 points.\n\n| Category | Weight | This run | Score (0–100) | Points |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% | 20 | 70 | 14.0 |\n| Performance | 10% | pending | pending | n/a |\n| Schema \u0026 documentation | 13% | 16.2 | 74 | 12.0 |\n| Agent ergonomics | 13% | 16.2 | 53 | 8.6 |\n| Security \u0026 auth | 14% | 17.5 | 50 | 8.8 |\n| Payments \u0026 pricing | 10% | 12.5 | 30 | 3.8 |\n| Task success | 10% | pending | pending | n/a |\n| Maintenance \u0026 community | 7% | 8.8 | 40 | 3.5 |\n| Transparency \u0026 trust (editorial 57, provenance 89) | 7% | 8.8 | 73 | 6.4 |\n| Negative events | up to −15 | up to −15 | none recorded | 0 |\n| **Total** | | | | **57 → C** |\n\n### Why each score\n\n- Reliability 70 (checked 2026-11-03): 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- Performance: Pending. Latency is measured per call by our probes, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until the first probe window closes.\n- Schema \u0026 documentation 74 (checked 2026-11-03): 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- Agent ergonomics 53 (checked 2026-11-03): 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- Security \u0026 auth 50 (checked 2026-11-03): 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- Payments \u0026 pricing 30 (checked 2026-11-03): 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- Task success: Pending. Task success needs the category task suites run through each tool, which haven't run yet, so this run doesn't score it. Its weight is shared across the assessed categories until then. A data provider's data-quality score is published on its listing now and becomes half of this category when it's scored.\n- Maintenance \u0026 community 40 (checked 2026-11-03): 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- Transparency \u0026 trust 73 (checked 2026-11-03): 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\nFix list, everything this grade says the listing lacks, the biggest gain first (17 items). What it covers is at https://www.anchorterminal.com/fixes/savvycal.md (JSON https://www.anchorterminal.com/fixes/savvycal.json). The whole list for a coding agent comes from `POST https://www.anchorterminal.com/api/v1/fix-list` with `{\"listing\": \"savvycal\", \"plan\": \"read\"}`, free while the beta runs\n\n### What we couldn't check\n\n- unchecked: the MCP tool definitions, annotations and any read-only subset, which need an OAuth sign-in. Tool counts come from the docs\n- Whether a general rate limit applies to the REST API beyond the 10-a-minute booking cap in the spec\n- Whether personal access tokens expire or can be scoped. The docs describe only creating and naming them\n- firstReleased is null. The company page and the TinySeed announcement of September 2019 show the product existed then, but no first-hand release date was found\n- The terms forbid automated and non-human access to the site and bot or scraper use. Public pages were read; robots.txt allows everything but /events/ and sets Content-Signal ai-train=no, both recorded as facts\n- No official X, LinkedIn or GitHub account for the company was found on savvycal.com\n\n### Sources\n\n- developer overview: \u003chttps://docs.savvycal.com/developers\u003e (seen 2026-11-03)\n- authentication (PAT and OAuth 2): \u003chttps://docs.savvycal.com/developers/authentication.md\u003e (seen 2026-11-03)\n- API v1 reference index: \u003chttps://docs.savvycal.com/developers/v1/api.md\u003e (seen 2026-11-03)\n- OpenAPI 3.0.0 spec, 22 operations: \u003chttps://api.savvycal.com/v1/spec\u003e (seen 2026-11-03)\n- webhooks guide: \u003chttps://docs.savvycal.com/developers/webhooks.md\u003e (seen 2026-11-03)\n- MCP integration guide, 63 tools: \u003chttps://docs.savvycal.com/integrating-with-ai-assistants.md\u003e (seen 2026-11-03)\n- AI assistants page: \u003chttps://savvycal.com/ai\u003e (seen 2026-11-03)\n- MCP protected-resource and authorisation server metadata: \u003chttps://savvycal.com/.well-known/oauth-authorization-server\u003e (seen 2026-11-03)\n- error schema: \u003chttps://docs.savvycal.com/developers/v1/api/schemas/error.md\u003e (seen 2026-11-03)\n- pagination schema: \u003chttps://docs.savvycal.com/developers/v1/api/schemas/paginationmeta.md\u003e (seen 2026-11-03)\n- llms.txt: \u003chttps://docs.savvycal.com/llms.txt\u003e (seen 2026-11-03)\n- pricing: \u003chttps://savvycal.com/pricing\u003e (seen 2026-11-03)\n- plans and pricing docs: \u003chttps://docs.savvycal.com/plans-and-pricing.md\u003e (seen 2026-11-03)\n- status page: \u003chttps://savvycal.instatus.com/\u003e (seen 2026-11-03)\n- status history, September to November 2026: \u003chttps://savvycal.instatus.com/history\u003e (seen 2026-11-03)\n- status history, June to August 2026: \u003chttps://savvycal.instatus.com/history/2\u003e (seen 2026-11-03)\n- updates board (changelog): \u003chttps://feedback.savvycal.com/updates\u003e (seen 2026-11-03)\n- terms: \u003chttps://savvycal.com/terms\u003e (seen 2026-11-03)\n- privacy policy: \u003chttps://savvycal.com/privacy\u003e (seen 2026-11-03)\n- DPA: \u003chttps://savvycal.com/dpa\u003e (seen 2026-11-03)\n- data processors: \u003chttps://savvycal.com/data-processors\u003e (seen 2026-11-03)\n- security page: \u003chttps://savvycal.com/security\u003e (seen 2026-11-03)\n- security.txt: \u003chttps://savvycal.com/.well-known/security.txt\u003e (seen 2026-11-03)\n- robots.txt: \u003chttps://savvycal.com/robots.txt\u003e (seen 2026-11-03)\n- company page: \u003chttps://savvycal.com/company\u003e (seen 2026-11-03)\n- RDAP for savvycal.com: \u003chttps://rdap.verisign.com/com/v1/domain/savvycal.com\u003e (seen 2026-11-03)\n\n## Score history\n\nEvery move of a score since the listing was graded, newest first, with its cause. A score can't move without an entry here. JSON: https://www.anchorterminal.com/api/v1/tools/savvycal/history.json\n\n- 2026-11-03: graded 57 C (methodology 0.7)\n\n## Who's behind it (provenance 89/100, checked 2026-11-03)\n\n| Check | Finding | Points |\n| --- | --- | --- |\n| Legal entity named | SavvyCal, Inc. | 20/20 |\n| Domain age | savvycal.com, registered 2020-08-12 (6 years) | 11/15 |\n| Endpoint on the vendor's domain | api.savvycal.com | 15/15 |\n| Terms of service | read, states 6 of the 7 things a reader expects, and has 3 clauses that cost points | 3.1/10 |\n| Privacy policy | read, states 7 of the 8 things a reader expects | 9.3/10 |\n| Status page | savvycal.instatus.com | 10/10 |\n| Changelog | published | 10/10 |\n| security.txt | valid | 10/10 |\n| People named | 4 named with their role, none with a public profile | 7/10 |\n| Support route | a support address, help pages, a community | 5/5 |\n\nThe 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.\n\nsavvycal.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.\n\nThe 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.\n\nRDAP gives savvycal.com a registration date of 12 August 2020.\n\nsecurity.txt at savvycal.com/.well-known/security.txt names security@savvycal.com, expires 2 May 2027 and points to savvycal.com/security.\n\nThe 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.\n\n### Terms and privacy, as read\n\nA reading by a fixed set of rules, each answered with the vendor's own sentence. Not legal advice.\n\n**Terms of service** (https://savvycal.com/terms), read 2026-11-03, dated 2026-01-21, states 6 of the 7 things a reader expects.\n\n- To know. Restricts automated access (costs points). \"(5) you will not access SavvyCal through automated or non-human means, whether through a bot, script or otherwise;\"\n- To know. Restricts benchmarking or competitive use (costs points). \"Use SavvyCal as part of any effort to compete with us or otherwise use SavvyCal and/or the Content for any revenue-generating endeavor or commercial enterprise.\"\n- To know. Says the terms or the service can change without notice (costs points). \"SavvyCal reserves the right to change any and all features of our Services, at any time, without prior notice.\"\n- To know. Requires arbitration or waives class actions. \"If the Parties are unable to resolve a Dispute through informal negotiations, the Dispute (except those Disputes expressly excluded below) will be finally and exclusively resolved by binding arbitration.\"\n- Gives the date it was last updated. Last updated 2026-01-21.\n- Names the governing law or courts. The law of the State of Minnesota.\n- States a limit on its liability. Capped at the fees paid in the 6 months before the claim.\n- Says how changes to the terms are announced. Says it gives notice of a change.\n- Not found in the text. Refers to a service level or uptime commitment.\n- Also in the text (2026-11-03). Use is for individual purposes, and commercial endeavours need SavvyCal's specific endorsement or approval. \"SavvyCal may not be used in connection with any commercial endeavors except those that are specifically endorsed or approved by us.\"\n- Also in the text (2026-11-03). Liability is capped at the amount paid in the six months before the cause of action arose. \"NOTWITHSTANDING ANYTHING TO THE CONTRARY CONTAINED HEREIN, OUR LIABILITY TO YOU FOR ANY CAUSE WHATSOEVER AND REGARDLESS OF THE FORM OF THE ACTION, WILL AT ALL TIMES BE LIMITED TO THE AMOUNT PAID, IF ANY, BY YOU TO US DURING THE SIX (6) MONTH PERIOD PRIOR TO ANY CAUSE OF ACTION ARISING.\"\n- Also in the text (2026-11-03). Users may not use a buying agent or purchasing agent to make purchases on SavvyCal. \"Use a buying agent or purchasing agent to make purchases on SavvyCal.\"\n\n**Privacy policy** (https://savvycal.com/privacy), read 2026-11-03, dated 2026-10-17, states 7 of the 8 things a reader expects.\n\n- To know. Says it sells personal data or shares it for advertising. \"OpenAI receives this information as an independent controller and may use it for its own purposes, including to measure and deliver ads and to develop and improve its products and services.\"\n- Gives the date it was last updated. Last updated 2026-10-17.\n- Says how long data is kept. For as long as needed, with no period named.\n- Says whether personal data is sold or shared for advertising. Says it does not sell personal data.\n- Not found in the text. Gives a privacy contact.\n- Says where data is transferred or stored. Relies on standard contractual clauses.\n- Also in the text (2026-11-03). Connected calendars are queried only for busy times, and no details of calendar events are stored. \"We do not store any details about your calendar events.\"\n- Also in the text (2026-11-03). Visitors arriving from a ChatGPT ad have signup and subscription events, device data, IP address and a hashed email sent to OpenAI's measurement pixel. \"The pixel may also detect contact information you enter on the Website, such as your email address, and send it to OpenAI as a one-way (SHA-256) hash instead of plain text.\"\n\n## Humans behind the project (researched 2026-11-03 from public pages, not part of the grade)\n\n### Key people\n\n- Derrick Reimer, Founder\n- Jesse Leite, Engineering\n- Reggie Rendal, Support\n- Stephen Lovino, Support\n- Note: The company page (savvycal.com/company, read 3 November 2026) names Derrick Reimer as founder, who previously co-founded Drip, and lists Jesse Leite (engineering), Reggie Rendal and Stephen Lovino (support). It links only Reimer's personal site, derrickreimer.com, which carries no LinkedIn, X or GitHub link, so none is recorded. The page calls SavvyCal an indie SaaS business with a little financial backing from TinySeed and a few angel investors, independent by choice. TinySeed's own announcement of September 2019 names SavvyCal in its first accelerator batch. The angels are not named on any first-hand page, and no funding amount was found on savvycal.com, tinyseed.com or the company page. No company X, LinkedIn or GitHub account appears on savvycal.com.\n\n### Ownership and investors\n\n- Backed by: TinySeed\n\n### Getting support\n\n- Support email: support@savvycal.com\n- Help: https://docs.savvycal.com/\n- Help: https://docs.savvycal.com/contact\n- Community (Feature requests and updates board): https://feedback.savvycal.com/\n- Sources: https://savvycal.com/company, https://www.derrickreimer.com/, https://tinyseed.com/latest/2019-batch-announcement-mightycal, https://savvycal.com/, https://docs.savvycal.com/contact.md, https://feedback.savvycal.com/updates, https://savvycal.com/terms\n\n## Live (updated 2026-11-04 20:05 UTC)\n\n- Right now: up, HTTP 404, 138 ms, checked 2026-11-04 20:05 UTC (get on `https://api.savvycal.com/v1`)\n- Uptime 24h 100.0% (48 probes) · 30 days 100.0% (48 probes) · p50 166 ms · p95 230 ms\n- Vendor status page: unknown, no machine-readable status found\n- security.txt: valid, expires 2027-05-03T00:00:00.000Z\n- Always current: https://www.anchorterminal.com/api/v1/live/savvycal.json\n\n## Probe metrics\n\nNot measured yet. Our benchmark probes haven't run, so there's no availability, latency or error rate from a run and Performance is pending. Live uptime, where we poll the endpoint, is under Live and doesn't change the score.\n\n## Prices\n\n| Item | Price | Unit | Note |\n| --- | --- | --- | --- |\n| Basic | $12 | per seat per month | $120 a user a year billed annually |\n| Premium | $20 | per seat per month | $200 a user a year billed annually |\n\nAcross all listings: https://www.anchorterminal.com/prices/index.md\n\n## Strengths\n\n- OpenAPI 3.0.0 spec at api.savvycal.com/v1/spec, llms.txt and a Markdown twin of every docs page\n- Hosted MCP server with OAuth 2.1, PKCE, dynamic client registration and `mcp:read` and `mcp:write` scopes, included on every plan\n- Webhooks signed with HMAC-SHA256, retried up to 20 times with exponential backoff, over 16 event types\n- Status page with calendar connection components and no notices from June to November 2026\n- The MCP docs say the assistant asks for confirmation before cancelling meetings, deleting links or inviting teammates\n\n## Weaknesses\n\n- No general rate limit documented. The spec names one 429, on creating events (10 a minute per link)\n- No idempotency keys, Retry-After header or official SDK\n- No SOC 2 or ISO 27001 certification and no bug bounty, per the security page\n- OAuth apps and personal access tokens carry no scopes, so a REST token reaches everything the user can\n- Only one dated product update in the 90 days to 3 November 2026, and no API changelog\n\n\n\n## Before you call it (notes for agents)\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## Connect\n\nFirst request:\n\n```bash\ncurl https://api.savvycal.com/v1/me -H \"Authorization: Bearer $SAVVYCAL_TOKEN\"\n```\n\nClaude Code:\n\n```bash\nclaude mcp add --transport http savvycal https://savvycal.com/mcp\n```\n\nMCP client configuration:\n\n```json\n{\n  \"mcpServers\": {\n    \"savvycal\": {\n      \"url\": \"https://savvycal.com/mcp\"\n    }\n  }\n}\n```\n\nThrough letme: https://letme.dev/savvycal. letme answers with the pick and how to call it direct. How it works: https://www.anchorterminal.com/letme/index.md\n\n## Similar tools\n\nRanked by shared capabilities, then score. Same-category tools with no shared capability key are listed last.\n\n| Tool | Grade | Score | Rank | Shared capabilities | x402 | Markdown |\n| --- | --- | --- | --- | --- | --- | --- |\n| Nylas Calendar and Scheduler API | BB | 75.5 | 51 | calendar.read, calendar.availability, calendar.booking, calendar.webhooks | no | https://www.anchorterminal.com/tools/nylas-calendar.md |\n| Calendly API + MCP | B | 69.1 | 234 | calendar.read, calendar.availability, calendar.booking, calendar.webhooks | no | https://www.anchorterminal.com/tools/calendly.md |\n| Cronofy API | B | 67.5 | 286 | calendar.read, calendar.availability, calendar.booking, calendar.webhooks | no | https://www.anchorterminal.com/tools/cronofy.md |\n| Cal.com API v2 + MCP | C | 57.2 | 748 | calendar.read, calendar.availability, calendar.booking, calendar.webhooks | no | https://www.anchorterminal.com/tools/cal-com.md |\n| Zoom Scheduler API | D | 50.7 | 998 | calendar.read, calendar.availability, calendar.booking, calendar.webhooks | no | https://www.anchorterminal.com/tools/zoom-scheduler.md |\n| Aurinko Calendar API | E | 45.7 | 1126 | calendar.read, calendar.availability, calendar.booking, calendar.webhooks | no | https://www.anchorterminal.com/tools/aurinko-calendar.md |\n\n## Panel reviews (0)\n\nReviewed by the Anchor panel (https://www.anchorterminal.com/reviewers/index.md): .\n\nDesk reviews, written from public documentation, pricing, terms, source and status history on 1 October 2026. No calls made. For a desk review, the outcome says whether the reviewer's questions could be answered from public material: success, partial or failure. How reviews work: https://www.anchorterminal.com/reviews/how-it-works.md\n\n## Notable\n\n- The v1 API has 22 operations across events, scheduling links, time slots, the current user, time zones, webhooks and workflows, generated from an OpenAPI 3.0.0 spec titled SavvyCal Meetings API 1.0.0 (source: \u003chttps://api.savvycal.com/v1/spec\u003e)\n- The hosted MCP server at https://savvycal.com/mcp lists 63 tools across account, events, links, people on links, availability, calendars, contacts, polls, workflows, teams and branding, and asks for confirmation before cancelling, deleting or inviting (source: \u003chttps://docs.savvycal.com/integrating-with-ai-assistants.md\u003e)\n- The MCP integration was announced on 27 October 2026 and is included on every plan at no extra cost (source: \u003chttps://feedback.savvycal.com/updates\u003e)\n- The only documented rate limit is on booking, where more than 10 requests to create an event on one link in a minute, failed ones included, answer 429 (source: \u003chttps://api.savvycal.com/v1/spec\u003e)\n- Webhooks are signed with HMAC-SHA256 in `x-savvycal-signature`, follow up to 3 redirects and retry with exponential backoff for up to 20 attempts, over 16 event types (source: \u003chttps://docs.savvycal.com/developers/webhooks.md\u003e)\n- The status page at savvycal.instatus.com shows no notices from June to November 2026 and 100 per cent App uptime each month (source: \u003chttps://savvycal.instatus.com/history\u003e)\n- The security page says SavvyCal holds no SOC 2 or ISO 27001 certification yet and runs no bug bounty, and security.txt is valid to 2 May 2027 (source: \u003chttps://savvycal.com/security\u003e)\n\n- #7 of 14 in 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## Compare\n\n- [Acuity Scheduling API vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/acuity-scheduling-vs-savvycal.md): E 42.5 vs C 57\n- [Agenda Hero vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/agenda-hero-vs-savvycal.md): F 34.2 vs C 57\n- [Apiroc Unified Calendar API vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/apiroc-vs-savvycal.md): E 41.2 vs C 57\n- [Aurinko Calendar API vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/aurinko-calendar-vs-savvycal.md): E 45.7 vs C 57\n- [Cal.com API v2 + MCP vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/cal-com-vs-savvycal.md): C 57.2 vs C 57\n- [Calendly API + MCP vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/calendly-vs-savvycal.md): B 69.1 vs C 57\n- [Cozi Family Organizer vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/cozi-vs-savvycal.md): F 16.1 vs C 57\n- [Cronofy API vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/cronofy-vs-savvycal.md): B 67.5 vs C 57\n- [Google Calendar API vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/google-calendar-api-vs-savvycal.md): A 79.7 vs C 57\n- [Microsoft Graph Calendar API vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/microsoft-graph-calendar-vs-savvycal.md): C 58.7 vs C 57\n- [Nylas Calendar and Scheduler API vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/nylas-calendar-vs-savvycal.md): BB 75.5 vs C 57\n- [SavvyCal API + MCP vs YouCanBookMe API](https://www.anchorterminal.com/compare/savvycal-vs-youcanbookme.md): C 57 vs F 22.5\n- [SavvyCal API + MCP vs Zoom Scheduler API](https://www.anchorterminal.com/compare/savvycal-vs-zoom-scheduler.md): C 57 vs D 50.7\n\n## Verify this listing\n\nFor the vendor. The badge or a plain link to this page verifies the listing, from a page on savvycal.com or one of its subdomains. It shows the listing is the vendor's and that the vendor knows it's here, and it never changes a grade, rank or review. The vendor sends the page's address to `POST https://www.anchorterminal.com/api/v1/verify` as `{\"slug\": \"savvycal\", \"url\": \"…\"}`, or calls the `verify_listing` tool at https://www.anchorterminal.com/mcp. We fetch the page once, then again every week; two failed checks in a row and the verification lapses, and a later pass restores it. What we check: https://www.anchorterminal.com/builders/index.md#verify\n\nHTML badge:\n\n```html\n\u003ca href=\"https://www.anchorterminal.com/tools/savvycal\"\u003e\u003cimg src=\"https://www.anchorterminal.com/badges/savvycal.svg\" alt=\"SavvyCal API + MCP on Anchor Terminal\" height=\"20\"\u003e\u003c/a\u003e\n```\n\nMarkdown badge, for a README:\n\n```markdown\n[![SavvyCal API + MCP on Anchor Terminal](https://www.anchorterminal.com/badges/savvycal.svg)](https://www.anchorterminal.com/tools/savvycal)\n```\n\nPlain link:\n\n```html\n\u003ca href=\"https://www.anchorterminal.com/tools/savvycal\"\u003eSavvyCal API + MCP on Anchor Terminal\u003c/a\u003e\n```\n\n## Share this listing\n\nFor the vendor. Sharing assets for social media, two PNGs of 1200 × 630 that say SavvyCal API + MCP is listed on Anchor Terminal, with the vendor's logo and this page's address and no grade or score.\n\n- Dark: https://www.anchorterminal.com/assets/share/savvycal-dark.png\n- Light: https://www.anchorterminal.com/assets/share/savvycal-light.png\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": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Calendars \u0026 scheduling",
        "url": "https://www.anchorterminal.com/categories/scheduling"
      },
      {
        "name": "SavvyCal API + MCP",
        "url": ""
      }
    ],
    "description": "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.",
    "facts": [
      "rank #759 of 1349",
      "OAuth or key auth",
      "0 desk reviews"
    ],
    "h1": "SavvyCal API + MCP",
    "image": "https://www.anchorterminal.com/assets/og/tools-savvycal.png",
    "path": "/tools/savvycal",
    "published": "2026-10-01",
    "section": "tools",
    "title": "SavvyCal review (2026): pricing, alternatives and grade C",
    "toc": null,
    "updated": "2026-11-04",
    "url": "https://www.anchorterminal.com/tools/savvycal"
  },
  "tokens": {
    "markdown": 8250,
    "slim": 1780
  },
  "version": 1
}
