{"openapi":"3.1.0","info":{"title":"Vetspire (BYOK) API","version":"0.1.0","description":"Vetspire (BYOK) lets an AI assistant read your own Vetspire data through the Vetspire API with a key you supply (Vetspire API token (issued by a Vetspire administrator)). Read-only: 12 tools (list_locations, get_location, list_appointment_types, list_location_appointment_types, list_location_schedules, list_departments, list_providers, list_available_times, list_boarding_wards,...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-vetspire.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-vetspire/docs"},"termsOfService":"https://connectorbay.com/byok-vetspire/terms"},"servers":[{"url":"https://byok-vetspire.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-vetspire/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/list_locations":{"post":{"operationId":"list_locations","summary":"List the practice's locations with address, phone, time zone, active flag, online-booking, boarding and daycare switches","description":"List the practice's locations with address, phone, time zone, active flag, online-booking, boarding and daycare switches, slot length and surgery capacity. Use for \"What locations does my Vetspire practice have and which take online bookings\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 200).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip, for paging.","title":"Offset"}},"title":"list_locationsArguments","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_location":{"post":{"operationId":"get_location","summary":"Get one location by id with address, hours of operation by weekday, time zone and switches for online booking, boarding ","description":"Get one location by id with address, hours of operation by weekday, time zone and switches for online booking, boarding and daycare. Use for \"What are the opening hours of Vetspire location 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"id":{"description":"Vetspire location id (from list_locations).","maxLength":40,"title":"Id","type":"string"}},"required":["id"],"title":"get_locationArguments","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_appointment_types":{"post":{"operationId":"list_appointment_types","summary":"List all appointment types (exam, wellness, surgery, telemedicine and so on) with duration, color, online-booking flag a","description":"List all appointment types (exam, wellness, surgery, telemedicine and so on) with duration, color, online-booking flag and category flags. Use for \"What appointment types does my Vetspire practice offer\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"deleted":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True to include deleted appointment types.","title":"Deleted"}},"title":"list_appointment_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/list_location_appointment_types":{"post":{"operationId":"list_location_appointment_types","summary":"List the appointment types enabled for one location (or globally) with duration and online-booking flag. Use for \"Which ","description":"List the appointment types enabled for one location (or globally) with duration and online-booking flag. Use for \"Which appointment types can clients book at Vetspire location 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_id":{"description":"Vetspire location id (get it from list_locations).","maxLength":40,"title":"Location Id","type":"string"},"limit":{"anyOf":[{"maximum":200,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many records to return (1 to 200).","title":"Limit"},"offset":{"anyOf":[{"maximum":100000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"How many records to skip, for paging.","title":"Offset"}},"required":["location_id"],"title":"list_location_appointment_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/list_location_schedules":{"post":{"operationId":"list_location_schedules","summary":"List a location's schedule columns (queues or provider lanes) with the appointment types and departments each one accept","description":"List a location's schedule columns (queues or provider lanes) with the appointment types and departments each one accepts. Use for \"What schedules and queues does Vetspire location 1 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_id":{"description":"Vetspire location id (get it from list_locations).","maxLength":40,"title":"Location Id","type":"string"}},"required":["location_id"],"title":"list_location_schedulesArguments","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_departments":{"post":{"operationId":"list_departments","summary":"List the departments of a location (for example exam, surgery, boarding) with color, display flags and ordering. Use for","description":"List the departments of a location (for example exam, surgery, boarding) with color, display flags and ordering. Use for \"Which departments does Vetspire location 1 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_id":{"description":"Vetspire location id (get it from list_locations).","maxLength":40,"title":"Location Id","type":"string"}},"required":["location_id"],"title":"list_departmentsArguments","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_providers":{"post":{"operationId":"list_providers","summary":"List staff providers (veterinarians, technicians, groomers) of a location with name, title, role flags and active status","description":"List staff providers (veterinarians, technicians, groomers) of a location with name, title, role flags and active status. No contact details or credentials are queried. Use for \"Which veterinarians work at Vetspire location 1\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only providers at this location id.","title":"Location Id"},"only_active":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":true,"description":"True for only active providers.","title":"Only Active"},"vet_only":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":false,"description":"True for only veterinarians.","title":"Vet Only"}},"title":"list_providersArguments","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_times":{"post":{"operationId":"list_available_times","summary":"List open appointment slots on one date for an appointment type at a location, with time and the provider offering each ","description":"List open appointment slots on one date for an appointment type at a location, with time and the provider offering each slot. Use for \"What appointment times are open at Vetspire location 1 on 2026-11-02 for a wellness exam\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"appointment_type_id":{"description":"Appointment type id (from list_appointment_types).","maxLength":40,"title":"Appointment Type Id","type":"string"},"date":{"description":"Day to check, YYYY-MM-DD.","maxLength":10,"title":"Date","type":"string"},"location_id":{"description":"Vetspire location id (get it from list_locations).","maxLength":40,"title":"Location Id","type":"string"},"number_of_pets":{"anyOf":[{"maximum":10,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Number of pets to book together (1 to 10).","title":"Number Of Pets"}},"required":["appointment_type_id","date","location_id"],"title":"list_available_timesArguments","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_boarding_wards":{"post":{"operationId":"list_boarding_wards","summary":"List the boarding wards of a location with name, order and whether they currently hold reservations. Use for \"What board","description":"List the boarding wards of a location with name, order and whether they currently hold reservations. Use for \"What boarding wards does Vetspire location 1 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_id":{"description":"Vetspire location id (get it from list_locations).","maxLength":40,"title":"Location Id","type":"string"}},"required":["location_id"],"title":"list_boarding_wardsArguments","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_boarding_cages":{"post":{"operationId":"list_boarding_cages","summary":"List the boarding cages and kennels of a location with ward, weight range and species they take. Use for \"Which boarding","description":"List the boarding cages and kennels of a location with ward, weight range and species they take. Use for \"Which boarding kennels does Vetspire location 1 have and for what size pets\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"location_id":{"description":"Vetspire location id (get it from list_locations).","maxLength":40,"title":"Location Id","type":"string"}},"required":["location_id"],"title":"list_boarding_cagesArguments","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_product_categories":{"post":{"operationId":"list_product_categories","summary":"List the product and service categories used in the price list (id and name). Use for \"What product categories are set u","description":"List the product and service categories used in the price list (id and name). Use for \"What product categories are set up in my Vetspire practice\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_product_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/list_travel_zones":{"post":{"operationId":"list_travel_zones","summary":"List the active travel zones of the organization (mobile or house-call service areas) with color and number of upcoming ","description":"List the active travel zones of the organization (mobile or house-call service areas) with color and number of upcoming appointments. Use for \"What travel zones does my Vetspire practice serve\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{},"title":"list_travel_zonesArguments","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}}}}