{
 "slug": "acuityscheduling",
 "name": "Acuity Scheduling",
 "url": "https://acuityscheduling.com",
 "domain": "acuityscheduling.com",
 "category": "scheduling",
 "category_name": "Scheduling",
 "tested_at": "2026-10-11",
 "run": "20261011T155730Z",
 "draft": false,
 "reviewed": true,
 "owner_verified": null,
 "origin": "editorial",
 "history": [
  {
   "run": "20261002T073105Z",
   "date": "2026-10-02",
   "level": 3,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 2,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "start"
   }
  },
  {
   "run": "20261006T054958Z",
   "date": "2026-10-06",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 2,
    "signed": true,
    "inbox": [
     "agentdrives.com"
    ],
    "robots": "start"
   },
   "why": "noise"
  },
  {
   "run": "20261011T155730Z",
   "date": "2026-10-11",
   "level": 1,
   "engine": {
    "runner": "omp",
    "model": "claude-opus-5-5",
    "driver": 3,
    "signed": true,
    "inbox": [
     "matfy.com"
    ],
    "robots": "obey"
   }
  }
 ],
 "level": 1,
 "level_name": "Needs a person",
 "level_selfhost": null,
 "entry": "closed",
 "door": {
  "passed": 1,
  "tries": 3,
  "self_start": false
 },
 "badges": [],
 "stages": [
  {
   "key": "in",
   "label": "Access",
   "state": "part",
   "text": "Gets in 1 of 3 drives",
   "at": "signup"
  },
  {
   "key": "work",
   "label": "Use",
   "state": "unreached",
   "text": "Work not measured"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "Payment not reached",
   "value": "unreached",
   "route": "card_checkout"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "unreached",
   "text": "Leaving not reached",
   "how": "no-account"
  }
 ],
 "outcomes": [
  {
   "key": "find",
   "label": "Find",
   "state": "part",
   "text": "Some docs agents can read: llms.txt and an OpenAPI",
   "have": [
    "llms_txt",
    "openapi"
   ]
  },
  {
   "key": "access",
   "label": "Access",
   "state": "part",
   "text": "Gets in 1 of 3 drives",
   "at": "signup",
   "stage": "in"
  },
  {
   "key": "use",
   "label": "Use",
   "state": "unreached",
   "text": "Work not measured",
   "stage": "work"
  },
  {
   "key": "pay",
   "label": "Pay",
   "state": "unreached",
   "text": "Payment not reached",
   "value": "unreached",
   "route": "card_checkout",
   "stage": "pay"
  },
  {
   "key": "leave",
   "label": "Leave",
   "state": "unreached",
   "text": "Leaving not reached",
   "how": "no-account",
   "stage": "leave"
  }
 ],
 "access": [
  {
   "key": "person",
   "label": "A person sets it up",
   "routes": [],
   "minutes": null,
   "core": null
  }
 ],
 "minutes": null,
 "next": {
  "to": 2,
  "text": "Next: let an agent sign up on its own"
 },
 "stop": "signup",
 "core": null,
 "scores": {
  "coverage": null,
  "reliability": null,
  "resilience": null,
  "setup": 85,
  "surface_coverage": null,
  "docs_accuracy": null,
  "docs_completeness": null
 },
 "parts": {
  "holds_up": null,
  "docs_match": null,
  "setup": 85,
  "security": null,
  "standards": [
   {
    "standard": "OpenAPI",
    "state": "behind",
    "behind": 1,
    "value": "3.1.0"
   }
  ]
 },
 "reliability_method": null,
 "resilience": null,
 "stress": [],
 "surface_audit": null,
 "coverage_core": null,
 "after_wall": null,
 "coverage_source": "reported",
 "driver": {
  "version": 3,
  "model": "claude-opus-5-5",
  "profile": "full",
  "assisted": false,
  "handoff": false,
  "prompt_sha": "076cd4c65a1a",
  "kb_version": "3+overlay-1353601952",
  "identity": "e8a92f24a9a8"
 },
 "methodology": 15,
 "rules_date": "2026-10-15",
 "engine": {
  "runner": "omp",
  "model": "claude-opus-5-5",
  "driver": 3,
  "signed": true,
  "inbox": [
   "matfy.com"
  ],
  "robots": "obey"
 },
 "same_level_drives": 2,
 "drives": 3,
 "works_assisted": null,
 "freshness": "fresh",
 "nothing_to_pay": false,
 "core_gated": false,
 "profiles": {},
 "agent_check": {
  "rung": "signup",
  "vendor": "reCAPTCHA Enterprise (invisible) on Squarespace login",
  "visible": false,
  "type": "network",
  "human": null,
  "how": "Check the Web Bot Auth signature on the sign-up request and skip reCAPTCHA (or lower the score threshold) for signed agents; or offer a documented sign-up API with email verification.",
  "signed": true
 },
 "agent_pass": null,
 "who_gets_in": {
  "server": {
   "state": "form"
  },
  "signed": {
   "state": "page",
   "kind": "home",
   "at": "2026-10-12"
  },
  "browser": {
   "state": "through",
   "measured": false
  },
  "our_key": "pending",
  "robots": null,
  "tip": false
 },
 "ladder": {
  "docs": {
   "status": "headless",
   "note": "Public docs at developers.acuityscheduling.com with llms.txt, Markdown pages (.md and Accept: text/markdown) and an embedded OpenAPI 3.1.0."
  },
  "signup": {
   "status": "blocked",
   "note": "Sign-up is a Squarespace account form (login.squarespace.com). After CONTINUE the button stayed disabled with no error and no request sent; an invisible reCAPTCHA Enterprise check sits on the form, no visible challenge. No API route to sign up."
  },
  "verify": {
   "status": "",
   "note": "Not reached: the sign-up was never submitted, no mail arrived.",
   "reached": false
  },
  "credentials": {
   "status": "",
   "note": "Not reached. Docs: the API key is shown only in the web app under Integrations; OAuth2 clients are registered on a web page. No API or CLI to create a key.",
   "via": "",
   "reached": false
  },
  "first_call": {
   "status": "",
   "note": "robots.txt on acuityscheduling.com has 'Disallow: /api/*' for every user agent, which covers the documented API base https://acuityscheduling.com/api/v1.",
   "reached": false
  },
  "first_action": {
   "status": "",
   "note": "Not reached: no account, and the API is disallowed by robots.txt.",
   "reached": false
  },
  "pay": {
   "status": "",
   "grade": "P1",
   "rails": [
    "web billing page"
   ],
   "rail_ids": [
    "other"
   ],
   "first_party": true,
   "rail_scope": "none",
   "trial_path": "no-card trial",
   "note": "No 402 challenges, no registry listing, no /.well-known/ucp, no billing API. Pricing page: '7-day trial, no credit card needed'; paid plans are picked in the web app after sign-up. We paid nothing: no 402 on the product's own domain asks for USDC. The checkout itself was not reached, so its processor is unknown.",
   "reached": false
  },
  "cancel": {
   "status": "",
   "note": "not tested: Acuity has paid plans but no plan or trial was started (sign-up blocked by the invisible reCAPTCHA); docs list no billing API, cancelling is in the web app (not reached).",
   "docs_grade": "",
   "reached": false
  },
  "delete": {
   "status": "",
   "note": "No account was created, so there was nothing to delete.",
   "account": false,
   "reached": false
  }
 },
 "routes": [],
 "checkout": null,
 "docs": null,
 "claims": null,
 "pay_options": {
  "checked": "2026-10-11",
  "source": "probe",
  "options": [],
  "agentic": [],
  "paid": null,
  "exercised": null,
  "detected_grade": null,
  "trial": {
   "no_card": true,
   "card_required": null,
   "free_plan": true
  },
  "owner_fixes": [
   {
    "title": "Accept x402 or MPP on your API",
    "how": "Answer an unpaid call with 402 and a payment challenge, so an agent pays per call or buys credits without an account or a card."
   },
   {
    "title": "List your plans on Stripe Projects",
    "how": "Agents buy a plan with `stripe projects add`, paid with a token under a spend cap the owner sets (projects.dev)."
   }
  ]
 },
 "surfaces": {
  "api": true,
  "openapi": true,
  "cli": false,
  "sdk": true,
  "mcp": "none",
  "llms_txt": true,
  "webhooks": true,
  "sandbox": false
 },
 "surface_notes": {
  "api": "REST at acuityscheduling.com/api/v1, Basic Auth (User ID + API key) or OAuth2; disallowed by robots.txt /api/*",
  "openapi": "3.1.0, embedded per page in the Markdown docs; no standalone openapi.json",
  "sdk": "Node 'acuityscheduling' and PHP SDK shown in docs",
  "webhooks": "static webhooks plus dynamic /webhooks API, max 25"
 },
 "can_do": [
  "Read the full API docs as Markdown (llms.txt, .md pages, Accept: text/markdown)"
 ],
 "cannot_do": [
  {
   "what": "Create an account",
   "why": "The Squarespace sign-up form stalls silently behind an invisible reCAPTCHA Enterprise check; there is no sign-up API"
  },
  {
   "what": "Call the REST API",
   "why": "robots.txt disallows /api/* for all user agents, which covers the documented API base"
  },
  {
   "what": "Get an API key headless",
   "why": "Keys are shown only in the web app; no key API"
  }
 ],
 "blockers": [
  "Invisible reCAPTCHA Enterprise stalls the Squarespace sign-up form",
  "robots.txt 'Disallow: /api/*' covers the documented API"
 ],
 "tips_for_owner": [
  "Allow agents on the API in robots.txt",
  "Let signed agents through sign-up",
  "Show an error when sign-up is refused",
  "Add an API to create and revoke keys",
  "Publish auth metadata for the docs MCP"
 ],
 "tips_for_agents": [
  "Read docs via developers.acuityscheduling.com/llms.txt and the .md pages",
  "The documented API base acuityscheduling.com/api/v1 is disallowed by robots.txt: a robots-respecting agent cannot call it",
  "Sign-up goes through a Squarespace account form with invisible reCAPTCHA Enterprise"
 ],
 "selfhost": null,
 "summary": "Acuity's docs are agent-friendly (llms.txt, Markdown pages, OpenAPI 3.1.0), but an agent cannot get in: the Squarespace sign-up form stalled silently behind an invisible reCAPTCHA Enterprise check, and robots.txt disallows /api/*, which covers the whole documented REST API. No capability could be driven; paying is a web-only plan choice after a no-card trial.",
 "wall": "Invisible reCAPTCHA stalls the Squarespace sign-up form",
 "plan_scope": "",
 "robots_stop": null,
 "robots": null,
 "plain": {
  "summary": "Acuity Scheduling is an online booking and calendar tool with easy-to-read developer docs, but an AI agent trying it alone got stuck at the very first step: creating an account. The sign-up form silently stalled behind an invisible bot check, so the agent never got a login, a key, or access to the API (which is also blocked by the site's own robots.txt rules).",
  "can_do": [
   "Read all the developer documentation in a clean, agent-friendly format."
  ],
  "cannot_do": [
   {
    "what": "Create an account",
    "why": "The sign-up form silently stalls behind an invisible bot check with no error message."
   },
   {
    "what": "Call the booking API",
    "why": "The website's own robots rules block the documented API address for all automated tools."
   },
   {
    "what": "Get an API key on its own",
    "why": "Keys are only available inside the web dashboard after logging in."
   }
  ]
 },
 "plan_gated": [],
 "reply": null,
 "capabilities": [
  {
   "id": "cap-01",
   "group": "Booking",
   "capability": "Book an appointment as a client",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/v1/appointments",
    "mcp": null,
    "cli": null,
    "ui": "public scheduling page"
   },
   "check": "GET /api/v1/appointments/{id} returns the new appointment with datetime and appointmentTypeID",
   "source": "https://developers.acuityscheduling.com/reference/quick-start; https://acuityscheduling.com/features#online-booking"
  },
  {
   "id": "cap-02",
   "group": "Booking",
   "capability": "Reschedule or cancel an appointment",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "PUT /api/v1/appointments/{id}/reschedule, PUT /api/v1/appointments/{id}/cancel",
    "mcp": null,
    "cli": null,
    "ui": "scheduling page / client confirmation email link"
   },
   "check": "GET /api/v1/appointments/{id} shows updated datetime or canceled:true",
   "source": "https://acuityscheduling.com/features#client-management; https://developers.acuityscheduling.com/reference"
  },
  {
   "id": "cap-03",
   "group": "Booking",
   "capability": "Browse open appointment slots/availability",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "GET /api/v1/availability/times, GET /api/v1/availability/dates",
    "mcp": null,
    "cli": null,
    "ui": "scheduling page calendar picker"
   },
   "check": "GET /api/v1/availability/times returns array of bookable time slots for an appointmentTypeID",
   "source": "https://developers.acuityscheduling.com/docs/embedding; https://developers.acuityscheduling.com/reference/quick-start"
  },
  {
   "id": "cap-04",
   "group": "Business management",
   "capability": "Define appointment types/services clients can book",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "GET /api/v1/appointment-types",
    "mcp": null,
    "cli": null,
    "ui": "Admin > Appointment Types"
   },
   "check": "GET /api/v1/appointment-types lists the created type with name/price/duration",
   "source": "https://acuityscheduling.com/pricing (Offer unlimited services and appointments); https://developers.acuityscheduling.com/reference"
  },
  {
   "id": "cap-05",
   "group": "Business management",
   "capability": "Set and control availability (hours, buffers, limits, intervals)",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Availability"
   },
   "check": "Manually verify via UI that configured hours/buffers block out slots shown to clients",
   "source": "https://acuityscheduling.com/features#availability-controls"
  },
  {
   "id": "cap-06",
   "group": "Payments",
   "capability": "Collect payment, deposit, or stored card at booking",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "scheduling page checkout step (Stripe/Square/PayPal/Venmo)"
   },
   "check": "GET /api/v1/appointments/{id} shows amountPaid/paid status matching the processed charge",
   "source": "https://acuityscheduling.com/features#payments; https://acuityscheduling.com/pricing"
  },
  {
   "id": "cap-07",
   "group": "Payments",
   "capability": "Create and send an invoice",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Invoicing"
   },
   "check": "Invoicing dashboard shows invoice with status transitioning from sent to paid",
   "source": "https://acuityscheduling.com/features#invoicing"
  },
  {
   "id": "cap-08",
   "group": "Client engagement",
   "capability": "Send automated confirmation/reminder/follow-up notifications",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Email/Text notification settings"
   },
   "check": "Client inbox receives confirmation email at booking and reminder email before appointment time",
   "source": "https://acuityscheduling.com/features#client-management; https://acuityscheduling.com/pricing"
  },
  {
   "id": "cap-09",
   "group": "Client engagement",
   "capability": "Collect client intake form answers at booking",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /api/v1/forms",
    "mcp": null,
    "cli": null,
    "ui": "scheduling page intake form step"
   },
   "check": "GET /api/v1/appointments/{id} includes fields[] with the submitted form answers",
   "source": "https://acuityscheduling.com/learn/client-intake-form-automation; https://acuityscheduling.com/features#client-management"
  },
  {
   "id": "cap-10",
   "group": "Client management",
   "capability": "View and manage client profiles (notes, history)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "GET /api/v1/clients",
    "mcp": null,
    "cli": null,
    "ui": "Admin > Clients"
   },
   "check": "GET /api/v1/clients/{id} (or search) returns profile with appointment history and notes",
   "source": "https://acuityscheduling.com/features#client-management; https://acuityscheduling.com/pricing"
  },
  {
   "id": "cap-11",
   "group": "Client engagement",
   "capability": "Offer a waitlist for fully booked times",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "scheduling page waitlist signup"
   },
   "check": "Admin waitlist view shows client entry and notification sent when a slot opens",
   "source": "https://acuityscheduling.com/pricing (Appointment waitlist, Standard plan+)"
  },
  {
   "id": "cap-12",
   "group": "Client loyalty",
   "capability": "Sell appointment packages, subscriptions, and memberships",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "GET /api/v1/packages",
    "mcp": null,
    "cli": null,
    "ui": "Admin > Packages/Memberships"
   },
   "check": "GET /api/v1/orders shows a completed package/subscription order; client profile shows active package",
   "source": "https://acuityscheduling.com/pricing (Sell memberships and packages, Standard plan+); https://acuityscheduling.com/learn/how-to-sell-subscriptions-and-packages"
  },
  {
   "id": "cap-13",
   "group": "Client loyalty",
   "capability": "Sell and redeem gift certificates",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": "GET /api/v1/certificates",
    "mcp": null,
    "cli": null,
    "ui": "Admin > Gift Certificates / scheduling page"
   },
   "check": "GET /api/v1/certificates/{code} shows certificate; applying it at checkout reduces amount owed",
   "source": "https://acuityscheduling.com/pricing (Sell gift certificates, Standard plan+)"
  },
  {
   "id": "cap-14",
   "group": "Client loyalty",
   "capability": "Issue discount/coupon codes",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Coupons"
   },
   "check": "Applying coupon code at checkout reduces the appointment price shown",
   "source": "https://acuityscheduling.com/features#client-loyalty"
  },
  {
   "id": "cap-15",
   "group": "Calendar management",
   "capability": "Manage multiple calendars across staff or locations",
   "weight": "core",
   "plan": "free",
   "surfaces": {
    "api": "GET /api/v1/calendars",
    "mcp": null,
    "cli": null,
    "ui": "Admin > Calendars"
   },
   "check": "GET /api/v1/calendars lists each staff/location calendar created in the account",
   "source": "https://acuityscheduling.com/pricing (Number of calendars); https://acuityscheduling.com/features#calendar-management"
  },
  {
   "id": "cap-16",
   "group": "Calendar management",
   "capability": "Sync a personal/business calendar to avoid double-booking",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Calendar sync (Google/Outlook/iCal)"
   },
   "check": "External calendar event created in Acuity-synced calendar blocks that slot from new bookings",
   "source": "https://acuityscheduling.com/features#calendar-management"
  },
  {
   "id": "cap-17",
   "group": "Calendar management",
   "capability": "Connect video conferencing (Zoom/Google Meet/GoToMeeting) to appointments",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Integrations > Video conferencing"
   },
   "check": "Booked appointment confirmation includes a generated meeting join link",
   "source": "https://acuityscheduling.com/pricing (Google Meet, Zoom, and GoToMeeting integrations)"
  },
  {
   "id": "cap-18",
   "group": "Calendar management",
   "capability": "View advanced reporting on appointments, no-shows, and performance",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Reports"
   },
   "check": "Reports dashboard shows counts matching known appointment/no-show totals for the period",
   "source": "https://acuityscheduling.com/features#calendar-management"
  },
  {
   "id": "cap-19",
   "group": "Staff management",
   "capability": "Manage staff accounts and permissions",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Staff Permissions"
   },
   "check": "Staff member login is restricted to the client data/actions granted in their permission settings",
   "source": "https://acuityscheduling.com/features#staff-management"
  },
  {
   "id": "cap-20",
   "group": "Scheduling formats",
   "capability": "Run group classes, workshops, and events (multi-attendee)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST /api/v1/appointments (same type, multiple clients)",
    "mcp": null,
    "cli": null,
    "ui": "Admin > Classes"
   },
   "check": "GET /api/v1/appointment-types/{id}/classes/{id} shows multiple attendees registered for one session",
   "source": "https://acuityscheduling.com/features/class-scheduling; https://acuityscheduling.com/features#availability-controls"
  },
  {
   "id": "cap-21",
   "group": "Integration",
   "capability": "Receive webhook notifications on appointment/order events",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": "POST (dynamic webhook subscription) /api/v1/webhooks",
    "mcp": null,
    "cli": null,
    "ui": "Admin > Integrations > Webhook"
   },
   "check": "Configured endpoint receives a POST with action=scheduled|rescheduled|canceled|order.completed and matching id",
   "source": "https://developers.acuityscheduling.com/docs/webhooks"
  },
  {
   "id": "cap-22",
   "group": "Integration",
   "capability": "Embed the scheduler on an external website",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "iframe/embed script snippet"
   },
   "check": "Page hosting the embed script+iframe renders the Acuity scheduling calendar inline",
   "source": "https://developers.acuityscheduling.com/docs/embedding; https://developers.acuityscheduling.com/"
  },
  {
   "id": "cap-23",
   "group": "Integration",
   "capability": "Share a booking page via custom link or QR code",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Scheduling Page link/QR"
   },
   "check": "Scanning the generated QR code opens the account's live scheduling page",
   "source": "https://acuityscheduling.com/features#online-booking; https://acuityscheduling.com/features#client-management"
  },
  {
   "id": "cap-24",
   "group": "Integration",
   "capability": "Authorize third-party apps via OAuth2",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": "OAuth2 /oauth2/authorize, /oauth2/token",
    "mcp": null,
    "cli": null,
    "ui": null
   },
   "check": "OAuth2 authorization flow returns an access token that authenticates subsequent API calls for the connected account",
   "source": "https://developers.acuityscheduling.com/docs/oauth2"
  },
  {
   "id": "cap-25",
   "group": "Client engagement",
   "capability": "Use AI Booking Assistant chatbot to get clients booked",
   "weight": "secondary",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "scheduling page chat widget"
   },
   "check": "Chat widget conversation results in a confirmed appointment visible in Admin calendar",
   "source": "https://acuityscheduling.com/pricing (AI Booking Assistant, Premium plan); https://acuityscheduling.com/features#online-booking"
  },
  {
   "id": "cap-26",
   "group": "Payments",
   "capability": "Take in-person payments via POS (tap-to-pay, card reader, payment links)",
   "weight": "secondary",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Acuity mobile app > Checkout"
   },
   "check": "Mobile app transaction appears as a paid line item on the client's appointment/invoice",
   "source": "https://acuityscheduling.com/features#payments"
  },
  {
   "id": "cap-27",
   "group": "Admin/branding",
   "capability": "Customize scheduling page branding (logo, colors, copy, CSS)",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": "CSS stylesheet override (Premium)",
    "ui": "Admin > Appearance"
   },
   "check": "Public scheduling page reflects uploaded logo and configured brand colors",
   "source": "https://acuityscheduling.com/pricing (Display your logo; Brand your scheduler's colors and copy; Custom API & CSS)"
  },
  {
   "id": "cap-28",
   "group": "Admin/compliance",
   "capability": "Remove 'Powered by Acuity' branding from scheduling page",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Appearance"
   },
   "check": "Public scheduling page footer no longer shows 'Powered by Acuity Scheduling'",
   "source": "https://acuityscheduling.com/pricing (Hide Acuity logo on scheduling page, Premium plan)"
  },
  {
   "id": "cap-29",
   "group": "Admin/compliance",
   "capability": "Sign a BAA for HIPAA compliance",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > HIPAA settings"
   },
   "check": "Account settings show a countersigned BAA on file and HIPAA mode enabled",
   "source": "https://acuityscheduling.com/pricing (Sign BAA for HIPAA compliance, Premium plan)"
  },
  {
   "id": "cap-30",
   "group": "Admin",
   "capability": "Set distinct time zones per staff member or location",
   "weight": "peripheral",
   "plan": "paid",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Calendar settings > Time zone"
   },
   "check": "Two calendars in the same account show different configured IANA time zones in their settings",
   "source": "https://acuityscheduling.com/pricing (Multiple time zones for staff/locations, Premium plan); https://acuityscheduling.com/features#online-booking"
  },
  {
   "id": "cap-31",
   "group": "Admin",
   "capability": "Require acceptance of terms/cancellation policy at booking",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Admin > Policies"
   },
   "check": "Booking flow shows a required checkbox for the configured cancellation policy text before confirming",
   "source": "https://acuityscheduling.com/learn/how-to-create-a-cancellation-policy; https://acuityscheduling.com/features#client-management"
  },
  {
   "id": "cap-32",
   "group": "Admin",
   "capability": "Manage appointments on the go via mobile app",
   "weight": "peripheral",
   "plan": "free",
   "surfaces": {
    "api": null,
    "mcp": null,
    "cli": null,
    "ui": "Acuity mobile app"
   },
   "check": "Appointment created/edited in the mobile app is immediately reflected in the web Admin calendar",
   "source": "https://acuityscheduling.com/features#calendar-management; https://acuityscheduling.com/pricing"
  }
 ],
 "attempts": [
  {
   "t": "00:20",
   "cap": "discovery",
   "capability": "robots.txt",
   "task": "Read robots.txt on acuityscheduling.com and secure.acuityscheduling.com",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET https://acuityscheduling.com/robots.txt 200: 'User-agent: *' group with 'Disallow: /api/*' (also /home.php, /appointments.php, /reports.php). Same file on secure.acuityscheduling.com. No Content-Usage or Content-signal lines.",
   "notes": ""
  },
  {
   "t": "00:42",
   "cap": "discovery",
   "capability": "llms.txt",
   "task": "Find llms.txt",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "https://acuityscheduling.com/llms.txt 404; https://developers.acuityscheduling.com/llms.txt 200 text/plain, H1 'Acuity Scheduling Documentation', links to .md pages",
   "notes": "Docs host also links /.well-known/agent-skills/index.json (one skill 'read-the-docs'); /.well-known/api-catalog 404 although the Link header advertises it."
  },
  {
   "t": "01:04",
   "cap": "discovery",
   "capability": "Markdown docs",
   "task": "Accept: text/markdown and .md URL on a docs page",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "GET reference/quick-start with Accept: text/markdown -> content-type text/markdown, vary: Accept, Accept-Encoding; reference/quick-start.md 200 text/markdown",
   "notes": "Both forms work (ReadMe-hosted docs)."
  },
  {
   "t": "01:26",
   "cap": "discovery",
   "capability": "OpenAPI",
   "task": "Locate the OpenAPI",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "reference/post-appointments.md embeds an OpenAPI block: \"openapi\": \"3.1.0\", servers url https://acuityscheduling.com/api/v1. developers.acuityscheduling.com/openapi.json 404.",
   "notes": "OpenAPI 3.1.0 is one minor line behind current 3.2."
  },
  {
   "t": "01:48",
   "cap": "discovery",
   "capability": "Well-known cards",
   "task": "AI catalog, A2A card, PRM, AS metadata, UCP",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "acuityscheduling.com: /.well-known/ai-catalog.json, agent-card.json, oauth-protected-resource, oauth-authorization-server, ucp all 404 text/html. developers host: ai-catalog.json 404, oauth-protected-resource 404, mcp/server-card.json 404.",
   "notes": "No agent cards or auth discovery metadata."
  },
  {
   "t": "02:10",
   "cap": "discovery",
   "capability": "MCP",
   "task": "server/discover on MCP endpoints",
   "route": "mcp",
   "documented": true,
   "result": "partial",
   "verified": true,
   "evidence": "POST https://developers.acuityscheduling.com/mcp (server/discover, MCP-Protocol-Version 2026-07-28) -> 401 application/json {\"code\":-32001,\"message\":\"Authorization required\"}, WWW-Authenticate: Bearer realm=\"mcp\" (no resource_metadata). initialize also 401. /mcp/server-card 404. acuityscheduling.com/mcp 404.",
   "notes": "A docs MCP endpoint on the ReadMe docs host exists but asks for a bearer token with no way to get one (no PRM). No product MCP server found."
  },
  {
   "t": "02:32",
   "cap": "docs",
   "capability": "Find docs",
   "task": "Find API docs",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "developers.acuityscheduling.com quick-start: Basic Auth with numeric User ID + API Key found 'under Integrations' in the web app; OAuth2 docs; webhooks docs",
   "notes": "Docs are public, in Markdown.",
   "quality": {
    "docs_match": "match",
    "docs_url": "https://developers.acuityscheduling.com/reference/quick-start"
   }
  },
  {
   "t": "02:54",
   "cap": "pay",
   "capability": "Pay step public probes",
   "task": "Read pay_probe/pay_tx, check 402s and checkout",
   "route": "api",
   "documented": true,
   "result": "done",
   "verified": true,
   "evidence": "pay_probe.json: no 402 challenges, no registry listings, no /.well-known/ucp; pricing page: 'Start free trial 7-day trial, no credit card needed', Starter $16/month (annual). pay_tx.json status refused: 'no 402 on the product's own domain asks for USDC on a network we hold a wallet for'. Docs llms.txt has no billing API.",
   "notes": "Plans are bought in the web app (Manage Billing); no agent rail, no billing API. Trial needs no card."
  },
  {
   "t": "03:16",
   "cap": "signup",
   "capability": "Sign up",
   "task": "Start the 7-day no-card trial (Squarespace account)",
   "route": "browser",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "get-started redirects to login.squarespace.com OAuth 'Create your account'. Filled first/last name, the agent's inbox, password; CONTINUE pressed. Button went disabled and stayed disabled for >60 s with no error; no sign-up request was sent (page resource log shows no XHR/fetch to Squarespace's API after the click); invisible reCAPTCHA Enterprise anchor (size=invisible, key 6LeadacZ…) on the page; no visible challenge. No mail arrived.",
   "notes": "Invisible reCAPTCHA Enterprise on the Squarespace sign-up form stalled the submit silently. no retry with changed behaviour. Sign-up has no documented API route.",
   "quality": {
    "error_legibility": "silent",
    "recoverable": "no"
   }
  },
  {
   "t": "03:38",
   "cap": "verify",
   "capability": "Verify email",
   "task": "Read verification mail",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "inbox read the agent's inbox --wait: 'No mail for the agent's inbox'",
   "notes": "Not reached: sign-up never submitted."
  },
  {
   "t": "04:00",
   "cap": "credentials",
   "capability": "Get API key",
   "task": "Get User ID + API key",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "Quick-start: key is shown in the web app 'under Integrations' (secure.acuityscheduling.com/app.php?action=settings&key=api); no API/CLI to create keys; OAuth2 needs a client registered at acuityscheduling.com/oauth2/register (web).",
   "notes": "Not reached (no account). Even with a key, robots.txt disallows the documented API base /api/* for all user agents.",
   "key": "create"
  },
  {
   "t": "04:22",
   "cap": "first_call",
   "capability": "First API call",
   "task": "GET /api/v1/me",
   "route": "api",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "",
   "notes": "robots.txt 'Disallow: /api/*' covers the whole documented REST API."
  },
  {
   "t": "04:44",
   "cap": "first_action",
   "capability": "Create something",
   "task": "Create an appointment type / appointment",
   "route": "none",
   "documented": true,
   "result": "blocked",
   "verified": false,
   "evidence": "No account (sign-up stalled); API disallowed by robots.txt.",
   "notes": "Not reached."
  },
  {
   "t": "05:06",
   "cap": "cancel",
   "capability": "Cancel plan",
   "task": "Cancel trial/plan",
   "route": "none",
   "documented": true,
   "result": "n/a",
   "verified": false,
   "evidence": "No trial was started. Pricing page: 7-day trial, no credit card needed; docs list no billing API.",
   "notes": "not tested: no plan or trial was started",
   "tested": false
  },
  {
   "t": "05:28",
   "cap": "delete",
   "capability": "Delete account",
   "task": "Delete the account",
   "route": "none",
   "documented": true,
   "result": "n/a",
   "verified": false,
   "evidence": "No account was created.",
   "notes": "Nothing to delete."
  }
 ],
 "stale": false,
 "icon": "/logos/acuityscheduling.png",
 "monitored": false,
 "verdict": "Needs a person: Acuity Scheduling publishes agent-friendly docs, llms.txt and an OpenAPI spec, but a person must sign up, verify and make the key by hand. Our agent stopped first at signup: the Squarespace account form left Continue disabled with no error, blocked by an invisible reCAPTCHA Enterprise check, and no API route exists to sign up instead. It never reached verification, a key page or a call: robots.txt disallows the entire documented API base, closing that door too. No capability was driven. Pricing shows a no-card trial, but picking or leaving a plan happens in the web app after a person signs up.",
 "page": "https://agentdrives.com/tools/acuityscheduling?via=api"
}