{"openapi":"3.1.0","info":{"title":"Wix Bookings Catalog and Availability (your key) API","version":"0.1.0","description":"Wix Bookings Catalog and Availability (your key) lets an AI assistant read your own Wix Bookings data through the Wix Bookings API with a key you supply (Wix API key). Read-only: 9 tools (query_service_categories, query_booking_policies, query_resource_types, query_resources, query_staff_members, query_add_ons, query_service_options_and_variants, get_service, list_available_time_slots). The BYOK...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-wix-bookings.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-wix-bookings/docs"},"termsOfService":"https://connectorbay.com/byok-wix-bookings/terms"},"servers":[{"url":"https://byok-wix-bookings.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-wix-bookings/docs"},"security":[{"upstreamKey":[]}],"components":{"securitySchemes":{"bearer":{"type":"http","scheme":"bearer","description":"Optional. A Pro API key raises rate limits; no credentials are required."},"upstreamKey":{"type":"apiKey","in":"header","name":"X-Upstream-Key","description":"Your own key for the service this connector wraps (bring your own key). Used for that one call only; never stored, logged or cached."}},"schemas":{"Error":{"type":"object","properties":{"ok":{"const":false},"error":{"type":"object"}}}}},"paths":{"/v1/tools/query_service_categories":{"post":{"operationId":"query_service_categories","summary":"List the booking service categories (such as Hair or Massage) with name, sort order and dates. Use for \"Which service ca","description":"List the booking service categories (such as Hair or Massage) with name, sort order and dates. Use for \"Which service categories does my Wix Bookings site have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's next-page value; leave out for the first page.","title":"Cursor"}},"title":"query_service_categoriesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/query_booking_policies":{"post":{"operationId":"query_booking_policies","summary":"List booking policies with name, default flag and the rules for early and late booking, booking after start, cancellatio","description":"List booking policies with name, default flag and the rules for early and late booking, booking after start, cancellation, rescheduling and waitlists. Use for \"What cancellation and rescheduling rules do my Wix booking policies set\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's next-page value; leave out for the first page.","title":"Cursor"}},"title":"query_booking_policiesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/query_resource_types":{"post":{"operationId":"query_resource_types","summary":"List resource types (such as room or equipment) that bookings can reserve, with name and dates. Use for \"What kinds of b","description":"List resource types (such as room or equipment) that bookings can reserve, with name and dates. Use for \"What kinds of bookable resources are set up on my Wix site\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's next-page value; leave out for the first page.","title":"Cursor"}},"title":"query_resource_typesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/query_resources":{"post":{"operationId":"query_resources","summary":"List bookable resources (rooms, chairs, equipment) with name, resource type and location availability. Can filter by one","description":"List bookable resources (rooms, chairs, equipment) with name, resource type and location availability. Can filter by one resource type. Use for \"Which rooms and equipment can be booked on my Wix site\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"type_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only resources of this resource type ID (from query_resource_types).","title":"Type Id"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's next-page value; leave out for the first page.","title":"Cursor"}},"title":"query_resourcesArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/query_staff_members":{"post":{"operationId":"query_staff_members","summary":"List staff members who take bookings, with name, short description, linked resource ID and whether they provide services","description":"List staff members who take bookings, with name, short description, linked resource ID and whether they provide services. Email and phone are left out. Use for \"Which staff members can be booked on my Wix site\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's next-page value; leave out for the first page.","title":"Cursor"}},"title":"query_staff_membersArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/query_add_ons":{"post":{"operationId":"query_add_ons","summary":"List booking add-ons (extras sold with a service) with name, extra minutes, maximum quantity and price. Use for \"What ad","description":"List booking add-ons (extras sold with a service) with name, extra minutes, maximum quantity and price. Use for \"What add-ons can customers pick with a booking on my Wix site\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 100).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's next-page value; leave out for the first page.","title":"Cursor"}},"title":"query_add_onsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/query_service_options_and_variants":{"post":{"operationId":"query_service_options_and_variants","summary":"List the price variants of services (for example by duration or staff level) with the lowest and highest price. Can filt","description":"List the price variants of services (for example by duration or staff level) with the lowest and highest price. Can filter by one service. Use for \"What price variants does my Wix haircut service have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"service_id":{"anyOf":[{"maxLength":64,"type":"string"},{"type":"null"}],"default":null,"description":"Only variants of this service ID.","title":"Service Id"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many results to return (1 to 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many results to skip, for paging (0 or more).","title":"Offset"}},"title":"query_service_options_and_variantsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/get_service":{"post":{"operationId":"get_service","summary":"Get one bookable service by ID with name, type, tag line, capacity, category, online-booking settings and booking policy","description":"Get one bookable service by ID with name, type, tag line, capacity, category, online-booking settings and booking policy reference. Use for \"Show Wix booking service c1b2a3d4-0000-4000-8000-000000000002\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"service_id":{"description":"Service ID (a GUID from the services list).","maxLength":64,"title":"Service Id","type":"string"}},"required":["service_id"],"title":"get_serviceArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}},"/v1/tools/list_available_time_slots":{"post":{"operationId":"list_available_time_slots","summary":"List open appointment time slots for one service between two local dates, with start, end, capacity left and location na","description":"List open appointment time slots for one service between two local dates, with start, end, capacity left and location name. Read only; nothing is booked. Use for \"When is my Wix haircut service open next week\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"service_id":{"description":"ID of the service to check.","maxLength":64,"title":"Service Id","type":"string"},"from_local_date":{"description":"First local date and time to include, like 2026-11-02T00:00:00.","maxLength":30,"title":"From Local Date","type":"string"},"to_local_date":{"description":"Last local date and time to include, like 2026-11-09T00:00:00.","maxLength":30,"title":"To Local Date","type":"string"},"time_zone":{"description":"IANA time zone for the dates, such as America/New_York.","maxLength":60,"title":"Time Zone","type":"string"},"time_slots_per_day":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Most slots to return per day (1 to 1000).","title":"Time Slots Per Day"},"limit":{"anyOf":[{"maximum":1000,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many slots to return per page (1 to 1000).","title":"Limit"},"cursor":{"anyOf":[{"maxLength":2000,"type":"string"},{"type":"null"}],"default":null,"description":"Cursor from the previous answer's next-page value; leave out for the first page.","title":"Cursor"}},"required":["service_id","from_local_date","to_local_date","time_zone"],"title":"list_available_time_slotsArguments","type":"object"}}}},"responses":{"200":{"description":"Tool result. `ok: true` on success; `ok: false` with a structured `error` (provider_unavailable, upstream_error, bad_input) when the tool could not answer.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true}}}},"422":{"description":"Arguments failed validation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Rate limit exceeded (see Retry-After)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}},"x-read-only":true}}}}