{"openapi":"3.1.0","info":{"title":"Channex (BYOK) API","version":"0.1.0","description":"Channex (BYOK) lets an AI assistant read your own Channex data through the Channex API with a key you supply (Channex user API key). Read-only: 9 tools (list_properties, get_property, list_room_types, list_rate_plans, get_rates_and_restrictions, get_availability, list_bookings, list_reviews, get_property_score). The BYOK key travels with each request, is used for that one call only and is never...\n\nEvery operation is read-only or compute-only. The same tools are available over MCP (streamable HTTP) at https://byok-channex.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-channex/docs"},"termsOfService":"https://connectorbay.com/byok-channex/terms"},"servers":[{"url":"https://byok-channex.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-channex/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_properties":{"post":{"operationId":"list_properties","summary":"List the properties in the Channex account with title, city, country, currency, time zone, active flag and connected cha","description":"List the properties in the Channex account with title, city, country, currency, time zone, active flag and connected channel count. Filter by title, city or country. Use for \"Which properties are in my Channex account\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"title":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only properties with exactly this title.","title":"Title"},"city":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only properties in exactly this city.","title":"City"},"country":{"anyOf":[{"maxLength":2,"type":"string"},{"type":"null"}],"default":null,"description":"Only properties in this country (two-letter code).","title":"Country"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Items per page (1 to 100).","title":"Limit"}},"title":"list_propertiesArguments","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_property":{"post":{"operationId":"get_property","summary":"Get one property: title, address and coordinates, currency, time zone, settings such as inventory length and price limit","description":"Get one property: title, address and coordinates, currency, time zone, settings such as inventory length and price limits, and description. Use for \"Show the settings of Channex property 716305c4\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"property_id":{"description":"Channex property UUID.","maxLength":40,"title":"Property Id","type":"string"}},"required":["property_id"],"title":"get_propertyArguments","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_room_types":{"post":{"operationId":"list_room_types","summary":"List the room types of a property with title, number of rooms, adult, child and infant capacity and default occupancy. U","description":"List the room types of a property with title, number of rooms, adult, child and infant capacity and default occupancy. Use for \"What room types does Channex property 716305c4 have\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"property_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only room types of this property UUID.","title":"Property Id"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Items per page (1 to 100).","title":"Limit"}},"title":"list_room_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_rate_plans":{"post":{"operationId":"list_rate_plans","summary":"List the rate plans of a property or room type with title, sell and rate mode, currency, meal type and occupancy options","description":"List the rate plans of a property or room type with title, sell and rate mode, currency, meal type and occupancy options. Use for \"Which rate plans are set up for Channex property 716305c4\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"property_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only rate plans of this property UUID.","title":"Property Id"},"room_type_id":{"anyOf":[{"maxLength":40,"type":"string"},{"type":"null"}],"default":null,"description":"Only rate plans of this room type UUID.","title":"Room Type Id"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Items per page (1 to 100).","title":"Limit"}},"title":"list_rate_plansArguments","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_rates_and_restrictions":{"post":{"operationId":"get_rates_and_restrictions","summary":"Get rates and restrictions per rate plan and date for one property over a date range (rate, availability, min stay, clos","description":"Get rates and restrictions per rate plan and date for one property over a date range (rate, availability, min stay, closed to arrival or departure, stop sell, max stay). The answer is keyed by rate plan id, then date. Use for \"What are my rates and stop-sell flags for property 716305c4 in the first week of December\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"property_id":{"description":"Channex property UUID (from list_properties).","maxLength":40,"title":"Property Id","type":"string"},"date_from":{"description":"First date, YYYY-MM-DD.","maxLength":10,"title":"Date From","type":"string"},"date_to":{"description":"Last date, YYYY-MM-DD.","maxLength":10,"title":"Date To","type":"string"},"restrictions":{"description":"Comma-separated fields to load: availability, rate, min_stay_arrival, min_stay_through, min_stay, closed_to_arrival, closed_to_departure, stop_sell, max_stay.","maxLength":200,"title":"Restrictions","type":"string"}},"required":["property_id","date_from","date_to","restrictions"],"title":"get_rates_and_restrictionsArguments","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_availability":{"post":{"operationId":"get_availability","summary":"Get the number of rooms available per room type and date for one property over a date range. The answer is keyed by room","description":"Get the number of rooms available per room type and date for one property over a date range. The answer is keyed by room type id, then date. Use for \"How many rooms are available per room type at property 716305c4 in December\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"property_id":{"description":"Channex property UUID (from list_properties).","maxLength":40,"title":"Property Id","type":"string"},"date_from":{"description":"First date, YYYY-MM-DD.","maxLength":10,"title":"Date From","type":"string"},"date_to":{"description":"Last date, YYYY-MM-DD.","maxLength":10,"title":"Date To","type":"string"}},"required":["property_id","date_from","date_to"],"title":"get_availabilityArguments","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_bookings":{"post":{"operationId":"list_bookings","summary":"List bookings received through connected channels with OTA name, reservation code, status, stay dates, amount, commissio","description":"List bookings received through connected channels with OTA name, reservation code, status, stay dates, amount, commission, guests and receive time. Guest contact and card data are not returned. Use for \"Which bookings arrive at my properties in December\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"arrival_from":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Arrival on or after this date, YYYY-MM-DD.","title":"Arrival From"},"arrival_to":{"anyOf":[{"maxLength":10,"type":"string"},{"type":"null"}],"default":null,"description":"Arrival on or before this date, YYYY-MM-DD.","title":"Arrival To"},"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Items per page (1 to 100).","title":"Limit"}},"title":"list_bookingsArguments","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_reviews":{"post":{"operationId":"list_reviews","summary":"List guest reviews received from connected channels with guest name, text, overall score, category scores, channel, rece","description":"List guest reviews received from connected channels with guest name, text, overall score, category scores, channel, received time and whether it was answered (needs the Messages application on the property). Use for \"What reviews did my properties receive recently\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"page":{"anyOf":[{"maximum":10000,"minimum":1,"type":"integer"},{"type":"null"}],"default":1,"description":"Page number, starting at 1.","title":"Page"},"limit":{"anyOf":[{"maximum":100,"minimum":1,"type":"integer"},{"type":"null"}],"default":10,"description":"Items per page (1 to 100).","title":"Limit"}},"title":"list_reviewsArguments","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_property_score":{"post":{"operationId":"get_property_score","summary":"Get a property's aggregate guest review score: number of reviews, overall score and scores per category. Use for \"What i","description":"Get a property's aggregate guest review score: number of reviews, overall score and scores per category. Use for \"What is the overall review score of Channex property 716305c4\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"property_id":{"description":"Channex property UUID.","maxLength":40,"title":"Property Id","type":"string"}},"required":["property_id"],"title":"get_property_scoreArguments","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}}}}