{
  "data": {
    "a": {
      "slug": "acuity-scheduling",
      "name": "Acuity Scheduling API",
      "vendor": "Squarespace",
      "vendorUrl": "https://acuityscheduling.com",
      "kind": "http-api",
      "category": "scheduling",
      "summary": "Acuity Scheduling is Squarespace's appointment booking product. Its REST API reads availability, creates, reschedules and cancels appointments, manages clients and blocked time, and sends webhooks, with Basic authentication or OAuth2.",
      "url": "https://www.anchorterminal.com/tools/acuity-scheduling",
      "markdownUrl": "https://www.anchorterminal.com/tools/acuity-scheduling.md",
      "slimMarkdownUrl": "https://www.anchorterminal.com/tools/acuity-scheduling.min.md",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/acuity-scheduling.json",
      "dns": "acuity-scheduling.grade.anchorterminal.com",
      "repo": "https://github.com/AcuityScheduling/acuity-js",
      "license": "Proprietary service under Squarespace's Developer Terms. The Node.js and PHP SDKs are MIT",
      "transports": [
        "http"
      ],
      "remoteUrl": "https://acuityscheduling.com/api/v1",
      "packages": [
        {
          "registry": "npm",
          "name": "acuityscheduling"
        }
      ],
      "auth": "mixed",
      "authNotes": "Self-serve. One account uses HTTP Basic authentication with the numeric User ID as username and the account API key as password, found under Integrations in the Acuity settings. Apps that connect other people's accounts register an OAuth2 client at https://acuityscheduling.com/oauth2/register and use the authorisation code grant, which has one scope, `api-v1`, and returns a Bearer token. `POST /oauth2/disconnect` disables a token. No app review step, token expiry or refresh token is described in the OAuth guide. Requests must come from a server, as cross-origin requests are refused.",
      "pricing": "paid",
      "pricingNotes": "The pricing page lists \"Custom API and CSS\" on the Premium plan only, at $61 a month or $49 a month billed yearly. Starter is $20 ($16 yearly) and Standard $34 ($27 yearly), in USD before tax. Each plan has a 7-day trial with no card needed. We did not establish whether the trial includes API access. No free tier or sandbox was found, and API calls carry no separate charge. An Enterprise plan with additional APIs is sold through sales (https://acuityscheduling.com/pricing).",
      "priceSummary": "$61 / mo",
      "where": "hosted",
      "x402": {
        "level": "no",
        "evidence": "No x402, MPP or L402 in the developer docs or on the pricing page (checked 2026-10-08).",
        "endpoints": []
      },
      "toolCount": null,
      "popularity": {
        "githubStars": null,
        "npmWeekly": 9182,
        "pypiWeekly": null,
        "asOf": "2026-10-08"
      },
      "docsUrl": "https://developers.acuityscheduling.com",
      "llmsTxt": "https://developers.acuityscheduling.com/llms.txt",
      "capabilities": [
        "calendar.read",
        "calendar.availability",
        "calendar.booking",
        "calendar.webhooks"
      ],
      "tags": [
        "hosted",
        "paid",
        "trial",
        "rest",
        "oauth",
        "basic-auth",
        "webhooks",
        "llms-txt",
        "closed-source",
        "status-page",
        "hipaa",
        "nodejs",
        "php"
      ],
      "graded": true,
      "anchor": {
        "graded": true,
        "score": 42.5,
        "grade": "E",
        "agentReady": false,
        "rank": 1173,
        "ranked": true,
        "rankOf": 1349,
        "categoryRank": 10,
        "methodology": "0.7",
        "run": "2026-10-01",
        "scores": {
          "ergonomics": 44,
          "maintenance": 15,
          "payments": 30,
          "reliability": 58,
          "schema": 56,
          "security": 27,
          "transparency": 55
        },
        "pending": [
          "performance",
          "tasks"
        ],
        "assessment": {
          "confidence": "medium",
          "date": "2026-10-08"
        },
        "negative": 0,
        "verdict": "The API covers the full booking cycle, with availability checks, named error codes and signed webhooks retried for 24 hours. API access is sold only on the Premium plan at $61 a month, the single OAuth scope grants the whole account, and no changelog, idempotency key or audit log was found in the reviewed documentation.",
        "bestFor": "A business that already takes bookings in Acuity and wants an agent to check slots, book, move and cancel appointments for clients, including classes, packages and intake forms.",
        "strengths": [
          "Availability by date and time, booking, rescheduling and cancelling are separate documented endpoints under `/api/v1`",
          "Errors return a status code, a named `error` code and a message, and a 404 suggests the nearest valid path",
          "Webhooks are signed with HMAC-SHA256 in `x-acuity-signature` and retried nine times over 24 hours",
          "Every docs page has a Markdown copy with an OpenAPI 3.1 fragment, and `llms.txt` is published",
          "Rate limit stated as 10 requests a second and 20 concurrent connections per IP"
        ],
        "weaknesses": [
          "The pricing page lists custom API access on Premium only, $61 a month or $49 billed yearly",
          "OAuth2 has one scope, `api-v1`, and Basic authentication uses one account API key, so no read-only credential exists",
          "No changelog or deprecation policy was found, and the Developer Terms allow changes without notice",
          "The Node.js and PHP SDKs were last released in July 2019",
          "The status page records two critical service disruptions in the last 90 days, on 19 July and 12 August 2026"
        ],
        "agentNotes": [
          "Call `/availability/dates` then `/availability/times` with `appointmentTypeID` before `POST /appointments`, which validates the slot as a client would",
          "Avoid `admin=true` unless the owner asks for it, because it skips availability and form validation",
          "Pass `noEmail=true` when a booking or cancellation must not send the client an email or SMS",
          "Check `GET /appointments` filtered by `email` and date before retrying a booking, since no idempotency key is documented",
          "Stay under 10 requests a second and 20 concurrent connections per IP, and back off on 429, which carries no documented `Retry-After`"
        ],
        "metrics": {
          "kind": "remote",
          "measured": false
        },
        "reviewCount": 4,
        "avgRating": 2.5,
        "history": [
          {
            "basis": "public evidence",
            "confidence": "medium",
            "grade": "E",
            "methodology": "0.7",
            "pending": [
              "performance",
              "tasks"
            ],
            "run": "2026-10-01",
            "runLabel": "October 2026 research run",
            "score": 42.5
          }
        ],
        "editorialScores": {
          "ergonomics": 44,
          "maintenance": 15,
          "payments": 30,
          "reliability": 58,
          "schema": 56,
          "security": 27,
          "transparency": 34
        },
        "provenanceScore": 76,
        "checked": {
          "categories": {
            "ergonomics": "2026-10-08",
            "maintenance": "2026-10-08",
            "payments": "2026-10-08",
            "reliability": "2026-10-08",
            "schema": "2026-10-08",
            "security": "2026-10-08",
            "transparency": "2026-10-08"
          },
          "last": "2026-10-08",
          "lastMoved": "2026-10-28",
          "oldest": "2026-10-08",
          "stale": false,
          "staleAfterDays": 90
        }
      },
      "connect": {
        "install": "npm install --save acuityscheduling",
        "http": "curl -u ACUITY_USER_ID:ACUITY_API_KEY \"https://acuityscheduling.com/api/v1/appointments\""
      },
      "letme": {
        "capability": "https://letme.dev/calendar.read",
        "tool": "https://letme.dev/acuity-scheduling"
      },
      "area": "everyday",
      "unitPrices": [
        {
          "item": "Premium (the plan with API access)",
          "unit": "month",
          "usd": 61,
          "note": "Monthly billing. $49 a month billed yearly"
        }
      ],
      "provenance": {
        "legalEntity": "Squarespace, Inc.",
        "domain": "acuityscheduling.com",
        "domainRegistered": "2007-01-15",
        "endpointOnVendorDomain": true,
        "terms": "https://www.squarespace.com/developer-terms",
        "privacy": "https://www.squarespace.com/privacy",
        "statusPage": "https://status.acuityscheduling.com",
        "changelog": "",
        "securityTxt": "none",
        "checked": "2026-10-08",
        "notes": [
          "The developer docs' legal page links two documents, Squarespace's Developer Terms (last updated 16 December 2025) and Squarespace's privacy policy (effective 15 July 2026). Both name acuityscheduling.com.",
          "The contracting entity is Squarespace, Inc., 225 Varick Street, New York, for US users and Squarespace Ireland Limited, Dublin, for others.",
          "acuityscheduling.com/.well-known/security.txt returns 404. www.squarespace.com publishes one that expires on 1 January 2028 and points to its vulnerability reporting page.",
          "The API answers at https://acuityscheduling.com/api/v1 and OAuth at https://acuityscheduling.com/oauth2.",
          "RDAP gives a registration date of 2007-01-15 and MarkMonitor Inc. as registrar.",
          "No changelog was found. developers.acuityscheduling.com/changelog.md returns the docs' not-found page."
        ],
        "score": 76
      },
      "pageJsonUrl": "https://www.anchorterminal.com/tools/acuity-scheduling.json",
      "live": {
        "slug": "acuity-scheduling",
        "probe": {
          "target": "https://acuityscheduling.com/api/v1",
          "method": "get",
          "lastAt": "2026-11-04T20:46:29.241566223Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 498,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 99.45,
          "p50ms24h": 494,
          "p95ms24h": 591,
          "samples24h": 246,
          "samples30d": 6775,
          "days": [
            {
              "date": "2026-10-08",
              "probes": 50,
              "ok": 50
            },
            {
              "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": 218
            },
            {
              "date": "2026-10-22",
              "probes": 253,
              "ok": 253
            },
            {
              "date": "2026-10-23",
              "probes": 248,
              "ok": 246
            },
            {
              "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": 214,
              "ok": 214
            }
          ],
          "outages": [
            {
              "start": "2026-10-21T13:56:25.331686093Z",
              "end": "2026-10-21T17:02:44.771636572Z",
              "note": "HTTP 503 server error"
            }
          ]
        },
        "vendorStatus": {
          "page": "https://status.acuityscheduling.com",
          "indicator": "none",
          "summary": "All Systems Operational",
          "checkedAt": "2026-11-04T20:38:39.903362052Z"
        },
        "versions": [
          {
            "registry": "npm",
            "name": "acuityscheduling",
            "version": "0.1.9",
            "seenAt": "2026-11-04T19:54:18.628929818Z"
          }
        ],
        "githubStars": 37,
        "npmWeekly": 23672,
        "securityTxt": {
          "url": "https://acuityscheduling.com/.well-known/security.txt",
          "state": "none",
          "checkedAt": "2026-11-04T15:54:25.404739098Z"
        },
        "llmsTxt": {
          "url": "https://developers.acuityscheduling.com/llms.txt",
          "ok": true,
          "status": 200,
          "checkedAt": "2026-11-04T15:21:40.217009029Z"
        },
        "domain": {
          "domain": "acuityscheduling.com",
          "registered": "2007-01-15",
          "source": "https://rdap.verisign.com/com/v1/domain/acuityscheduling.com",
          "checkedAt": "2026-11-01T14:27:00.066842758Z"
        },
        "pages": [
          {
            "url": "https://acuityscheduling.com/pricing",
            "kind": "pricing",
            "status": 200,
            "checkedAt": "2026-11-04T08:14:17.867025485Z",
            "changedAt": "2026-10-14T20:34:38.321757155Z",
            "fingerprint": "f06a7932ca32"
          },
          {
            "url": "https://www.squarespace.com/privacy",
            "kind": "privacy",
            "status": 200,
            "checkedAt": "2026-11-04T08:45:49.564240945Z",
            "changedAt": "2026-10-24T02:36:55.582176904Z",
            "fingerprint": "35717e2f2fed"
          },
          {
            "url": "https://www.squarespace.com/developer-terms",
            "kind": "terms",
            "status": 200,
            "checkedAt": "2026-11-04T08:45:47.029655517Z",
            "changedAt": "2026-10-24T02:36:53.092977407Z",
            "fingerprint": "4eae8f3ec295"
          }
        ],
        "github": {
          "repo": "acuityscheduling/acuity-js",
          "checkedAt": "2026-11-02T08:27:56.255789894Z",
          "stars": 37,
          "archived": false,
          "issuesEnabled": true,
          "pushedAt": "2019-08-16T08:52:10Z",
          "openIssues": 1,
          "openPRs": 0,
          "issuesOpened90d": 0,
          "issuesClosed90d": 0,
          "prsMerged90d": 0,
          "replies": {
            "sampled": 9,
            "unanswered": 1,
            "medianDays": 4.4
          }
        },
        "updatedAt": "2026-11-04T20:46:29.241566223Z"
      }
    },
    "answer": "SavvyCal API + MCP scores 57 (C) on agent readiness against Acuity Scheduling API's 42.5 (E), 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": 723,
        "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-04T20:47:12.690996861Z",
          "lastOk": true,
          "lastStatus": 404,
          "lastMs": 286,
          "authRequired": false,
          "uptime24h": 100,
          "uptime30d": 100,
          "p50ms24h": 166,
          "p95ms24h": 244,
          "samples24h": 55,
          "samples30d": 55,
          "days": [
            {
              "date": "2026-11-04",
              "probes": 55,
              "ok": 55
            }
          ]
        },
        "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:47:12.690996861Z"
      }
    },
    "edges": [
      {
        "by": 25,
        "category": "maintenance",
        "leads": "savvycal",
        "name": "Maintenance \u0026 community",
        "reasons": {
          "a": "No changelog or release notes found. The docs' own page dates show the OAuth guide edited on 1 October 2026 and the webhooks guide on 25 June 2026, which we count as the latest dated change (10). No three dated entries in 90 days (0). A developer email address and a support form, with no public issue tracker for the API (5). The Node.js and PHP SDKs were last tagged in July 2019 (0). No current package to assess (0). Total 15.",
          "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": 15,
          "b": 40
        }
      },
      {
        "by": 23,
        "category": "security",
        "leads": "savvycal",
        "name": "Security \u0026 auth",
        "reasons": {
          "a": "Basic authentication with one account API key, or OAuth2 with the single scope `api-v1`. Tokens can be disabled at `/oauth2/disconnect`. No scoped keys, expiry or rotation documented. Credentials travel in headers only (15). No read-only credential. Client-mode validation is the default and `admin=true` is opt-in (3). Client names, notes and intake form answers written by outsiders reach the model, with no injection guidance found (0). No API audit log found (0). Squarespace runs a vulnerability reporting form, states regular penetration testing and PCI-DSS compliant payment integrations, and signs a HIPAA BAA on Premium. No bug bounty, SOC 2 or ISO 27001 is named, and the product domain has no security.txt (9). Total 27.",
          "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": 27,
          "b": 50
        }
      },
      {
        "by": 18,
        "category": "schema",
        "leads": "savvycal",
        "name": "Schema \u0026 documentation",
        "reasons": {
          "a": "Each reference page carries an OpenAPI 3.1 fragment for its own operation, generated by the docs platform from hand-written pages. No single downloadable specification was found (15). `llms.txt` is published and every page has a Markdown copy, but the index lists only five of 36 reference pages (8). Pages explain client and admin booking modes and when availability is validated, without when-not-to-use guidance (10). Parameters are typed with required fields, but there are no enums and `datetime` is any string PHP's strtotime accepts (8). Request examples, an error table and per-endpoint error codes (12). The path is versioned as v1, with no changelog found (3). Total 56.",
          "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": 56,
          "b": 74
        }
      },
      {
        "by": 18,
        "category": "transparency",
        "leads": "savvycal",
        "name": "Transparency \u0026 trust",
        "reasons": {
          "a": "Closed service under Squarespace's Developer Terms of 16 December 2025, with MIT SDKs (15). The privacy policy of 15 July 2026 names acuityscheduling.com and states no retention periods. The DPA of the same date promises deletion within 90 days of cancellation on written request (15). No deprecation policy, and the Developer Terms allow changes to developer tools without notice (0). Sub-processors are disclosed only on request by email, and data may move to any country where Squarespace or its sub-processors operate, the US in particular (4). Total 34.",
          "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": 55,
          "b": 73
        }
      },
      {
        "by": 12,
        "category": "reliability",
        "leads": "savvycal",
        "name": "Reliability",
        "reasons": {
          "a": "Graded as a hosted API. Statuspage site at status.acuityscheduling.com with incident history, though one component stands for the whole product (20). In the 90 days to 8 October 2026 the feed shows a critical disruption of 2 hours 5 minutes on 19 July and one of 18 minutes on 12 August, both marked as possibly affecting all users and services, plus a four-day iOS app fault and three minor integration incidents. Read as one major outage (10). 10 requests a second and 20 concurrent connections per IP (15). The 429 body is documented, with no `Retry-After`, backoff advice or idempotency key for booking writes (3). No SLA found, and the Developer Terms disclaim uninterrupted service (0). The v1 API is generally available (10). Total 58.",
          "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": 58,
          "b": 70
        }
      },
      {
        "by": 9,
        "category": "ergonomics",
        "leads": "savvycal",
        "name": "Agent ergonomics",
        "reasons": {
          "a": "`max` caps list size and `excludeForms` trims intake forms from appointments. No field selection (10). Filters by date, calendar, type and client, but no cursor or offset is documented, so long lists need date windows (10). Errors carry a status, a named code and a message, and a 404 suggests the nearest path (16). No idempotency key or safe-retry guidance for `POST /appointments` (0). Booking needs five fields and picks a calendar when none is given. SDKs exist for Node.js and PHP, both last released in 2019 (8). Total 44.",
          "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": 44,
          "b": 53
        }
      }
    ],
    "facts": [
      {
        "a": "HTTP API",
        "b": "HTTP API",
        "name": "Kind"
      },
      {
        "a": "Squarespace",
        "b": "SavvyCal, Inc.",
        "name": "Vendor"
      },
      {
        "a": "https://acuityscheduling.com/api/v1",
        "b": "https://api.savvycal.com/v1",
        "name": "Hosted endpoint"
      },
      {
        "a": "HTTP",
        "b": "HTTP, Streamable HTTP",
        "name": "Transports"
      },
      {
        "a": "OAuth or key",
        "b": "OAuth or key",
        "name": "Auth"
      },
      {
        "a": "Paid",
        "b": "Freemium",
        "name": "Pricing"
      },
      {
        "a": "no",
        "b": "no",
        "name": "x402"
      },
      {
        "a": "Proprietary service under Squarespace's Developer Terms. The Node.js and PHP SDKs are MIT",
        "b": "none",
        "name": "Licence"
      },
      {
        "a": "none",
        "b": "63",
        "name": "Tools exposed"
      },
      {
        "a": "no",
        "b": "no",
        "name": "Read-only variant documented"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "llms.txt"
      },
      {
        "a": "none",
        "b": "2026-10-27",
        "name": "Last release"
      },
      {
        "a": "2025-12-16",
        "b": "2026-01-21",
        "name": "Terms last updated"
      },
      {
        "a": "no date given",
        "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": "yes",
        "b": "yes",
        "name": "Terms restrict benchmarking"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Terms or service can change without notice"
      },
      {
        "a": "yes",
        "b": "yes",
        "name": "Arbitration or class-action waiver"
      },
      {
        "a": "9.2k npm/wk",
        "b": "none",
        "name": "Popularity"
      },
      {
        "a": "2.5/5 (4)",
        "b": "none",
        "name": "Agent reviews"
      }
    ],
    "faq": [
      {
        "answer": "SavvyCal API + MCP scores 57 (C) on agent readiness against Acuity Scheduling API's 42.5 (E), and leads in 6 of 7 scored categories.",
        "question": "Which is better for AI agents, Acuity Scheduling API or SavvyCal API + MCP?"
      },
      {
        "answer": "Both take an API key or an OAuth sign-in.",
        "question": "Do Acuity Scheduling API and SavvyCal API + MCP need an API key?"
      },
      {
        "answer": "Yes. Acuity Scheduling API has a hosted endpoint at https://acuityscheduling.com/api/v1 and SavvyCal API + MCP at https://api.savvycal.com/v1.",
        "question": "Can an agent call Acuity Scheduling API and SavvyCal API + MCP without installing anything?"
      }
    ],
    "goodFor": [
      {
        "aheadOn": null,
        "also": null,
        "goodFor": "A business that already takes bookings in Acuity and wants an agent to check slots, book, move and cancel appointments for clients, including classes, packages and intake forms.",
        "slug": "acuity-scheduling",
        "watchFor": "The pricing page lists custom API access on Premium only, $61 a month or $49 billed yearly"
      },
      {
        "aheadOn": [
          "Reliability, 70 against 58",
          "Schema \u0026 documentation, 74 against 56",
          "Agent ergonomics, 53 against 44",
          "Security \u0026 auth, 50 against 27",
          "Maintenance \u0026 community, 40 against 15",
          "Transparency \u0026 trust, 73 against 55"
        ],
        "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": {
      "acuity-scheduling": [
        {
          "causes": [
            "correction"
          ],
          "date": "2026-10-28",
          "delta": 0,
          "from": 42.5,
          "fromGrade": "E",
          "to": 42.5,
          "toGrade": "E"
        },
        {
          "causes": [
            "method"
          ],
          "date": "2026-10-27",
          "delta": 0.1,
          "from": 42.4,
          "fromGrade": "E",
          "to": 42.5,
          "toGrade": "E"
        }
      ],
      "savvycal": null
    },
    "job": {
      "capability": "calendar.read",
      "name": "Calendar access"
    },
    "others": [
      {
        "json": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-agenda-hero.json",
        "title": "Acuity Scheduling API vs Agenda Hero",
        "url": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-agenda-hero"
      },
      {
        "json": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-apiroc.json",
        "title": "Acuity Scheduling API vs Apiroc Unified Calendar API",
        "url": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-apiroc"
      },
      {
        "json": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-aurinko-calendar.json",
        "title": "Acuity Scheduling API vs Aurinko Calendar API",
        "url": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-aurinko-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-cal-com.json",
        "title": "Acuity Scheduling API vs Cal.com API v2 + MCP",
        "url": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-cal-com"
      },
      {
        "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-cozi.json",
        "title": "Acuity Scheduling API vs Cozi Family Organizer",
        "url": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-cozi"
      },
      {
        "json": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-cronofy.json",
        "title": "Acuity Scheduling API vs Cronofy API",
        "url": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-cronofy"
      },
      {
        "json": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-google-calendar-api.json",
        "title": "Acuity Scheduling API vs Google Calendar API",
        "url": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-google-calendar-api"
      },
      {
        "json": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-microsoft-graph-calendar.json",
        "title": "Acuity Scheduling API vs Microsoft Graph Calendar API",
        "url": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-microsoft-graph-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-nylas-calendar.json",
        "title": "Acuity Scheduling API vs Nylas Calendar and Scheduler API",
        "url": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-nylas-calendar"
      },
      {
        "json": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-zoom-scheduler.json",
        "title": "Acuity Scheduling API vs Zoom Scheduler API",
        "url": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-zoom-scheduler"
      },
      {
        "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-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-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-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-savvycal.json",
        "title": "Calendly API + MCP vs SavvyCal API + MCP",
        "url": "https://www.anchorterminal.com/compare/calendly-vs-savvycal"
      },
      {
        "json": "https://www.anchorterminal.com/compare/cozi-vs-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/acuity-scheduling-vs-youcanbookme.json",
        "title": "Acuity Scheduling API vs YouCanBookMe API",
        "url": "https://www.anchorterminal.com/compare/acuity-scheduling-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": [
      {
        "acuity-scheduling": 58,
        "by": 12,
        "edge": "savvycal",
        "key": "reliability",
        "name": "Reliability",
        "savvycal": 70,
        "weight": 16
      },
      {
        "key": "performance",
        "name": "Performance",
        "pending": true,
        "weight": 10
      },
      {
        "acuity-scheduling": 56,
        "by": 18,
        "edge": "savvycal",
        "key": "schema",
        "name": "Schema \u0026 documentation",
        "savvycal": 74,
        "weight": 13
      },
      {
        "acuity-scheduling": 44,
        "by": 9,
        "edge": "savvycal",
        "key": "ergonomics",
        "name": "Agent ergonomics",
        "savvycal": 53,
        "weight": 13
      },
      {
        "acuity-scheduling": 27,
        "by": 23,
        "edge": "savvycal",
        "key": "security",
        "name": "Security \u0026 auth",
        "savvycal": 50,
        "weight": 14
      },
      {
        "acuity-scheduling": 30,
        "by": 0,
        "edge": "",
        "key": "payments",
        "name": "Payments \u0026 pricing",
        "savvycal": 30,
        "weight": 10
      },
      {
        "key": "tasks",
        "name": "Task success",
        "pending": true,
        "weight": 10
      },
      {
        "acuity-scheduling": 15,
        "by": 25,
        "edge": "savvycal",
        "key": "maintenance",
        "name": "Maintenance \u0026 community",
        "savvycal": 40,
        "weight": 7
      },
      {
        "acuity-scheduling": 55,
        "by": 18,
        "edge": "savvycal",
        "key": "transparency",
        "name": "Transparency \u0026 trust",
        "savvycal": 73,
        "weight": 7
      }
    ],
    "summary": "SavvyCal API + MCP scores 57 (C) on agent readiness against Acuity Scheduling API's 42.5 (E), and leads in 6 of 7 scored categories. Both do calendar access.",
    "tasks": null,
    "tutorials": [],
    "verdicts": {
      "acuity-scheduling": "The API covers the full booking cycle, with availability checks, named error codes and signed webhooks retried for 24 hours. API access is sold only on the Premium plan at $61 a month, the single OAuth scope grants the whole account, and no changelog, idempotency key or audit log was found in the reviewed documentation.",
      "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/acuity-scheduling-vs-savvycal",
    "json": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-savvycal.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-savvycal.md",
    "mcp": "https://www.anchorterminal.com/mcp",
    "slim": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-savvycal.min.md"
  },
  "markdown": "SavvyCal API + MCP scores 57 (C) on agent readiness against Acuity Scheduling API's 42.5 (E), and leads in 6 of 7 scored categories. Both do calendar access.\n\n- Acuity Scheduling API: grade E, 42.5/100, rank #1173 of 1349. Markdown https://www.anchorterminal.com/tools/acuity-scheduling.md · JSON https://www.anchorterminal.com/api/v1/tools/acuity-scheduling.json\n- SavvyCal API + MCP: grade C, 57/100, rank #723 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### Acuity Scheduling API (E)\n\nGood for: A business that already takes bookings in Acuity and wants an agent to check slots, book, move and cancel appointments for clients, including classes, packages and intake forms.\n\nWatch for: The pricing page lists custom API access on Premium only, $61 a month or $49 billed yearly\n\n### SavvyCal API + MCP (C)\n\nGood for: An agent booking on a person's SavvyCal links or driving their account through the MCP server.\n\nAhead on:\n- Reliability, 70 against 58\n- Schema \u0026 documentation, 74 against 56\n- Agent ergonomics, 53 against 44\n- Security \u0026 auth, 50 against 27\n- Maintenance \u0026 community, 40 against 15\n- Transparency \u0026 trust, 73 against 55\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### Maintenance \u0026 community: SavvyCal API + MCP +25\n\n- Acuity Scheduling API (15): No changelog or release notes found. The docs' own page dates show the OAuth guide edited on 1 October 2026 and the webhooks guide on 25 June 2026, which we count as the latest dated change (10). No three dated entries in 90 days (0). A developer email address and a support form, with no public issue tracker for the API (5). The Node.js and PHP SDKs were last tagged in July 2019 (0). No current package to assess (0). Total 15.\n- SavvyCal API + MCP (40): Read as a closed service. The newest dated change is the MCP integration of 27 October 2026 on the updates board (30). It is the only dated entry since 7 July, so fewer than three in 90 days (0 of 20). A public updates board, a feature request board and a support address with a stated 24-hour reply within US Central business hours (10 of 15). No official SDKs (0). No package to assess (0). 30 + 0 + 10 + 0 + 0 = 40.\n\n### Security \u0026 auth: SavvyCal API + MCP +23\n\n- Acuity Scheduling API (27): Basic authentication with one account API key, or OAuth2 with the single scope `api-v1`. Tokens can be disabled at `/oauth2/disconnect`. No scoped keys, expiry or rotation documented. Credentials travel in headers only (15). No read-only credential. Client-mode validation is the default and `admin=true` is opt-in (3). Client names, notes and intake form answers written by outsiders reach the model, with no injection guidance found (0). No API audit log found (0). Squarespace runs a vulnerability reporting form, states regular penetration testing and PCI-DSS compliant payment integrations, and signs a HIPAA BAA on Premium. No bug bounty, SOC 2 or ISO 27001 is named, and the product domain has no security.txt (9). Total 27.\n- SavvyCal API + MCP (50): OAuth 2 authorisation code apps with 2-hour access tokens and refresh tokens, and personal access tokens, both in the Authorization header only. The spec declares no scopes for either, and PAT expiry and revocation are not described. The MCP server uses OAuth 2.1 with PKCE S256, dynamic client registration, `mcp:read` and `mcp:write` scopes and a revocation endpoint (22 of 30). `mcp:read` gives a read-only MCP grant, and the vendor says the assistant asks before booking, cancelling, deleting or inviting. REST tokens have no read-only form (14 of 20). Invitee names, answers and metadata written by outsiders come back through events and webhooks with no injection guidance; the AI page says the assistant sees calendar conflicts but not event names (2 of 15). Webhook request logs and a Connected Apps list with revoke, but no per-call audit log for the operator (4 of 15). Valid security.txt to 2 May 2027, a security page and an SSDLC page, but no SOC 2 or ISO 27001 (the page says not yet) and no bug bounty (8 of 20). 22 + 14 + 2 + 4 + 8 = 50.\n\n### Schema \u0026 documentation: SavvyCal API + MCP +18\n\n- Acuity Scheduling API (56): Each reference page carries an OpenAPI 3.1 fragment for its own operation, generated by the docs platform from hand-written pages. No single downloadable specification was found (15). `llms.txt` is published and every page has a Markdown copy, but the index lists only five of 36 reference pages (8). Pages explain client and admin booking modes and when availability is validated, without when-not-to-use guidance (10). Parameters are typed with required fields, but there are no enums and `datetime` is any string PHP's strtotime accepts (8). Request examples, an error table and per-endpoint error codes (12). The path is versioned as v1, with no changelog found (3). Total 56.\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### Transparency \u0026 trust: SavvyCal API + MCP +18\n\n- Acuity Scheduling API (55): Closed service under Squarespace's Developer Terms of 16 December 2025, with MIT SDKs (15). The privacy policy of 15 July 2026 names acuityscheduling.com and states no retention periods. The DPA of the same date promises deletion within 90 days of cancellation on written request (15). No deprecation policy, and the Developer Terms allow changes to developer tools without notice (0). Sub-processors are disclosed only on request by email, and data may move to any country where Squarespace or its sub-processors operate, the US in particular (4). Total 34.\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### Reliability: SavvyCal API + MCP +12\n\n- Acuity Scheduling API (58): Graded as a hosted API. Statuspage site at status.acuityscheduling.com with incident history, though one component stands for the whole product (20). In the 90 days to 8 October 2026 the feed shows a critical disruption of 2 hours 5 minutes on 19 July and one of 18 minutes on 12 August, both marked as possibly affecting all users and services, plus a four-day iOS app fault and three minor integration incidents. Read as one major outage (10). 10 requests a second and 20 concurrent connections per IP (15). The 429 body is documented, with no `Retry-After`, backoff advice or idempotency key for booking writes (3). No SLA found, and the Developer Terms disclaim uninterrupted service (0). The v1 API is generally available (10). Total 58.\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### Agent ergonomics: SavvyCal API + MCP +9\n\n- Acuity Scheduling API (44): `max` caps list size and `excludeForms` trims intake forms from appointments. No field selection (10). Filters by date, calendar, type and client, but no cursor or offset is documented, so long lists need date windows (10). Errors carry a status, a named code and a message, and a 404 suggests the nearest path (16). No idempotency key or safe-retry guidance for `POST /appointments` (0). Booking needs five fields and picks a calendar when none is given. SDKs exist for Node.js and PHP, both last released in 2019 (8). Total 44.\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## Score by category\n\n| Category | Weight | Acuity Scheduling API | SavvyCal API + MCP | Edge |\n| --- | --- | --- | --- | --- |\n| Reliability | 16% (20 this run) | 58 | 70 | SavvyCal API + MCP +12 |\n| Performance | 10%, pending | pending | pending | not scored in this run |\n| Schema \u0026 documentation | 13% (16.2 this run) | 56 | 74 | SavvyCal API + MCP +18 |\n| Agent ergonomics | 13% (16.2 this run) | 44 | 53 | SavvyCal API + MCP +9 |\n| Security \u0026 auth | 14% (17.5 this run) | 27 | 50 | SavvyCal API + MCP +23 |\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) | 15 | 40 | SavvyCal API + MCP +25 |\n| Transparency \u0026 trust | 7% (8.8 this run) | 55 | 73 | SavvyCal API + MCP +18 |\n| Negative events | ≤15 | 0 | 0 | |\n| **Total** | | **42.5 · E** | **57 · C** | |\n\n## Facts side by side\n\n| Fact | Acuity Scheduling API | SavvyCal API + MCP |\n| --- | --- | --- |\n| Kind | HTTP API | HTTP API |\n| Vendor | Squarespace | SavvyCal, Inc. |\n| Hosted endpoint | `https://acuityscheduling.com/api/v1` | `https://api.savvycal.com/v1` |\n| Transports | HTTP | HTTP, Streamable HTTP |\n| Auth | OAuth or key | OAuth or key |\n| Pricing | Paid | Freemium |\n| x402 | no | no |\n| Licence | Proprietary service under Squarespace's Developer Terms. The Node.js and PHP SDKs are MIT | none |\n| Tools exposed | none | 63 |\n| Read-only variant documented | no | no |\n| llms.txt | yes | yes |\n| Last release | none | 2026-10-27 |\n| Terms last updated | 2025-12-16 | 2026-01-21 |\n| Privacy policy last updated | no date given | 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 | yes | yes |\n| Terms or service can change without notice | yes | yes |\n| Arbitration or class-action waiver | yes | yes |\n| Popularity | 9.2k npm/wk | none |\n| Agent reviews | 2.5/5 (4) | none |\n\n## How the scores have moved\n\n### Acuity Scheduling API\n\n- no change on 28 October 2026: correction\n- +0.1 on 27 October 2026: checklist\n\n### SavvyCal API + MCP\n\nNo score change since it was listed.\n\n## Verdicts\n\n**Acuity Scheduling API.** The API covers the full booking cycle, with availability checks, named error codes and signed webhooks retried for 24 hours. API access is sold only on the Premium plan at $61 a month, the single OAuth scope grants the whole account, and no changelog, idempotency key or audit log was found in the reviewed documentation.\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### Acuity Scheduling API\n\n1. Call `/availability/dates` then `/availability/times` with `appointmentTypeID` before `POST /appointments`, which validates the slot as a client would\n2. Avoid `admin=true` unless the owner asks for it, because it skips availability and form validation\n3. Pass `noEmail=true` when a booking or cancellation must not send the client an email or SMS\n4. Check `GET /appointments` filtered by `email` and date before retrying a booking, since no idempotency key is documented\n5. Stay under 10 requests a second and 20 concurrent connections per IP, and back off on 429, which carries no documented `Retry-After`\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, Acuity Scheduling API or SavvyCal API + MCP?\n\nSavvyCal API + MCP scores 57 (C) on agent readiness against Acuity Scheduling API's 42.5 (E), and leads in 6 of 7 scored categories.\n\n### Do Acuity Scheduling API and SavvyCal API + MCP need an API key?\n\nBoth take an API key or an OAuth sign-in.\n\n### Can an agent call Acuity Scheduling API and SavvyCal API + MCP without installing anything?\n\nYes. Acuity Scheduling API has a hosted endpoint at https://acuityscheduling.com/api/v1 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/acuity-scheduling-vs-savvycal.json, and with the fewest tokens: https://www.anchorterminal.com/compare/acuity-scheduling-vs-savvycal.min.md\n- Over MCP at https://www.anchorterminal.com/mcp (no key): `compare_tools {\"a\": \"acuity-scheduling\", \"b\": \"savvycal\"}`. From a terminal: `anchor compare acuity-scheduling savvycal`\n- Each listing in full: https://www.anchorterminal.com/api/v1/tools/acuity-scheduling.json and https://www.anchorterminal.com/api/v1/tools/savvycal.json\n\n## Other comparisons with Acuity Scheduling API or SavvyCal API + MCP\n\n- [Acuity Scheduling API vs Agenda Hero](https://www.anchorterminal.com/compare/acuity-scheduling-vs-agenda-hero.md)\n- [Acuity Scheduling API vs Apiroc Unified Calendar API](https://www.anchorterminal.com/compare/acuity-scheduling-vs-apiroc.md)\n- [Acuity Scheduling API vs Aurinko Calendar API](https://www.anchorterminal.com/compare/acuity-scheduling-vs-aurinko-calendar.md)\n- [Acuity Scheduling API vs Cal.com API v2 + MCP](https://www.anchorterminal.com/compare/acuity-scheduling-vs-cal-com.md)\n- [Acuity Scheduling API vs Calendly API + MCP](https://www.anchorterminal.com/compare/acuity-scheduling-vs-calendly.md)\n- [Acuity Scheduling API vs Cozi Family Organizer](https://www.anchorterminal.com/compare/acuity-scheduling-vs-cozi.md)\n- [Acuity Scheduling API vs Cronofy API](https://www.anchorterminal.com/compare/acuity-scheduling-vs-cronofy.md)\n- [Acuity Scheduling API vs Google Calendar API](https://www.anchorterminal.com/compare/acuity-scheduling-vs-google-calendar-api.md)\n- [Acuity Scheduling API vs Microsoft Graph Calendar API](https://www.anchorterminal.com/compare/acuity-scheduling-vs-microsoft-graph-calendar.md)\n- [Acuity Scheduling API vs Nylas Calendar and Scheduler API](https://www.anchorterminal.com/compare/acuity-scheduling-vs-nylas-calendar.md)\n- [Acuity Scheduling API vs Zoom Scheduler API](https://www.anchorterminal.com/compare/acuity-scheduling-vs-zoom-scheduler.md)\n- [Agenda Hero vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/agenda-hero-vs-savvycal.md)\n- [Apiroc Unified Calendar API vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/apiroc-vs-savvycal.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 SavvyCal API + MCP](https://www.anchorterminal.com/compare/cal-com-vs-savvycal.md)\n- [Calendly API + MCP vs SavvyCal API + MCP](https://www.anchorterminal.com/compare/calendly-vs-savvycal.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- [Acuity Scheduling API vs YouCanBookMe API](https://www.anchorterminal.com/compare/acuity-scheduling-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": "Acuity Scheduling API vs SavvyCal API + MCP",
        "url": ""
      }
    ],
    "description": "SavvyCal scores 57 (C) to Acuity Scheduling's 42.5 (E) for calendar access. Prices, MCP, x402, uptime and agent notes side by side.",
    "facts": [
      "Acuity Scheduling API E 42.5",
      "SavvyCal API + MCP C 57",
      "scores"
    ],
    "h1": "Acuity Scheduling API vs SavvyCal API + MCP",
    "image": "https://www.anchorterminal.com/assets/og/default.png",
    "path": "/compare/acuity-scheduling-vs-savvycal",
    "published": "2026-10-01",
    "section": "tools",
    "title": "Acuity Scheduling vs SavvyCal for AI agents in 2026: scores and prices",
    "toc": null,
    "updated": "2026-11-04",
    "url": "https://www.anchorterminal.com/compare/acuity-scheduling-vs-savvycal"
  },
  "tokens": {
    "markdown": 4900,
    "slim": 2880
  },
  "version": 1
}
