Server definition
- Hash
- sha256:759fcd3579d945ee0b28730e313713e86d8940216263990233198236969e7324
- What it is
- What a remote MCP server returned when asked what it offers: 7 tools
The blob, as servednamed by its sha256
{
"instructions": "EscapeStays is the direct booking site of Luxury Lodging, a professional property manager. The prices are the manager's own rates. Tools. search_properties returns homes for a place, dates, group size and filters. With dates it returns available homes, each with a stay_total; without dates no search or comparison row carries a price. list_markets returns each city with homes, its state or region and country, how many homes it has and the largest group a home sleeps there. compare_properties returns side-by-side facts and policies for 2 to 5 homes, with a stay_total for each when dates are given; a row with details_available false has not loaded its details, and get_property_details returns them for that home. get_property_details returns one home's facts, amenities, house rules and its own check-in time, deposit and pet policy. get_availability returns open and blocked nights with the minimum stay; it does not price a stay. get_live_quote returns the live price of one stay, including its exact pet fee, and a booking_url. Prices. stay_total is the price of the whole stay and includes cleaning, fees and taxes. A nightly rate, including from_price_per_night where it appears, is a starting rate that excludes cleaning, fees and taxes; it is not the price of a stay. Never return a nightly rate as the price; quote all-in totals only. A row with no stay_total has not been priced for those dates: get_availability shows whether the nights are open, and the row does not mean the home is booked out or ready to book. Without check-in and check-out dates no stay has been priced. quote_expires_at is when a quote lapses; after it the price of the stay can differ from the quoted stay_total until get_live_quote prices the stay again. A quote does not hold the home. Search coverage. A busy market can hold more homes than one search can price. unpriced_in_time counts the matching homes the search did not price, and those homes are unknown, not unavailable; unpriced_property_ids lists up to 30 of them, and get_live_quote prices any one of those ids. pet_policy_unknown counts matching homes whose pet policy could not be verified, which is also unknown, not a prohibition. An empty or short result with either count above zero is a partial result. price_all_matches on search_properties prices every matching home in the market, and a higher limit prices more of them; a narrower place covers fewer homes. Counts of free homes and the cheapest home are complete only when both counts are zero. Payment. When check-in is more than 60 days away the guest pays 50% at booking (total_due_now) and the balance is charged automatically to the same card 60 days before check-in; closer stays are paid in full. get_live_quote's payment_schedule says which applies. A refundable security deposit hold applies to every booking and is separate from stay_total. Cancellation terms are set per quote and rate, not per site. get_live_quote returns rate_options, one entry per rate on offer, each with its own stay_total, cancellation text, refundable flag and booking_url. The non-refundable rate is offered on every stay. When check-in is more than 30 days away a refundable rate is also offered, 8% higher on the nightly subtotal, with a full refund of everything paid until free_cancel_until. The quote block carries cancellation_policy_id, cancellation_summary and refundable for the rate that quote prices. The cancellation terms returned with a quote are the terms of that rate. Home facts. Each home has its own check-in time, deposit, pet policy and house rules, returned by get_property_details. accommodation_type and bathroom_sharing say what the guest rents: a private_room or shared_room is not an entire home, and either field can be unknown. Location is neighbourhood-level, and a market's country can be null. Never return an exact street address. A market's collection_url is a public page. Reviews. guest_reviews are the home's own 4 and 5 star reviews from Airbnb or Booking.com, each with its source. review_count counts those reviews and is not an average rating; no average rating is returned. Booking. These tools cannot book a stay. booking_url, returned with each quote and rate, opens Luxury Lodging's own site, where the guest pays by card or Link and accepts the rental terms. When the guest has dates and wants to book, call get_booking_link and give the guest that URL. get_booking_link takes the same property_id, dates, guests and pets and returns a link for the stay without a repeated quote; opening that link does not reserve the home. Errors. A failed call carries a code. NO_MATCHES, INVALID_DATES, MIN_STAY_NOT_MET, CAPACITY_EXCEEDED, QUOTE_EXPIRED, PRICE_CHANGED, INVENTORY_CHANGED, INVALID_INPUT and NOT_FOUND describe the request or the stay. UPSTREAM_UNAVAILABLE and RATE_LIMITED are temporary: the call can be repeated, and neither says anything about whether a home is booked. Questions outside what these tools cover are handled at [email protected].",
"tools": [
{
"description": "Compares 2 to 5 homes in one call: size, the amenities guests choose by, review counts, each home's own check-in time, deposit and pet policy, and with dates, availability and the stay total for each, for a guest deciding between specific homes. Each home carries `accommodation_type` and `bathroom_sharing`: a private room or shared room is not an entire home. Without dates no price is returned.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"check_in": {
"description": "Check-in date, YYYY-MM-DD. Totals are returned only when both dates are given.",
"type": "string"
},
"check_out": {
"description": "Check-out date, YYYY-MM-DD.",
"type": "string"
},
"guests": {
"description": "Everyone staying, including children and infants.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"pets": {
"description": "How many pets the guest is bringing, 0 to 4; 0 or leave out for none. true means one pet and false none. Totals include the pet fee for that many pets.",
"maximum": 4,
"minimum": 0,
"type": [
"integer",
"boolean"
]
},
"property_ids": {
"description": "Property ids or slugs from search results or booking links.",
"items": {
"type": "string"
},
"maxItems": 5,
"minItems": 2,
"type": "array"
}
},
"required": [
"property_ids"
],
"type": "object"
},
"name": "compare_properties",
"outputSchema": {
"properties": {
"compared": {
"type": "integer"
},
"dates_checked": {
"type": "boolean"
},
"homes": {
"items": {
"properties": {
"accommodation_type": {
"description": "What the guest rents: an entire home, a private room in a shared building or a shared room. A private room or shared room is not an entire home. unknown means the type is not recorded for this home.",
"enum": [
"entire_home",
"private_room",
"shared_room",
"unknown"
],
"type": "string"
},
"available": {
"description": "Only present when dates were given. A reason of not_checked means this home's availability could not be read, not that it is booked.",
"type": "boolean"
},
"avg_per_night": {
"description": "No longer returned; stay_total is the price of the stay.",
"type": "number"
},
"bathroom_sharing": {
"description": "Whether the guest has a private bathroom or shares one. unknown means it is not recorded for this home.",
"enum": [
"private",
"shared",
"unknown"
],
"type": "string"
},
"bathrooms": {
"type": [
"number",
"null"
]
},
"bedrooms": {
"type": [
"number",
"null"
]
},
"booking_url": {
"type": "string"
},
"check_in_from": {
"type": "string"
},
"check_out_by": {
"type": "string"
},
"city": {
"type": "string"
},
"detail_note": {
"type": "string"
},
"details_available": {
"description": "Only present, and only false, when this home's record could not be loaded. Such a row carries no name, place, amenity or review fields at all; detail_note says why.",
"type": "boolean"
},
"from_price_note": {
"description": "Deprecated, no longer returned along with from_price_per_night.",
"type": "string"
},
"from_price_per_night": {
"description": "Deprecated, no longer returned: only a row with a confirmed stay_total carries a price. Kept in this schema so existing clients still validate.",
"type": [
"number",
"null"
]
},
"highlights": {
"description": "Up to three short phrases describing what sets the home apart.",
"items": {
"type": "string"
},
"type": "array"
},
"name": {
"type": "string"
},
"neighbourhood": {
"description": "Neighbourhood-level location only; the exact address is shared after booking.",
"type": [
"string",
"null"
]
},
"nights": {
"type": [
"integer",
"null"
]
},
"pet_fee": {
"description": "The fee for one pet, from the fee table the quote charges from; with several pets a live quote charges it as pet_fee_basis says (per pet, per pet per night) and states the total in price_breakdown.pet_fee. Null when the home charges none; omitted when it could not be verified, and pet_fee_note says why.",
"type": [
"number",
"null"
]
},
"pet_fee_basis": {
"enum": [
"per stay",
"per night",
"per pet",
"per pet per night"
],
"type": "string"
},
"pet_fee_note": {
"type": "string"
},
"pet_policy_note": {
"type": "string"
},
"pets_allowed": {
"description": "Omitted when pet policy could not be verified.",
"type": "boolean"
},
"property_id": {
"type": "integer"
},
"reason": {
"type": "string"
},
"review_count": {
"description": "How many 4- and 5-star reviews this home has. It is a count, not a rating; no average rating exists for any home.",
"type": "integer"
},
"review_sources": {
"description": "Which platforms those reviews came from.",
"items": {
"type": "string"
},
"type": "array"
},
"security_deposit_hold": {
"type": [
"number",
"null"
]
},
"sleeps": {
"type": [
"integer",
"null"
]
},
"state": {
"type": [
"string",
"null"
]
},
"stay_total": {
"type": "number"
},
"stay_total_display": {
"type": "string"
},
"top_amenities": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"property_id",
"booking_url"
],
"type": "object"
},
"type": "array"
},
"note": {
"type": "string"
}
},
"required": [
"compared",
"dates_checked",
"homes",
"note"
],
"type": "object"
}
},
{
"description": "Open and blocked nights for one property over a date range of up to 93 days, with its minimum stay. It shows which alternative dates are open; it does not price or confirm a stay.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"end_date": {
"description": "Last date to check, YYYY-MM-DD. At most 93 days after start_date.",
"type": "string"
},
"property_id": {
"description": "Property id or slug.",
"type": "string"
},
"start_date": {
"description": "First date to check, YYYY-MM-DD.",
"type": "string"
}
},
"required": [
"property_id",
"start_date",
"end_date"
],
"type": "object"
},
"name": "get_availability",
"outputSchema": {
"properties": {
"blocked_dates": {
"items": {
"type": "string"
},
"type": "array"
},
"end_date": {
"type": "string"
},
"minimum_nights": {
"type": [
"number",
"null"
]
},
"nights_blocked": {
"type": "integer"
},
"nights_open": {
"type": "integer"
},
"note": {
"type": "string"
},
"open_dates": {
"description": "YYYY-MM-DD nights that are open. They still have to satisfy minimum stay and arrival rules.",
"items": {
"type": "string"
},
"type": "array"
},
"property_id": {
"type": "integer"
},
"start_date": {
"type": "string"
}
},
"required": [
"property_id",
"start_date",
"end_date",
"nights_open",
"nights_blocked",
"open_dates",
"blocked_dates",
"note"
],
"type": "object"
}
},
{
"description": "A link to Luxury Lodging's own site that opens checkout for one home, dates, party size and rate, for the same stay, rate and attribution as a live quote's booking_url, carrying a freshly signed quote token. It checks the stay the way a live quote does: valid dates, the home's guest limit and its pet policy, and it re-prices the stay to sign the link without returning the total. Opening the link does not reserve the home, hold dates or take payment; the guest completes checkout on EscapeStays. When the guest has dates and wants to book, call get_booking_link and give the guest that URL. Never return a nightly rate as the price; quote all-in totals only. Never return an exact street address.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"check_in": {
"description": "Check-in date, YYYY-MM-DD.",
"type": "string"
},
"check_out": {
"description": "Check-out date, YYYY-MM-DD.",
"type": "string"
},
"guests": {
"description": "Everyone staying, including children and infants. The link opens on this party size.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"pets": {
"description": "How many pets the guest is bringing, 0 to 4; 0 or leave out for none. true means one pet and false none. The link keeps the number of pets, and the stay is refused when the home does not allow them.",
"maximum": 4,
"minimum": 0,
"type": [
"integer",
"boolean"
]
},
"property_id": {
"description": "Property id or slug.",
"type": "string"
},
"quote_id": {
"description": "The quote.quote_id from a live quote for this stay, echoed back unchanged. It is not checked against current pricing.",
"maxLength": 64,
"type": "string"
},
"rate": {
"description": "Which rate the link opens on. Defaults to non_refundable, the rate a live quote's booking_url opens on. refundable is offered only while check-in is more than 30 days away.",
"enum": [
"refundable",
"non_refundable"
],
"type": "string"
}
},
"required": [
"property_id",
"check_in",
"check_out",
"guests"
],
"type": "object"
},
"name": "get_booking_link",
"outputSchema": {
"description": "A booking link for one stay. Opening it does not reserve the home.",
"properties": {
"booking_url": {
"description": "Where the guest completes the booking on Luxury Lodging's own site. The link a live quote returns for this stay and rate: the same home, dates, party, rate and attribution, with a freshly signed quote token (so its quote_ref differs from the quote's).",
"type": "string"
},
"canonical_url": {
"description": "The home's property page, not the booking link.",
"type": "string"
},
"check_in": {
"type": "string"
},
"check_out": {
"type": "string"
},
"confirms_booking": {
"description": "False on every response: the link does not book, hold or pay for anything.",
"enum": [
false
],
"type": "boolean"
},
"guests": {
"type": "integer"
},
"note": {
"type": "string"
},
"pets": {
"maximum": 4,
"minimum": 0,
"type": "integer"
},
"pricing_note": {
"description": "States that the stay was re-priced to sign the link, and that the total is not returned here.",
"type": "string"
},
"property_id": {
"type": "integer"
},
"quote_id": {
"description": "The quote_id sent with the request, echoed unchanged. Absent when none was sent.",
"type": "string"
},
"rate": {
"description": "The rate the link opens on.",
"enum": [
"refundable",
"non_refundable"
],
"type": "string"
}
},
"required": [
"booking_url",
"property_id",
"canonical_url",
"check_in",
"check_out",
"guests",
"pets",
"rate",
"confirms_booking",
"note",
"pricing_note"
],
"type": "object"
}
},
{
"description": "Live price for one property and one stay. stay_total includes cleaning, fees and taxes; nightly rates exclude them. Also returns the refundable deposit hold, which is separate from the total, the payment schedule, and that home's own cancellation and check-in terms. The top-level totals and cancellation are the non-refundable rate; rate_options lists every rate on offer with its own terms, total and booking_url, including a refundable rate with its free-cancellation deadline when check-in is more than 30 days away. Returns a booking_url the guest opens to complete the booking and accept the rental terms on Luxury Lodging's own site; this tool does not book or take payment. Amounts ending in _minor are integer cents in `currency`.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"check_in": {
"description": "Check-in date, YYYY-MM-DD.",
"type": "string"
},
"check_out": {
"description": "Check-out date, YYYY-MM-DD.",
"type": "string"
},
"guests": {
"description": "Everyone staying, including children and infants.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"pets": {
"description": "How many pets the guest is bringing, 0 to 4; 0 or leave out for none. true means one pet and false none. This changes the price: some homes charge per pet or per pet per night.",
"maximum": 4,
"minimum": 0,
"type": [
"integer",
"boolean"
]
},
"property_id": {
"description": "Property id or slug.",
"type": "string"
}
},
"required": [
"property_id",
"check_in",
"check_out"
],
"type": "object"
},
"name": "get_live_quote",
"outputSchema": {
"description": "A live total for one stay. When available is false only property_id, available, reason, booking_url and a short quote block are present.",
"properties": {
"available": {
"type": "boolean"
},
"booking_url": {
"type": "string"
},
"cancellation": {
"description": "This home's own cancellation terms for the non-refundable rate, which stay_total prices. Each entry in rate_options carries its own terms, and those are the only refund terms that apply to that rate.",
"type": "string"
},
"check_in": {
"type": "string"
},
"check_in_from": {
"type": "string"
},
"check_out": {
"type": "string"
},
"check_out_by": {
"type": "string"
},
"currency": {
"type": "string"
},
"guests": {
"type": "integer"
},
"maximum_nights": {
"type": [
"number",
"null"
]
},
"minimum_nights": {
"type": [
"number",
"null"
]
},
"name": {
"type": "string"
},
"nights": {
"type": [
"integer",
"null"
]
},
"note": {
"type": "string"
},
"payment_schedule": {
"description": "When the guest pays. plan 'deposit': due_at_booking now and the balance charged automatically to the same card on balance_charged_on (60 days before check-in). plan 'full': everything at booking.",
"properties": {
"balance": {
"type": "number"
},
"balance_charged_on": {
"type": "string"
},
"due_at_booking": {
"type": "number"
},
"plan": {
"enum": [
"full",
"deposit"
],
"type": "string"
}
},
"type": "object"
},
"pets": {
"description": "How many pets this quote is for. pet_fee in price_breakdown is the fee for that many.",
"maximum": 4,
"minimum": 0,
"type": "integer"
},
"price_breakdown": {
"properties": {
"card_processing_fee": {
"type": [
"number",
"null"
]
},
"cleaning_fee": {
"type": [
"number",
"null"
]
},
"discount": {
"type": [
"number",
"null"
]
},
"extra_guest_fee": {
"type": [
"number",
"null"
]
},
"nightly_subtotal": {
"type": [
"number",
"null"
]
},
"other_fees": {
"type": [
"number",
"null"
]
},
"pet_fee": {
"type": [
"number",
"null"
]
},
"refundable_rate_premium": {
"description": "The 8% of the nightly subtotal the refundable rate adds; 0 on the non-refundable rate.",
"type": [
"number",
"null"
]
},
"taxes": {
"description": "Lodging tax. It is collected on every stay and included in the total.",
"type": [
"number",
"null"
]
},
"total": {
"type": [
"number",
"null"
]
}
},
"type": [
"object",
"null"
]
},
"property_id": {
"type": "integer"
},
"quote": {
"description": "The authoritative, machine-readable quote for this stay, for the rate stay_total prices (the non-refundable rate). Amounts ending in _minor are integer cents in `currency`. total_stay_price_minor is exactly what the guest is charged in total, including taxes and the card processing fee, and the amounts add up: total_stay_price_minor = nightly_subtotal_minor + mandatory_fees_minor + optional_fees_minor + taxes_minor + card_fee_minor - discounts_minor. When available is false only availability_status, inventory_held, checked_at, canonical_url, incomplete and missing are present. The itemised _minor amounts are null only when missing includes price_breakdown.",
"properties": {
"availability_status": {
"enum": [
"available",
"unavailable"
],
"type": "string"
},
"cancellation_policy_id": {
"description": "The rate this quote prices; rate_options lists both.",
"enum": [
"non_refundable",
"refundable"
],
"type": "string"
},
"cancellation_summary": {
"type": "string"
},
"canonical_url": {
"description": "The home's property page, not the booking link.",
"type": "string"
},
"card_fee_minor": {
"description": "The 3.5% card processing fee, added at checkout and included in the total.",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"charges": {
"description": "Every charge, itemised. The amounts of the rows with paid_at checkout add up to total_stay_price_minor exactly; a discount row is negative.",
"items": {
"properties": {
"amount_minor": {
"type": "integer"
},
"name": {
"type": "string"
},
"paid_at": {
"description": "checkout: part of the total. outside_checkout: not part of it (the security hold).",
"enum": [
"checkout",
"outside_checkout"
],
"type": "string"
},
"type": {
"enum": [
"nightly",
"fee",
"tax",
"discount",
"card_fee",
"security_hold",
"adjustment"
],
"type": "string"
}
},
"required": [
"type",
"name",
"amount_minor",
"paid_at"
],
"type": "object"
},
"type": "array"
},
"checked_at": {
"description": "When this quote was fetched, ISO 8601.",
"type": "string"
},
"currency": {
"description": "ISO 4217 code, e.g. USD.",
"type": "string"
},
"discounts_minor": {
"description": "A positive amount subtracted from the total; 0 when there is none.",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"due_later_minor": {
"description": "The rest, charged automatically to the same card 60 days before check-in; 0 when everything is due now.",
"minimum": 0,
"type": "integer"
},
"due_now_minor": {
"description": "Charged when the guest books: 50% of the total when check-in is more than 60 days away, otherwise all of it.",
"minimum": 0,
"type": "integer"
},
"expires_at": {
"description": "When the quote lapses, ISO 8601; the same instant as quote_expires_at.",
"type": "string"
},
"incomplete": {
"description": "True when a required input or tax could not be determined; missing says which.",
"type": "boolean"
},
"inventory_held": {
"description": "False: a quote does not hold the home.",
"type": "boolean"
},
"mandatory_fees_minor": {
"description": "Cleaning and every other required fee.",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"missing": {
"description": "rent_tax_rate: the provider's fee table could not be read, so the refundable rate cannot be priced. price_breakdown: the provider sent only a total. line_items_mismatch: the itemised charges add up to more than the total.",
"items": {
"type": "string"
},
"type": "array"
},
"nightly_subtotal_minor": {
"description": "Rent for the nights before any discount, plus the refundable-rate premium when that rate is quoted.",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"nights": {
"type": [
"integer",
"null"
]
},
"optional_fees_minor": {
"description": "Fees the guest chose, the pet fee for the pets in this quote.",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"quote_id": {
"description": "Stable id for this priced stay: the same home, dates, guests, pets, rate and total give the same id; any change gives a new one. Not a hold or a reservation.",
"type": "string"
},
"refundable": {
"description": "True when the rate this quote prices can be cancelled for a refund until its free-cancellation deadline; false for the non-refundable rate.",
"type": "boolean"
},
"refundable_security_hold_minor": {
"description": "A refundable hold on the card on file, separate from the total. The home's own amount, or the standard hold when it states none.",
"minimum": 0,
"type": "integer"
},
"tax_source": {
"description": "Where the tax comes from: the provider's own quote, or our verified rate table for the home's jurisdiction when the provider's quote had none. Either way the tax is collected and in the total.",
"enum": [
"provider",
"jurisdiction_table"
],
"type": "string"
},
"taxes_included": {
"description": "True: the total includes lodging tax, which is collected on every stay.",
"type": "boolean"
},
"taxes_minor": {
"description": "Lodging tax.",
"minimum": 0,
"type": [
"integer",
"null"
]
},
"timezone": {
"description": "IANA zone of the home: the provider's own zone when it states one, otherwise the zone of the home's US state (timezone_source says which). Null when unknown.",
"type": [
"string",
"null"
]
},
"timezone_source": {
"enum": [
"listing",
"market",
"unknown"
],
"type": "string"
},
"total_stay_price_minor": {
"description": "The whole price of the stay, equal to stay_total in cents.",
"minimum": 0,
"type": "integer"
}
},
"required": [
"availability_status",
"inventory_held",
"checked_at",
"canonical_url",
"incomplete",
"missing"
],
"type": "object"
},
"quote_expires_at": {
"description": "When this quote lapses. After it, the price of the stay can differ from stay_total until it is quoted again.",
"type": "string"
},
"quoted_at": {
"type": "string"
},
"rate_options": {
"description": "Every rate on offer for this stay. The first is the non-refundable rate (the same totals as the top level). When check-in is more than 30 days away a refundable rate follows: 8% more on the nightly subtotal, taxed as rent, cancellable for a full refund of everything paid until free_cancel_until. Each rate has its own booking_url.",
"items": {
"properties": {
"booking_url": {
"type": "string"
},
"cancellation": {
"description": "This rate's terms.",
"type": "string"
},
"free_cancel_until": {
"description": "Refundable rate only. The last instant, in UTC, the stay can be cancelled for a full refund.",
"type": "string"
},
"payment_schedule": {
"type": "object"
},
"plan": {
"enum": [
"non_refundable",
"refundable"
],
"type": "string"
},
"price_breakdown": {
"type": "object"
},
"refundable": {
"description": "True when this rate can be cancelled for a refund until free_cancel_until; false when a confirmed reservation cannot be cancelled for a refund.",
"type": "boolean"
},
"stay_total": {
"type": "number"
},
"total_due_now": {
"type": "number"
}
},
"required": [
"plan",
"refundable",
"stay_total",
"total_due_now",
"cancellation",
"booking_url"
],
"type": "object"
},
"type": "array"
},
"reason": {
"description": "Why the stay cannot be booked. Only present when available is false.",
"type": "string"
},
"security_deposit_hold": {
"description": "A refundable hold, not part of stay_total.",
"type": [
"number",
"null"
]
},
"stay_total": {
"description": "The price of the stay, including cleaning, fees and taxes. Nightly rates exclude them.",
"type": [
"number",
"null"
]
},
"total_display": {
"description": "stay_total, formatted.",
"type": "string"
},
"total_due_now": {
"description": "What the guest pays at booking: the whole stay_total, or 50% of it when check-in is more than 60 days away; payment_schedule says which.",
"type": [
"number",
"null"
]
}
},
"required": [
"property_id",
"available",
"booking_url"
],
"type": "object"
}
},
{
"description": "Full detail for one property: bedrooms, capacity, amenities recorded by the property manager, photos, house rules and the real check-in, check-out, deposit and pet policies for that specific home. Location is given at neighbourhood level; the exact address is shared after booking. Guest reviews are a selection of 4- and 5-star reviews, each with its source; no average rating exists. `accommodation_type` and `bathroom_sharing` say whether the guest rents an entire home or a room: a private room or shared room is not an entire home.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"property_id": {
"description": "Property id or the slug from a booking link.",
"type": "string"
}
},
"required": [
"property_id"
],
"type": "object"
},
"name": "get_property_details",
"outputSchema": {
"properties": {
"accommodation_type": {
"description": "What the guest rents: an entire home, a private room in a shared building or a shared room. A private room or shared room is not an entire home. unknown means the type is not recorded for this home.",
"enum": [
"entire_home",
"private_room",
"shared_room",
"unknown"
],
"type": "string"
},
"alias": {
"type": [
"string",
"null"
]
},
"amenities": {
"items": {
"type": "string"
},
"type": "array"
},
"amenities_source": {
"enum": [
"provider",
"unavailable"
],
"type": "string"
},
"bathroom_sharing": {
"description": "Whether the guest has a private bathroom or shares one. unknown means it is not recorded for this home.",
"enum": [
"private",
"shared",
"unknown"
],
"type": "string"
},
"bathrooms": {
"type": [
"number",
"null"
]
},
"bedrooms": {
"type": [
"number",
"null"
]
},
"beds": {
"type": [
"number",
"null"
]
},
"booking_url": {
"type": "string"
},
"common_questions": {
"items": {
"properties": {
"answer": {
"type": "string"
},
"question": {
"type": "string"
}
},
"required": [
"question",
"answer"
],
"type": "object"
},
"type": "array"
},
"description": {
"type": [
"string",
"null"
]
},
"guest_reviews": {
"description": "A selection of 4- and 5-star reviews, not a summary of every review. No overall or average rating is implied or available.",
"properties": {
"reviews": {
"items": {
"properties": {
"published": {
"type": [
"string",
"null"
]
},
"source": {
"description": "The platform the review was left on.",
"type": "string"
},
"stars": {
"type": [
"number",
"null"
]
},
"text": {
"type": [
"string",
"null"
]
}
},
"required": [
"source"
],
"type": "object"
},
"type": "array"
},
"selection": {
"type": "string"
}
},
"required": [
"selection",
"reviews"
],
"type": "object"
},
"house_rules": {
"items": {
"type": "string"
},
"type": "array"
},
"location": {
"properties": {
"city": {
"type": "string"
},
"country": {
"description": "Null when the provider gave none; the country is then unknown.",
"type": [
"string",
"null"
]
},
"neighbourhood": {
"description": "Neighbourhood-level location only; the exact address is shared after booking.",
"type": [
"string",
"null"
]
},
"state": {
"type": [
"string",
"null"
]
}
},
"required": [
"city",
"country"
],
"type": "object"
},
"name": {
"type": "string"
},
"photos": {
"items": {
"type": "string"
},
"type": "array"
},
"policies": {
"description": "This home's own policies, not portfolio defaults, when policies_source is \"provider\".",
"properties": {
"cancellation": {
"type": "string"
},
"check_in_from": {
"type": "string"
},
"check_in_until": {
"type": [
"string",
"null"
]
},
"check_out_by": {
"type": "string"
},
"minimum_nights": {
"type": [
"number",
"null"
]
},
"pet_fee": {
"description": "The fee for one pet, from the fee table the quote charges from; with several pets a live quote charges it as pet_fee_basis says (per pet, per pet per night) and states the total in price_breakdown.pet_fee. Null when the home charges none; omitted when it could not be verified, and pet_fee_note says why.",
"type": [
"number",
"null"
]
},
"pet_fee_basis": {
"description": "How pet_fee applies. Per night multiplies by the nights; per pet by the number of pets; per pet per night by both.",
"enum": [
"per stay",
"per night",
"per pet",
"per pet per night"
],
"type": "string"
},
"pet_fee_note": {
"type": "string"
},
"pet_policy_note": {
"type": "string"
},
"pets_allowed": {
"description": "Omitted when pet policy could not be verified.",
"type": "boolean"
},
"policies_source": {
"enum": [
"provider",
"portfolio-default"
],
"type": "string"
},
"quiet_hours": {
"properties": {
"from": {
"type": "string"
},
"to": {
"type": "string"
}
},
"required": [
"from",
"to"
],
"type": [
"object",
"null"
]
},
"security_deposit_hold": {
"description": "A refundable hold, not part of the total charged at booking.",
"type": "number"
}
},
"required": [
"check_in_from",
"check_out_by",
"cancellation",
"security_deposit_hold",
"policies_source"
],
"type": "object"
},
"property_id": {
"type": "integer"
},
"property_type": {
"type": [
"string",
"null"
]
},
"sleeps": {
"type": [
"integer",
"null"
]
},
"support_email": {
"type": "string"
}
},
"required": [
"property_id",
"name",
"location",
"amenities",
"amenities_source",
"photos",
"policies",
"house_rules",
"guest_reviews",
"booking_url",
"support_email"
],
"type": "object"
}
},
{
"description": "Every city where Luxury Lodging has directly bookable homes, with the state or region, the country, how many homes and the largest group each can sleep. Counts are given for the city alone and for the wider area a search covers, split into whole homes and rooms. It shows whether a destination is covered, including when a guest has not named a place.",
"inputSchema": {
"additionalProperties": false,
"properties": {},
"type": "object"
},
"name": "list_markets",
"outputSchema": {
"properties": {
"homes_count": {
"type": "integer"
},
"markets": {
"items": {
"properties": {
"area_name": {
"type": "string"
},
"city": {
"type": "string"
},
"collection_url": {
"description": "The public page for this market, when it has enough homes to have one. It lists the homes and their neighbourhoods.",
"type": "string"
},
"country": {
"description": "Not every destination is in the United States; two cities can share a name across countries.",
"type": [
"string",
"null"
]
},
"counts": {
"description": "The same stays split into whole homes and rooms, for the city alone and for the area. homes includes unknown_type; a room is not a whole home.",
"properties": {
"area": {
"properties": {
"homes": {
"description": "Entire homes, plus homes whose type is not recorded (unknown_type).",
"type": "integer"
},
"private_rooms": {
"type": "integer"
},
"shared_rooms": {
"type": "integer"
},
"total": {
"type": "integer"
},
"unknown_type": {
"description": "Counted inside homes: nothing on record says whether these are whole homes.",
"type": "integer"
}
},
"required": [
"total",
"homes",
"private_rooms",
"shared_rooms",
"unknown_type"
],
"type": "object"
},
"city": {
"properties": {
"homes": {
"description": "Entire homes, plus homes whose type is not recorded (unknown_type).",
"type": "integer"
},
"private_rooms": {
"type": "integer"
},
"shared_rooms": {
"type": "integer"
},
"total": {
"type": "integer"
},
"unknown_type": {
"description": "Counted inside homes: nothing on record says whether these are whole homes.",
"type": "integer"
}
},
"required": [
"total",
"homes",
"private_rooms",
"shared_rooms",
"unknown_type"
],
"type": "object"
}
},
"type": "object"
},
"homes": {
"type": "integer"
},
"homes_in_area": {
"description": "Stays a search for this market returns before dates, including nearby cities (Chicago: 65 miles around the city). At least homes.",
"type": "integer"
},
"sleeps_max": {
"description": "The largest group any single home in this market sleeps.",
"type": "integer"
},
"state": {
"description": "State, province or region as the provider files it.",
"type": [
"string",
"null"
]
},
"summary": {
"description": "The counts as a guest reads them, e.g. \"41 stays in Chicago · 47 in the Chicago area, including 13 private rooms\".",
"type": "string"
}
},
"required": [
"city",
"homes",
"sleeps_max"
],
"type": "object"
},
"type": "array"
},
"markets_count": {
"type": "integer"
},
"note": {
"type": "string"
}
},
"required": [
"markets_count",
"homes_count",
"markets",
"note"
],
"type": "object"
}
},
{
"description": "Searches Luxury Lodging's directly bookable vacation rentals by destination, dates, group size, bedrooms and amenities. With dates, only homes confirmed available are returned, each with a stay total that includes cleaning, fees and taxes; nightly rates exclude them. Interchangeable units of the same type are returned once, with every unit's id listed in `similar_units` so any of them can still be quoted and booked; `limit` counts those results, while `total_matching` counts the individual homes confirmed available. A busy market can hold more homes than one request can price, so `unpriced_in_time` counts matching homes whose availability was not established: they are unknown, not unavailable, and `unpriced_property_ids` lists the property_id of up to 30 of them, each of which can be priced individually with a live quote. Pet-friendly searches also report `pet_policy_unknown`: otherwise matching homes with unverified pet policies, with or without dates. While either count is above zero, the results are not the whole market; `price_all_matches`, a higher `limit`, or a narrower place covers more of it. Without dates no price is returned. Each result carries `accommodation_type` and `bathroom_sharing`: a private room or shared room is not an entire home. Optional filters cover accommodation type, exact bedrooms, required amenities and a budget; results can be paged with `cursor`, and `completeness` is partial when a matching home was left unpriced or unchecked. A query that names a known landmark or area (\"near McCormick Place\") returns homes within `radius_miles` of it, nearest first, each with `distance_miles` and `distance_type` straight_line: a direct distance, not a driving or walking route.",
"inputSchema": {
"additionalProperties": false,
"properties": {
"accommodation_type": {
"description": "What the guest rents. Homes whose type is not recorded are left out and counted in accommodation_type_unknown.",
"enum": [
"entire_home",
"private_room",
"shared_room"
],
"type": "string"
},
"amenities": {
"description": "Amenities every returned home has, as recorded by the property manager. The same hard filter as amenities_required, except a home with no amenity data is left out without being counted.",
"items": {
"enum": [
"pool",
"hot_tub",
"parking",
"wifi",
"kitchen",
"washer",
"pets"
],
"type": "string"
},
"type": "array"
},
"amenities_preferred": {
"description": "Amenities that order homes when the requested sort ties, and appear in match_reasons. Homes lacking them stay in the results.",
"items": {
"enum": [
"pool",
"hot_tub",
"parking",
"wifi",
"kitchen",
"washer",
"pets"
],
"type": "string"
},
"type": "array"
},
"amenities_required": {
"description": "Amenities every returned home has. A home whose amenity data is unavailable fails the filter and is counted in amenities_unknown.",
"items": {
"enum": [
"pool",
"hot_tub",
"parking",
"wifi",
"kitchen",
"washer",
"pets"
],
"type": "string"
},
"type": "array"
},
"bathrooms_min": {
"description": "Fewest bathrooms acceptable.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"bedrooms_exact": {
"description": "Exactly this many bedrooms; 0 is a studio. Cannot be sent together with bedrooms_min.",
"maximum": 100,
"minimum": 0,
"type": "integer"
},
"bedrooms_min": {
"description": "Fewest bedrooms acceptable.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"budget": {
"additionalProperties": false,
"description": "A spending limit. scope total compares amount with each home's stay total including cleaning, fees and taxes, and needs check_in and check_out. scope nightly compares it with each home's starting nightly rate, which excludes cleaning, fees and taxes. amount, currency and scope are all required.",
"properties": {
"amount": {
"description": "The limit, in the stated currency.",
"exclusiveMinimum": 0,
"maximum": 1000000,
"type": "number"
},
"currency": {
"description": "Only USD is supported.",
"enum": [
"USD"
],
"type": "string"
},
"scope": {
"description": "total: the whole stay, with dates. nightly: the starting nightly rate, excluding fees and taxes.",
"enum": [
"total",
"nightly"
],
"type": "string"
}
},
"required": [
"amount",
"currency",
"scope"
],
"type": "object"
},
"check_in": {
"description": "Check-in date, YYYY-MM-DD. Availability is checked only when both dates are given.",
"type": "string"
},
"check_out": {
"description": "Check-out date, YYYY-MM-DD.",
"type": "string"
},
"cursor": {
"description": "The next_cursor value of the previous response, valid only with the same other inputs. Returns the page after it.",
"type": "string"
},
"guests": {
"description": "Everyone staying, including children and infants.",
"maximum": 50,
"minimum": 1,
"type": "integer"
},
"limit": {
"description": "How many properties to return (default 8).",
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"market": {
"description": "Market or city name, when the guest named one exactly.",
"type": "string"
},
"max_total": {
"description": "Budget for the whole stay in dollars, including cleaning, fees and taxes. Applies only when dates are given.",
"minimum": 1,
"type": "integer"
},
"page": {
"description": "Page number, starting at 1, counted in units of page_size. Cannot be sent together with cursor.",
"minimum": 1,
"type": "integer"
},
"page_size": {
"description": "Results per page, up to 20. Takes the place of limit when both are sent.",
"maximum": 20,
"minimum": 1,
"type": "integer"
},
"pets": {
"description": "How many pets the guest is bringing, 0 to 4; 0 or leave out for none. true means one pet and false none. Results are limited to pet-friendly homes, dated totals include the pet fee for that many pets, and booking links keep the number of pets.",
"maximum": 4,
"minimum": 0,
"type": [
"integer",
"boolean"
]
},
"price_all_matches": {
"description": "Prices every matching home rather than a fast sample, so total_matching is the real count and the cheapest result is genuinely the cheapest. Slower, and still bounded: unpriced_in_time counts any homes it did not reach.",
"type": "boolean"
},
"query": {
"description": "Free text place, e.g. 'Tampa', a neighbourhood, or a landmark such as 'near McCormick Place, Chicago'. A known Chicago landmark or area (McCormick Place, Navy Pier, Wrigley Field, O'Hare Airport, the South Loop and others) returns homes within radius_miles, nearest first, with a straight-line distance. Text that names no city, state, neighbourhood or landmark is refused with INVALID_INPUT; it is not answered as an empty, complete result.",
"type": "string"
},
"radius_miles": {
"description": "How far from a named landmark or area to search, in whole miles, 1 to 25. Homes are included by the distance they state, to the nearest half mile. Defaults to 5 for a landmark and 3 for an area. Ignored for any other place.",
"maximum": 25,
"minimum": 1,
"type": "integer"
},
"sort": {
"description": "total_price_* needs dates and orders by the stay total; from_price_asc orders by a starting rate that is not returned, and with dates by the stay total; sleeps_desc puts the largest homes first.",
"enum": [
"total_price_asc",
"total_price_desc",
"from_price_asc",
"sleeps_desc"
],
"type": "string"
}
},
"type": "object"
},
"name": "search_properties",
"outputSchema": {
"properties": {
"accommodation_type_unknown": {
"description": "Otherwise matching homes left out of an accommodation_type search because no type is recorded for them. They are not confirmed to be another type. 0 when the filter was not sent.",
"type": "integer"
},
"amenities_unknown": {
"description": "Otherwise matching homes left out of an amenities_required search because no amenity data is available for them. They are not confirmed to lack the amenity. 0 when the filter was not sent.",
"type": "integer"
},
"availability_note": {
"type": "string"
},
"budget_applied": {
"description": "Only returned when a budget was sent: what it was compared with.",
"properties": {
"amount": {
"type": "number"
},
"compared_to": {
"description": "stay_total includes cleaning, fees and taxes; from_price_per_night is a starting nightly rate that excludes them.",
"enum": [
"stay_total",
"from_price_per_night"
],
"type": "string"
},
"currency": {
"type": "string"
},
"homes_not_checked": {
"description": "Matching homes the budget could not be checked against: unpriced for a total budget, no starting rate for a nightly one.",
"type": "integer"
},
"includes_fees_and_taxes": {
"type": "boolean"
},
"note": {
"type": "string"
},
"scope": {
"enum": [
"total",
"nightly"
],
"type": "string"
}
},
"required": [
"scope",
"amount",
"currency",
"compared_to",
"includes_fees_and_taxes",
"note"
],
"type": "object"
},
"budget_unverified": {
"description": "Otherwise matching homes left out of a nightly budget search because no starting nightly rate is on record. 0 when the budget was not sent or was a total budget.",
"type": "integer"
},
"budget_unverified_property_ids": {
"description": "The property_id of up to 30 of the homes counted in budget_unverified; each can be priced for specific dates with a live quote.",
"items": {
"type": "integer"
},
"maxItems": 30,
"type": "array"
},
"completeness": {
"description": "complete: no matching home is unpriced, and none was left out for an unknown pet policy, accommodation type, amenity data, starting rate or position. partial: at least one is, so the results may omit a home that matches.",
"enum": [
"complete",
"partial"
],
"type": "string"
},
"dates_checked": {
"description": "False means availability is unknown and no stay has been priced; no row carries a stay_total.",
"type": "boolean"
},
"distance_unknown": {
"description": "Only on a landmark or area search: otherwise matching homes left out because no position is recorded for them, so their distance is unknown. They are not confirmed to be outside the radius.",
"type": "integer"
},
"has_more": {
"description": "True when more results follow this page in the same ordering, within the priced sample. Homes counted in unpriced_in_time are not part of any page and have no effect on this.",
"type": "boolean"
},
"matches": {
"description": "How many results this response carries.",
"type": "integer"
},
"next_cursor": {
"description": "The value to send as cursor, with every other input unchanged, to get the next page. Null when has_more is false.",
"type": [
"string",
"null"
]
},
"offset": {
"description": "How many results precede this page in the full ordering.",
"type": "integer"
},
"page_size": {
"description": "How many results this page asked for.",
"type": "integer"
},
"pet_policy_unknown": {
"description": "Otherwise matching homes omitted from a pet-friendly search because their pet policy is unknown, not confirmed to prohibit pets. Applies with or without dates; included in unpriced_in_time when dated. A positive count means the pet-friendly inventory is incomplete.",
"type": "integer"
},
"properties": {
"items": {
"properties": {
"accommodation_type": {
"description": "What the guest rents: an entire home, a private room in a shared building or a shared room. A private room or shared room is not an entire home. unknown means the type is not recorded for this home.",
"enum": [
"entire_home",
"private_room",
"shared_room",
"unknown"
],
"type": "string"
},
"availability_status": {
"description": "available: confirmed available for the requested dates when this answer was produced. not_checked: no dates were given, so availability was not checked.",
"enum": [
"available",
"not_checked"
],
"type": "string"
},
"avg_per_night": {
"description": "No longer returned; stay_total is the price of the stay.",
"type": "number"
},
"avg_per_night_display": {
"type": "string"
},
"bathroom_sharing": {
"description": "Whether the guest has a private bathroom or shares one. unknown means it is not recorded for this home.",
"enum": [
"private",
"shared",
"unknown"
],
"type": "string"
},
"bathrooms": {
"type": [
"number",
"null"
]
},
"bedrooms": {
"type": [
"number",
"null"
]
},
"booking_url": {
"description": "Where the guest completes the booking on Luxury Lodging's own site.",
"type": "string"
},
"city": {
"type": "string"
},
"content_updated_at": {
"description": "When the property manager's record of this home last changed, ISO 8601, as the provider states it. Omitted when the provider gives no such time.",
"type": "string"
},
"data_checked_at": {
"description": "When this home's availability and price were fetched, ISO 8601. Only present on a row whose stay was priced.",
"type": "string"
},
"distance_miles": {
"description": "Only on a landmark or area search: how far this home is from it, in miles, rounded to the nearest 0.5 (0.5 means under 0.5 mile), as a straight line over the ground, not a driving or walking route.",
"type": "number"
},
"distance_type": {
"description": "Only with distance_miles: how the distance was measured. straight_line is the direct distance, shorter than any route.",
"enum": [
"straight_line"
],
"type": "string"
},
"from_price_note": {
"description": "Deprecated, no longer returned along with from_price_per_night.",
"type": "string"
},
"from_price_per_night": {
"description": "Deprecated, no longer returned: only a row with a confirmed stay_total carries a price. Kept in this schema so existing clients still validate.",
"type": [
"number",
"null"
]
},
"highlights": {
"description": "Up to three short phrases describing what sets the home apart.",
"items": {
"type": "string"
},
"type": "array"
},
"match_reasons": {
"description": "Short statements of why this home passed the filters that were sent, e.g. \"2 bedrooms (exact)\" or \"has parking\". On a landmark search the first is the distance, e.g. \"1.5 mi from McCormick Place (straight line)\" or \"under 0.5 mi from McCormick Place (straight line)\". Empty when no filter was sent.",
"items": {
"type": "string"
},
"type": "array"
},
"missing_or_unverified": {
"description": "Facts about this home that could not be verified, drawn from: pet policy, amenities, accommodation type.",
"items": {
"type": "string"
},
"type": "array"
},
"name": {
"type": "string"
},
"neighbourhood": {
"description": "Neighbourhood-level location only; the exact address is shared after booking.",
"type": [
"string",
"null"
]
},
"nights": {
"type": "integer"
},
"photo": {
"type": [
"string",
"null"
]
},
"property_id": {
"type": "integer"
},
"property_type": {
"type": [
"string",
"null"
]
},
"review_count": {
"description": "How many 4- and 5-star reviews this home has. It is a count, not a rating; no average rating exists for any home.",
"type": "integer"
},
"review_sources": {
"description": "Which platforms those reviews came from.",
"items": {
"type": "string"
},
"type": "array"
},
"similar_units": {
"description": "Only present when interchangeable units of this type exist; any of these ids can be quoted and booked.",
"properties": {
"count": {
"type": "integer"
},
"note": {
"type": "string"
},
"property_ids": {
"items": {
"type": "integer"
},
"type": "array"
}
},
"required": [
"count",
"note",
"property_ids"
],
"type": "object"
},
"sleeps": {
"type": [
"integer",
"null"
]
},
"state": {
"type": [
"string",
"null"
]
},
"stay_total": {
"description": "Total for the requested dates including cleaning, fees and taxes. Only present when dates were given and the home was priced.",
"type": "number"
},
"stay_total_display": {
"type": "string"
},
"top_amenities": {
"items": {
"type": "string"
},
"type": "array"
}
},
"required": [
"property_id",
"name",
"city",
"top_amenities",
"review_count",
"review_sources",
"highlights",
"booking_url",
"match_reasons",
"availability_status",
"missing_or_unverified"
],
"type": "object"
},
"type": "array"
},
"search_scope": {
"description": "The place actually searched and how it was read.",
"properties": {
"place": {
"description": "The place searched; null when no place was given and every home was searched.",
"type": [
"string",
"null"
]
},
"radius_miles": {
"description": "How far from its centre or point homes are included; given for a metro, landmark or area.",
"type": "number"
},
"type": {
"description": "metro: the metro area around the named city, within radius_miles. state: the whole state. city: homes in the named city. nearby_or_text: homes near the place or whose listing text matches it. landmark: homes within radius_miles of a named landmark, nearest first, by straight-line distance. area: the same, measured from the centre of a named area such as the South Loop.",
"enum": [
"all_homes",
"metro",
"state",
"city",
"nearby_or_text",
"landmark",
"area"
],
"type": "string"
}
},
"required": [
"place",
"type"
],
"type": "object"
},
"searched_location": {
"type": [
"string",
"null"
]
},
"status": {
"description": "NO_MATCHES: nothing matched and nothing is unknown (unpriced_in_time and pet_policy_unknown are both 0). It is a normal answer, not an error. Any other search is OK, even with no results, and unpriced_in_time and pet_policy_unknown say what is still unknown.",
"enum": [
"OK",
"NO_MATCHES"
],
"type": "string"
},
"total_matching": {
"description": "How many individual homes matched, counting every interchangeable unit.",
"type": "integer"
},
"total_matching_groups": {
"description": "How many distinct unit types matched.",
"type": "integer"
},
"unpriced_in_time": {
"description": "Matching homes whose availability was not established for these dates, because their pet policy could not be verified, a quote failed, the request ran out of budget, or it did not reach them. They are unknown, not unavailable. `price_all_matches`, a higher `limit`, or a narrower place establishes more of them. These counts cover the whole search, not one page, and the homes they count are not part of any page. A later page quotes more homes, so the count can fall.",
"type": "integer"
},
"unpriced_property_ids": {
"description": "The property_id of up to 30 of the homes counted in unpriced_in_time; each can be priced individually with a live quote. Homes whose quote failed or timed out come first, then homes the request did not reach. A home listed here is unknown, not unavailable.",
"items": {
"type": "integer"
},
"maxItems": 30,
"type": "array"
}
},
"required": [
"matches",
"total_matching",
"total_matching_groups",
"unpriced_in_time",
"unpriced_property_ids",
"dates_checked",
"availability_note",
"properties",
"completeness",
"search_scope",
"has_more",
"next_cursor"
],
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:759fcd3579d945ee0b28730e313713e86d8940216263990233198236969e7324 | sha256sum