{"openapi":"3.1.0","info":{"title":"Hostaway (BYOK) API","version":"0.1.0","description":"Hostaway (BYOK) lets an AI assistant read your own Hostaway data through the Hostaway API with a key you supply (Hostaway API access token). Read-only: 8 tools (list_listings, get_listing, list_reservations, get_reservation, get_listing_calendar, list_conversations, list_conversation_messages, list_reviews). 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-hostaway.connectorbay.com/mcp.","contact":{"name":"Unify Dynamics LLC","email":"agent@connectorbay.com","url":"https://connectorbay.com/byok-hostaway/docs"},"termsOfService":"https://connectorbay.com/byok-hostaway/terms"},"servers":[{"url":"https://byok-hostaway.connectorbay.com"}],"externalDocs":{"url":"https://connectorbay.com/byok-hostaway/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_listings":{"post":{"operationId":"list_listings","summary":"List listings (properties) with name, city, country, capacity, bedrooms, bathrooms and nightly price; search by name, ci","description":"List listings (properties) with name, city, country, capacity, bedrooms, bathrooms and nightly price; search by name, city or country. Use for \"Which listings do I have in Hostaway\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (provider default 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip from the start of the list.","title":"Offset"},"match":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search by listing name.","title":"Match"},"city":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only this city.","title":"City"},"country":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Only this country.","title":"Country"},"sort_order":{"anyOf":[{"enum":["name","nameReversed","order","orderReversed","latestActivity","latestActivityDesc"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order.","title":"Sort Order"}},"title":"list_listingsArguments","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_listing":{"post":{"operationId":"get_listing","summary":"Get one listing by id: name, address, capacity, bedrooms, bathrooms, price, check-in and check-out hours. Use for \"Show ","description":"Get one listing by id: name, address, capacity, bedrooms, bathrooms, price, check-in and check-out hours. Use for \"Show Hostaway listing 40160\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"listing_id":{"description":"Hostaway listing id.","title":"Listing Id","type":"integer"}},"required":["listing_id"],"title":"get_listingArguments","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_reservations":{"post":{"operationId":"list_reservations","summary":"List reservations with guest, listing, channel, dates, nights, status and total price; filter by listing, dates, guest n","description":"List reservations with guest, listing, channel, dates, nights, status and total price; filter by listing, dates, guest name or e-mail. Use for \"Which Hostaway reservations arrive this month\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (provider default 100).","title":"Limit"},"after_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Cursor: the id of the last reservation of the previous page.","title":"After Id"},"listing_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only this listing id.","title":"Listing Id"},"arrival_start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only reservations arriving on or after this date, YYYY-MM-DD.","title":"Arrival Start Date"},"arrival_end_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only reservations arriving on or before this date, YYYY-MM-DD.","title":"Arrival End Date"},"departure_start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only reservations departing on or after this date, YYYY-MM-DD.","title":"Departure Start Date"},"match":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Search by guest name.","title":"Match"},"guest_email":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Only reservations of this guest e-mail.","title":"Guest Email"},"sort_order":{"anyOf":[{"enum":["arrivalDate","arrivalDateDesc","latestActivity","latestActivityDesc","updatedOn"],"type":"string"},{"type":"null"}],"default":null,"description":"Sort order.","title":"Sort Order"}},"title":"list_reservationsArguments","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_reservation":{"post":{"operationId":"get_reservation","summary":"Get one reservation by id with guest, listing, channel, dates, status, price, fees and payment flag. Use for \"Show Hosta","description":"Get one reservation by id with guest, listing, channel, dates, status, price, fees and payment flag. Use for \"Show Hostaway reservation 123456\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"reservation_id":{"description":"Hostaway reservation id.","title":"Reservation Id","type":"integer"}},"required":["reservation_id"],"title":"get_reservationArguments","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_listing_calendar":{"post":{"operationId":"get_listing_calendar","summary":"Get the day-by-day calendar of a listing: availability, status, price and minimum stay for each date. Use for \"Is Hostaw","description":"Get the day-by-day calendar of a listing: availability, status, price and minimum stay for each date. Use for \"Is Hostaway listing 40160 free next weekend and what is the price\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"listing_id":{"description":"Hostaway listing id.","title":"Listing Id","type":"integer"},"start_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"First date, YYYY-MM-DD.","title":"Start Date"},"end_date":{"anyOf":[{"maxLength":200,"type":"string"},{"type":"null"}],"default":null,"description":"Last date, YYYY-MM-DD.","title":"End Date"}},"required":["listing_id"],"title":"get_listing_calendarArguments","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_conversations":{"post":{"operationId":"list_conversations","summary":"List guest conversations with reservation, listing, guest e-mail, unread flag and last message times. Use for \"Which Hos","description":"List guest conversations with reservation, listing, guest e-mail, unread flag and last message times. Use for \"Which Hostaway conversations have unread messages\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (provider default 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip from the start of the list.","title":"Offset"},"reservation_id":{"anyOf":[{"minimum":1,"type":"integer"},{"type":"null"}],"default":null,"description":"Only conversations of this reservation id.","title":"Reservation Id"}},"title":"list_conversationsArguments","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_conversation_messages":{"post":{"operationId":"list_conversation_messages","summary":"List the messages of one conversation (sent messages by default) with body, direction, channel and time. Use for \"What d","description":"List the messages of one conversation (sent messages by default) with body, direction, channel and time. Use for \"What did the guest write in Hostaway conversation 555\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"conversation_id":{"description":"Hostaway conversation id.","title":"Conversation Id","type":"integer"},"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (provider default 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip from the start of the list.","title":"Offset"}},"required":["conversation_id"],"title":"list_conversation_messagesArguments","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 and host reviews with listing, guest, type, status, public text, host reply and stay dates. Use for \"What rev","description":"List guest and host reviews with listing, guest, type, status, public text, host reply and stay dates. Use for \"What reviews did guests leave in Hostaway\".","tags":["tools"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"properties":{"limit":{"anyOf":[{"maximum":500,"minimum":1,"type":"integer"},{"type":"null"}],"default":50,"description":"How many items to return (provider default 100).","title":"Limit"},"offset":{"anyOf":[{"maximum":1000000,"minimum":0,"type":"integer"},{"type":"null"}],"default":0,"description":"Number of items to skip from the start of the list.","title":"Offset"},"type":{"anyOf":[{"enum":["guest-to-host","host-to-guest"],"type":"string"},{"type":"null"}],"default":null,"description":"guest-to-host or host-to-guest.","title":"Type"},"sort_order":{"anyOf":[{"enum":["asc","desc"],"type":"string"},{"type":"null"}],"default":null,"description":"asc or desc (default desc).","title":"Sort Order"},"guest_name":{"anyOf":[{"maxLength":100,"type":"string"},{"type":"null"}],"default":null,"description":"Partial guest name.","title":"Guest Name"},"has_host_reply":{"anyOf":[{"type":"boolean"},{"type":"null"}],"default":null,"description":"True for reviews with a host reply, false for those without.","title":"Has Host Reply"}},"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}}}}