Skip to main content
Glama

EscapeStays by Luxury Lodging

Server Details

Book vacation rentals direct: search homes, check live availability, get a real total.

If you are the author of this connector, you can claim ownership by verifying the domain or GitHub account it belongs to. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
100.0% over 42 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL

TDQS

A4.2/5.0

Scored across 7 tools

Disambiguation4/5

Each tool has a distinct primary purpose (search, detail, availability, compare, markets, quote, booking link), and the verbose descriptions carefully delineate them. However, get_live_quote and get_booking_link both validate and re-price the same stay and could be confused, and compare_properties overlaps with search_properties when comparing homes.

Naming Consistency5/5

All seven tools follow a consistent snake_case verb_noun pattern: compare_properties, get_availability, get_booking_link, get_live_quote, get_property_details, list_markets, search_properties. No camelCase or stylistic deviations.

Tool Count5/5

Seven tools is well-scoped for a consumer vacation-rental booking surface, with each tool covering a distinct step in the guest flow (discover, inspect, check availability, price, get link). Nothing feels redundant or thin.

Completeness4/5

The surface covers the full guest journey from destination discovery to pricing and checkout-link handoff, and handles edge cases like pet policy and minimum stay. Minor gaps exist (no dedicated reviews or cancellation-policy tool), though both are folded into other tools' outputs, and actual booking intentionally happens off-site.

Available Tools

7 tools
compare_propertiesCompare homes side by sideA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
petsNoHow 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.
guestsNoEveryone staying, including children and infants.
check_inNoCheck-in date, YYYY-MM-DD. Totals are returned only when both dates are given.
check_outNoCheck-out date, YYYY-MM-DD.
property_idsYesProperty ids or slugs from search results or booking links.

Output Schema

NameRequiredDescription
noteYes
homesYes
comparedYes
dates_checkedYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds non-obvious behavioral facts: the 2–5 home bound, the date-gated price behavior, and the caveat that a private/shared room is not an entire home. These are genuine additions beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with the core action and scope, then qualifications. Dense but nearly every clause carries information (the type caveat and the date/price rule both matter). Slightly clause-heavy in the middle enumeration, but no filler sentences.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only comparison tool with an output schema, an agent has everything needed: scope limits, required vs optional dates, what gets priced, and the property-type caveat. Return-value detail is rightly left to the output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description goes beyond the schema by surfacing a cross-parameter dependency (check_in + check_out required for any price) and by explaining the accommodation_type/bathroom_sharing implications, which the schema does not capture.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (compares) and resource (2 to 5 homes) and enumerates exactly what is compared — size, amenities, review counts, check-in time, deposit, pet policy, and, with dates, availability and stay total. This clearly separates it from siblings like get_property_details (single home) and search_properties (find homes).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives an explicit audience/context — 'for a guest deciding between specific homes' — and a conditional rule ('without dates no price is returned') that tells the agent when price data appears. It does not explicitly name get_live_quote as the alternative for pricing, so the when-not guidance is incomplete.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_availabilityGet availability calendarA
Read-onlyIdempotent
Inspect

Open and blocked nights for one property over a date range of up to 93 days. minimum_nights is the smallest positive min_stay value among calendar dates returned in that range. It is a hint; individual arrival dates may require more. This result shows which alternative dates are open but does not price or confirm a stay. An exact quote determines eligibility and price for a specific stay.

NameRequiredDescriptionDefault
end_dateYesLast date to check, YYYY-MM-DD. At most 93 days after start_date.
start_dateYesFirst date to check, YYYY-MM-DD.
property_idYesProperty id or slug.

Output Schema

NameRequiredDescription
noteYes
end_dateYes
open_datesYesYYYY-MM-DD nights that are open. They still have to satisfy minimum stay and arrival rules.
start_dateYes
nights_openYes
property_idYes
blocked_datesYes
minimum_nightsNoThe smallest positive min_stay value among calendar dates returned for the requested range. It is a hint, not a guarantee that every arrival is allowed. An exact quote checks a specific stay.
nights_blockedYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safe-read profile (readOnly, idempotent, non-destructive). The description adds genuinely non-structured behavior: the 93-day range ceiling, that minimum_nights is a hint rather than a guarantee, and that results are non-binding. It does not mention rate limits or response shape, but coverage is solid.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Front-loaded with scope, then the caveat about minimum_nights, then the boundary with quoting tools. Four sentences with almost no waste, though the 'does not price or confirm a stay' idea is slightly restated in the closing sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only availability tool with an output schema present, the description supplies everything an agent needs: the hard range limit, the semantics of the returned minimum_nights value, and the explicit boundary that pricing/confirmation belong elsewhere.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so start_date, end_date and property_id are already documented, including the 93-day cap the description restates. The description adds no parameter-level detail (e.g. slug vs id tradeoffs) beyond what the schema provides, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence gives a specific verb and resource: open and blocked nights for one property over a bounded date range. Combined with 'does not price or confirm a stay', an agent can immediately separate this from get_live_quote and get_booking_link without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It clearly states the context of use — browsing which alternative dates are open — and explicitly rules out pricing/confirmation, pointing at 'an exact quote' as the tool that determines eligibility. It never names get_live_quote directly, so the routing is implied rather than spelled out.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_live_quoteGet a live total priceA
Read-onlyIdempotent
Inspect

Live price for one property and one stay. stay_total includes cleaning, fees and taxes; nightly rates exclude them. If a stay is too short, it returns the coded MIN_STAY_NOT_MET error and the applicable threshold in error.details.minimum_nights. 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 (a cancellation by then refunds everything paid except the 3.5% card processing fee). 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. An optional coupon_code is applied to the rent before the rates are priced, as on the website, so when the code applies every total includes it; when it does not, the totals are the price without it and the coupon field says why. The booking_url carries the code only when it applied, and the code is checked again at booking. Amounts ending in _minor are integer cents in currency.

NameRequiredDescriptionDefault
petsNoHow 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.
guestsNoEveryone staying, including children and infants.
check_inYesCheck-in date, YYYY-MM-DD.
check_outYesCheck-out date, YYYY-MM-DD.
coupon_codeNoA coupon code the guest was given. Optional. When it applies, the totals and every rate's total include it, and the discount appears in price_breakdown and as a negative row in quote.charges. A code that does not apply, or that nobody issued, leaves the price unchanged and is reported in coupon with its reason. A code tied to one guest's email is reported as not found. A quote does not reserve a use of a code, and the code is checked again when the guest books, so it may no longer apply then.
property_idYesProperty id or slug.

Output Schema

NameRequiredDescription
nameNo
noteNo
petsNoHow many pets this quote is for. pet_fee in price_breakdown is the fee for that many.
quoteNoThe 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.
couponNoWhat happened to the coupon_code that was sent. Only returned when one was sent. The stay's totals already include the coupon when applied is true and are the price without it when applied is false.
guestsNo
nightsNo
reasonNoWhy the stay cannot be booked. Only present when available is false.
check_inNo
currencyNo
availableYes
check_outNo
quoted_atNo
stay_totalNoThe price of the stay, including cleaning, fees and taxes, and the coupon when one applied. Nightly rates exclude them.
booking_urlYesWhere the guest completes the booking on Luxury Lodging's own site, for the non-refundable rate. It names the coupon only when the coupon applied.
property_idYes
cancellationNoThis 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.
check_out_byNo
rate_optionsNoEvery 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 until free_cancel_until; on a cancellation by then the 3.5% card processing fee is non-refundable and everything else paid is refunded in full. Each rate has its own booking_url.
check_in_fromNo
total_displayNostay_total, formatted.
total_due_nowNoWhat 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.
maximum_nightsNo
minimum_nightsNoOn an unavailable result, a calendar minimum when available or the home's general policy baseline otherwise. If an exact stay is too short, get_live_quote returns MIN_STAY_NOT_MET with the applicable threshold in error.details.minimum_nights.
price_breakdownNo
payment_scheduleNoWhen 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.
quote_expires_atNoWhen this quote lapses. After it, the price of the stay can differ from stay_total until it is quoted again.
security_deposit_holdNoA refundable hold, not part of stay_total.

TDQS

A4.6/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds substantial depth: the MIN_STAY_NOT_MET error with details.minimum_nights, the deposit hold being separate from the total, the payment schedule, refundable-rate free-cancellation logic (>30 days, 3.5% card fee), booking_url behavior, and coupon re-validation at booking. This is far beyond what the structured fields convey.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose is front-loaded and the dense paragraph is well organized, with each sentence carrying real information. It is long, and some return-value detail (deposit hold, payment schedule, rate_options contents) partly overlaps the output schema, costing a little conciseness, but nothing reads as filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only pricing tool with a rich output schema, the description covers everything an agent needs: scope, error semantics, currency conventions, coupon behavior, deposit separation, and the boundary that booking happens elsewhere. No critical gap remains.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema documents parameters thoroughly and the baseline is 3. The description adds genuine meaning beyond it, notably that coupon_code is applied to rent before rates are priced, carried in booking_url only when it applied, and re-checked at booking time, plus the _minor integer-cents convention.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The first sentence states a specific verb and resource with scope: 'Live price for one property and one stay.' This cleanly separates it from siblings like get_availability, compare_properties, and get_booking_link, and an agent can identify the tool without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Scope is clear ('one property and one stay') and it draws an explicit when-not boundary: 'this tool does not book or take payment,' pointing the agent toward the booking path. It does not, however, name sibling alternatives (e.g., compare_properties for multiple homes) or state prerequisites, so it stops short of full routing guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_property_detailsGet property detailsA
Read-onlyIdempotent
Inspect

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. policies.minimum_nights is the general policy baseline; calendar restrictions can require more on particular dates. Dated availability reports calendar rules, and an exact quote checks whether a specific stay meets them. 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.

NameRequiredDescriptionDefault
property_idYesProperty id or the slug from a booking link.

Output Schema

NameRequiredDescription
bedsNo
nameYes
aliasNo
photosYes
sleepsNo
bedroomsNo
locationYes
policiesYesThis home's own policies, not portfolio defaults, when policies_source is "provider".
amenitiesYes
bathroomsNo
booking_urlYes
descriptionNo
house_rulesYes
property_idYes
guest_reviewsYesA selection of 4- and 5-star reviews, not a summary of every review. No overall or average rating is implied or available.
property_typeNo
support_emailYes
amenities_sourceYes
bathroom_sharingNoWhether the guest has a private bathroom or shares one. unknown means it is not recorded for this home.
common_questionsNo
accommodation_typeNoWhat 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.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, open-world, non-destructive, so the safety profile is covered. The description adds genuinely non-obvious behavioral context: location is neighbourhood-level with the exact address only after booking, reviews are a 4- and 5-star selection with no average rating, and minimum_nights is only a baseline that calendar rules can override.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The core purpose is front-loaded in the first clause, and each following sentence carries distinct, non-redundant information about data shape and policy semantics. It is information-dense but slightly long, with several caveats packed into one paragraph.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be re-explained; the description instead covers the non-obvious semantics an agent cannot infer (neighbourhood-level location, review selection, policy baselines, entire-home vs room distinction). Nothing needed to call and interpret this tool is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There is a single parameter with 100% schema description coverage, so the schema already explains that property_id accepts an id or a booking-link slug. The description adds no further parameter meaning, which is the expected baseline of 3 when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource (full detail for one property) and enumerates the concrete content: bedrooms, capacity, amenities, photos, house rules, and real check-in/check-out/deposit/pet policies. It also distinguishes itself from date-scoped siblings by noting that minimum_nights is only a baseline and that availability/quote tools handle specific dates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives clear context for when this tool applies and points at adjacent flows ('dated availability reports calendar rules, and an exact quote checks whether a specific stay meets them'), effectively routing to get_availability and get_live_quote. However, it never names those tools or states an explicit exclusion, leaving some inference to the agent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_marketsList destinationsA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault

No parameters

Output Schema

NameRequiredDescription
noteYes
marketsYes
homes_countYes
markets_countYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and non-destructive, so the safety profile is covered. The description adds context beyond that by explaining what the returned data means - coverage status and counts split between the city alone and the wider search area, and between whole homes and rooms - which is genuinely useful interpretive context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Three sentences, reasonably front-loaded, each carrying content: what is listed, what the counts mean, and what coverage indicates. Slightly dense and partly restates what the output schema likely already carries, but there is no filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With no parameters, an output schema present, and read-only/idempotent annotations, the description supplies everything needed to invoke the tool correctly. Nothing an agent must know to call it is missing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. The absence of parameters is itself consistent with the description's framing as an unfiltered enumeration of destinations.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific resource (every city with directly bookable Luxury Lodging homes) and enumerates the attributes returned: state/region, country, home counts, and max group size. It is far more specific than a tautology, but it never contrasts itself with siblings like search_properties or get_property_details, so an agent must infer the distinction.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is only implied: 'It shows whether a destination is covered, including when a guest has not named a place' hints at a discovery/coverage-check scenario, but there is no explicit when-to-use, no exclusion, and no mention of the sibling tools that would handle property-level searches. Adequate but with a clear gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_propertiesSearch Luxury Lodging homesA
Read-onlyIdempotent
Inspect

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.

NameRequiredDescriptionDefault
pageNoPage number, starting at 1, counted in units of page_size. Cannot be sent together with cursor.
petsNoHow 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.
sortNototal_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.
limitNoHow many properties to return (default 8).
queryNoFree 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.
budgetNoA 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.
cursorNoThe next_cursor value of the previous response, valid only with the same other inputs. Returns the page after it.
guestsNoEveryone staying, including children and infants.
marketNoMarket or city name, when the guest named one exactly.
check_inNoCheck-in date, YYYY-MM-DD. Availability is checked only when both dates are given.
amenitiesNoAmenities 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.
check_outNoCheck-out date, YYYY-MM-DD.
max_totalNoBudget for the whole stay in dollars, including cleaning, fees and taxes. Applies only when dates are given.
page_sizeNoResults per page, up to 20. Takes the place of limit when both are sent.
bedrooms_minNoFewest bedrooms acceptable.
radius_milesNoHow 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.
bathrooms_minNoFewest bathrooms acceptable.
bedrooms_exactNoExactly this many bedrooms; 0 is a studio. Cannot be sent together with bedrooms_min.
price_all_matchesNoPrices 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.
accommodation_typeNoWhat the guest rents. Homes whose type is not recorded are left out and counted in accommodation_type_unknown.
amenities_requiredNoAmenities every returned home has. A home whose amenity data is unavailable fails the filter and is counted in amenities_unknown.
amenities_preferredNoAmenities that order homes when the requested sort ties, and appear in match_reasons. Homes lacking them stay in the results.

Output Schema

NameRequiredDescription
offsetNoHow many results precede this page in the full ordering.
statusNoNO_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.
matchesYesHow many results this response carries.
has_moreYesTrue 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.
page_sizeNoHow many results this page asked for.
propertiesYes
next_cursorYesThe value to send as cursor, with every other input unchanged, to get the next page. Null when has_more is false.
completenessYescomplete: 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.
search_scopeYesThe place actually searched and how it was read.
dates_checkedYesFalse means availability is unknown and no stay has been priced; no row carries a stay_total.
budget_appliedNoOnly returned when a budget was sent: what it was compared with.
total_matchingYesHow many individual homes matched, counting every interchangeable unit.
distance_unknownNoOnly 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.
unpriced_in_timeYesMatching 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.
amenities_unknownNoOtherwise 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.
availability_noteYes
budget_unverifiedNoOtherwise 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.
searched_locationNo
pet_policy_unknownNoOtherwise 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.
total_matching_groupsYesHow many distinct unit types matched.
unpriced_property_idsYesThe 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.
accommodation_type_unknownNoOtherwise 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.
budget_unverified_property_idsNoThe property_id of up to 30 of the homes counted in budget_unverified; each can be priced for specific dates with a live quote.

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover read-only safety and idempotency. The description adds valuable behavioral context: availability confirmation with dates, handling of unpriced homes (unknown not unavailable), pet policy unknowns, completeness partial state, and distance semantics. It omits explicit permission requirements or rate limits, which are less critical for a read-only search.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

At roughly 250 words, the description is dense but front-loads the core purpose. It efficiently conveys many behavioral details, though some sentences could be trimmed (e.g., the landmark search example is repeated). Overall, it earns its space given the tool's complexity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's 22 parameters, output schema, and rich annotations, the description covers all essential behavioral nuances: availability, pricing, unit interchangeability, unpriced homes, pet policy, completeness, and distance semantics. An agent has sufficient context to invoke correctly and interpret results.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema fully documents all parameters. The description adds some high-level context about filters (accommodation type, bedrooms, amenities, budget) and paging, but does not provide syntax or format details beyond the schema. Baseline 3 is appropriate when schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('Searches') and resource ('directly bookable vacation rentals') scoped by destination, dates, group size, bedrooms and amenities. It distinguishes itself from siblings like get_live_quote and compare_properties by emphasizing directly bookable inventory and search filtering.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly signals when to use this tool (searching for homes) vs alternatives, e.g., 'each of which can be priced individually with a live quote' hints at get_live_quote for unpriced items. However, it does not explicitly state when to use compare_properties or list_markets instead, leaving some guidance implied.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 3 tool updates
    • Changedget_availability1 field changed
      • addedOutput schema / properties / minimum_nights / description
        Added value: +"The smallest positive min_stay value among calendar dates returned for the requested range. It is a hint, not a guarantee that every arrival is allowed. An exact quote checks a specific stay."
    • Changedget_live_quote3 fields changed
      • addedOutput schema / properties / minimum_nights / description
        Added value: +"On an unavailable result, a calendar minimum when available or the home's general policy baseline otherwise. If an exact stay is too short, get_live_quote returns MIN_STAY_NOT_MET with the applicable threshold in error.details.minimum_nights."
      • changedOutput schema / properties / price_breakdown / properties / discount / description
        Previous value: -"Dollars the coupon took off the rent; 0 when none applied."New value: +"Dollars a coupon or the monthly stay discount took off the rent; 0 when none applied. nightly_subtotal is the rent after it. A stay of 28 nights or more gets 10% off its rent automatically, and a coupon replaces that only when it takes off more."
      • addedOutput schema / properties / price_breakdown / properties / discount_label
        Added value: +{
        +  "description": "Only when discount is above 0. The discount's name, for example \"Monthly stay discount, 10%\".",
        +  "type": "string"
        +}
    • Changedget_property_details1 field changed
      • addedOutput schema / properties / policies / properties / minimum_nights / description
        Added value: +"The general minimum from this home's policy source. It is a baseline, not a promise that every date allows a stay this short; date-specific calendar rules can be higher. An exact quote checks the requested dates."
  2. 1 tool update
    • Changedget_live_quote7 fields changed
      • changedOutput schema / properties / price_breakdown / properties / taxes / description
        Previous value: -"Lodging tax. It is collected on every stay and included in the total."New value: +"Lodging tax. It is collected on every stay and included in the total; a long-stay rate can be lower, or zero where the law exempts the stay (taxes_note says why)."
      • addedOutput schema / properties / price_breakdown / properties / taxes_label
        Added value: +{
        +  "description": "Only a long-stay rate carries this field. It is the line's name, \"Lodging tax (long-stay rate)\".",
        +  "type": "string"
        +}
      • addedOutput schema / properties / price_breakdown / properties / taxes_note
        Added value: +{
        +  "description": "Only a long-stay rate carries this field. It names the taxes the stay is exempt from and any that still apply.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / quote / properties / lodging_tax_label
        Added value: +{
        +  "description": "Only a long-stay rate carries this field. It is the lodging tax line's name, \"Lodging tax (long-stay rate)\".",
        +  "type": "string"
        +}
      • addedOutput schema / properties / quote / properties / lodging_tax_note
        Added value: +{
        +  "description": "Only a long-stay rate carries this field. It names the taxes this stay is exempt from and any that still apply.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / quote / properties / tax_source / description
        Previous value: -"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."New value: +"Where the tax comes from: the provider's own quote, our verified rate table for the home's jurisdiction when the provider's quote had none, or a long-stay rule when the stay is long enough to be exempt from some of the place's lodging taxes (lodging_tax_note says which). In every case the tax that applies is collected and in the total."
      • changedOutput schema / properties / quote / properties / tax_source / enum
        Previous value: -[
        -  "provider",
        -  "jurisdiction_table"
        -]New value: +[
        +  "provider",
        +  "jurisdiction_table",
        +  "long_stay_rule"
        +]
  3. 2 tool updates
    • Changedget_booking_link3 fields changed
      • addedInput schema / properties / coupon_code
        Added value: +{
        +  "description": "A coupon code the guest was given. Optional. When it applies, the link's signed total includes it and the link carries the code, so the website prices the stay the same way. A code that does not apply, or that nobody issued, leaves the price unchanged and is reported in coupon with its reason. A code tied to one guest's email is reported as not found. A quote does not reserve a use of a code, and the code is checked again when the guest books, so it may no longer apply then.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
      • changedOutput schema / properties / booking_url / description
        Previous value: -"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)."New value: +"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, coupon and attribution, with a freshly signed quote token (so its quote_ref differs from the quote's). It names the coupon only when the coupon applied."
      • addedOutput schema / properties / coupon
        Added value: +{
        +  "description": "What happened to the coupon_code that was sent. Only returned when one was sent. The stay's totals already include the coupon when applied is true and are the price without it when applied is false.",
        +  "properties": {
        +    "amount_off": {
        +      "description": "Dollars taken off the stay's rent. Only when applied is true; it is already inside the totals.",
        +      "type": "number"
        +    },
        +    "applied": {
        +      "description": "True when the code took money off this stay.",
        +      "type": "boolean"
        +    },
        +    "code": {
        +      "description": "The code as sent, in upper case.",
        +      "type": "string"
        +    },
        +    "label": {
        +      "description": "What the discount is called. Only when applied is true.",
        +      "type": "string"
        +    },
        +    "message": {
        +      "description": "A sentence the guest can read about the code.",
        +      "type": "string"
        +    },
        +    "reason": {
        +      "description": "Why the code did not apply. Only when applied is false. unknown: no such code. unavailable: the code could not be checked just now.",
        +      "enum": [
        +        "unknown",
        +        "inactive",
        +        "expired",
        +        "not_started",
        +        "wrong_market",
        +        "wrong_home",
        +        "requires_attribution",
        +        "no_discountable_amount",
        +        "outside_offer_window",
        +        "blacked_out",
        +        "minimum_nights",
        +        "already_used",
        +        "unavailable"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "applied",
        +    "message"
        +  ],
        +  "type": "object"
        +}
    • Changedget_live_quote5 fields changed
      • addedInput schema / properties / coupon_code
        Added value: +{
        +  "description": "A coupon code the guest was given. Optional. When it applies, the totals and every rate's total include it, and the discount appears in price_breakdown and as a negative row in quote.charges. A code that does not apply, or that nobody issued, leaves the price unchanged and is reported in coupon with its reason. A code tied to one guest's email is reported as not found. A quote does not reserve a use of a code, and the code is checked again when the guest books, so it may no longer apply then.",
        +  "maxLength": 40,
        +  "type": "string"
        +}
      • addedOutput schema / properties / booking_url / description
        Added value: +"Where the guest completes the booking on Luxury Lodging's own site, for the non-refundable rate. It names the coupon only when the coupon applied."
      • addedOutput schema / properties / coupon
        Added value: +{
        +  "description": "What happened to the coupon_code that was sent. Only returned when one was sent. The stay's totals already include the coupon when applied is true and are the price without it when applied is false.",
        +  "properties": {
        +    "amount_off": {
        +      "description": "Dollars taken off the stay's rent. Only when applied is true; it is already inside the totals.",
        +      "type": "number"
        +    },
        +    "applied": {
        +      "description": "True when the code took money off this stay.",
        +      "type": "boolean"
        +    },
        +    "code": {
        +      "description": "The code as sent, in upper case.",
        +      "type": "string"
        +    },
        +    "label": {
        +      "description": "What the discount is called. Only when applied is true.",
        +      "type": "string"
        +    },
        +    "message": {
        +      "description": "A sentence the guest can read about the code.",
        +      "type": "string"
        +    },
        +    "reason": {
        +      "description": "Why the code did not apply. Only when applied is false. unknown: no such code. unavailable: the code could not be checked just now.",
        +      "enum": [
        +        "unknown",
        +        "inactive",
        +        "expired",
        +        "not_started",
        +        "wrong_market",
        +        "wrong_home",
        +        "requires_attribution",
        +        "no_discountable_amount",
        +        "outside_offer_window",
        +        "blacked_out",
        +        "minimum_nights",
        +        "already_used",
        +        "unavailable"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "applied",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • addedOutput schema / properties / price_breakdown / properties / discount / description
        Added value: +"Dollars the coupon took off the rent; 0 when none applied."
      • changedOutput schema / properties / stay_total / description
        Previous value: -"The price of the stay, including cleaning, fees and taxes. Nightly rates exclude them."New value: +"The price of the stay, including cleaning, fees and taxes, and the coupon when one applied. Nightly rates exclude them."
  4. 1 tool update
    • Changedget_live_quote3 fields changed
      • changedOutput schema / properties / quote / properties / card_fee_minor / description
        Previous value: -"The 3.5% card processing fee, added at checkout and included in the total."New value: +"The 3.5% card processing fee, added at checkout and included in the total. It is non-refundable when a refundable-rate stay is cancelled."
      • changedOutput schema / properties / rate_options / description
        Previous value: -"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."New value: +"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 until free_cancel_until; on a cancellation by then the 3.5% card processing fee is non-refundable and everything else paid is refunded in full. Each rate has its own booking_url."
      • changedOutput schema / properties / rate_options / items / properties / free_cancel_until / description
        Previous value: -"Refundable rate only. The last instant, in UTC, the stay can be cancelled for a full refund."New value: +"Refundable rate only. The last instant, in UTC, the stay can be cancelled for a refund of everything paid except the 3.5% card processing fee."
  5. 6 tool updates
    • Changedcompare_properties11 fields changed
      • changedInput schema / properties / guests / description
        Previous value: -"Number of guests."New value: +"Everyone staying, including children and infants."
      • changedInput schema / properties / pets / description
        Previous value: -"Whether the guest is bringing a pet."New value: +"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."
      • addedInput schema / properties / pets / maximum
        Added value: +4
      • addedInput schema / properties / pets / minimum
        Added value: +0
      • changedInput schema / properties / pets / type
        Previous value: -"boolean"New value: +[
        +  "integer",
        +  "boolean"
        +]
      • addedOutput schema / properties / homes / items / properties / accommodation_type
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / homes / items / properties / bathroom_sharing
        Added value: +{
        +  "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"
        +}
      • changedOutput schema / properties / homes / items / properties / from_price_note / description
        Previous value: -"Only present when from_price_per_night is null: what is and is not visible about this home's calendar. A null starting rate means neither that the home is booked out nor that it is ready to book."New value: +"Deprecated, no longer returned along with from_price_per_night."
      • changedOutput schema / properties / homes / items / properties / from_price_per_night / description
        Previous value: -"Starting nightly rate. It excludes cleaning, fees and taxes, so it is not the price of any stay. Only present on a row without stay_total. Null means no starting rate is published for this home, not that it is free; from_price_note says why."New value: +"Deprecated, no longer returned: only a row with a confirmed stay_total carries a price. Kept in this schema so existing clients still validate."
      • changedOutput schema / properties / homes / items / properties / pet_fee / description
        Previous value: -"For a stay with one pet, from the fee table the quote charges from. Null when the home charges none; omitted when it could not be verified, and pet_fee_note says why."New value: +"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."
      • changedOutput schema / properties / homes / items / properties / pet_fee_basis / enum
        Previous value: -[
        -  "per stay",
        -  "per pet",
        -  "per pet per night"
        -]New value: +[
        +  "per stay",
        +  "per night",
        +  "per pet",
        +  "per pet per night"
        +]
    • Addedget_booking_link
    • Changedget_live_quote13 fields changed
      • changedInput schema / properties / guests / description
        Previous value: -"Number of guests."New value: +"Everyone staying, including children and infants."
      • changedInput schema / properties / pets / description
        Previous value: -"Whether the guest is bringing a pet; this changes the price."New value: +"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."
      • addedInput schema / properties / pets / maximum
        Added value: +4
      • addedInput schema / properties / pets / minimum
        Added value: +0
      • changedInput schema / properties / pets / type
        Previous value: -"boolean"New value: +[
        +  "integer",
        +  "boolean"
        +]
      • changedOutput schema / description
        Previous value: -"A live total for one stay. When available is false only property_id, available, reason and booking_url are present."New value: +"A live total for one stay. When available is false only property_id, available, reason, booking_url and a short quote block are present."
      • addedOutput schema / properties / pets / description
        Added value: +"How many pets this quote is for. pet_fee in price_breakdown is the fee for that many."
      • addedOutput schema / properties / pets / maximum
        Added value: +4
      • addedOutput schema / properties / pets / minimum
        Added value: +0
      • changedOutput schema / properties / pets / type
        Previous value: -"boolean"New value: +"integer"
      • addedOutput schema / properties / quote
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / rate_options / items / properties / refundable
        Added value: +{
        +  "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"
        +}
      • changedOutput schema / properties / rate_options / items / required
        Previous value: -[
        -  "plan",
        -  "stay_total",
        -  "total_due_now",
        -  "cancellation",
        -  "booking_url"
        -]New value: +[
        +  "plan",
        +  "refundable",
        +  "stay_total",
        +  "total_due_now",
        +  "cancellation",
        +  "booking_url"
        +]
    • Changedget_property_details5 fields changed
      • addedOutput schema / properties / accommodation_type
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / bathroom_sharing
        Added value: +{
        +  "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"
        +}
      • changedOutput schema / properties / policies / properties / pet_fee / description
        Previous value: -"For a stay with one pet, from the fee table the quote charges from. Null when the home charges none; omitted when it could not be verified, and pet_fee_note says why."New value: +"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."
      • changedOutput schema / properties / policies / properties / pet_fee_basis / description
        Previous value: -"How pet_fee applies. A per-pet-per-night fee multiplies by the nights."New value: +"How pet_fee applies. Per night multiplies by the nights; per pet by the number of pets; per pet per night by both."
      • changedOutput schema / properties / policies / properties / pet_fee_basis / enum
        Previous value: -[
        -  "per stay",
        -  "per pet",
        -  "per pet per night"
        -]New value: +[
        +  "per stay",
        +  "per night",
        +  "per pet",
        +  "per pet per night"
        +]
    • Changedlist_markets4 fields changed
      • addedOutput schema / properties / markets / items / properties / area_name
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / markets / items / properties / counts
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / markets / items / properties / homes_in_area
        Added value: +{
        +  "description": "Stays a search for this market returns before dates, including nearby cities (Chicago: 65 miles around the city). At least homes.",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / markets / items / properties / summary
        Added value: +{
        +  "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"
        +}
    • Changedsearch_properties45 fields changed
      • addedInput schema / properties / accommodation_type
        Added value: +{
        +  "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"
        +}
      • changedInput schema / properties / amenities / description
        Previous value: -"Amenities every returned home has, as recorded by the property manager."New value: +"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."
      • addedInput schema / properties / amenities_preferred
        Added value: +{
        +  "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"
        +}
      • addedInput schema / properties / amenities_required
        Added value: +{
        +  "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"
        +}
      • addedInput schema / properties / bedrooms_exact
        Added value: +{
        +  "description": "Exactly this many bedrooms; 0 is a studio. Cannot be sent together with bedrooms_min.",
        +  "maximum": 100,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / budget
        Added value: +{
        +  "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"
        +}
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "The next_cursor value of the previous response, valid only with the same other inputs. Returns the page after it.",
        +  "type": "string"
        +}
      • changedInput schema / properties / guests / description
        Previous value: -"Number of guests, including children."New value: +"Everyone staying, including children and infants."
      • addedInput schema / properties / page
        Added value: +{
        +  "description": "Page number, starting at 1, counted in units of page_size. Cannot be sent together with cursor.",
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / page_size
        Added value: +{
        +  "description": "Results per page, up to 20. Takes the place of limit when both are sent.",
        +  "maximum": 20,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedInput schema / properties / pets / description
        Previous value: -"The guest is bringing a pet. Results are limited to pet-friendly homes, dated totals include the pet fee, and booking links keep the pet selection."New value: +"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."
      • addedInput schema / properties / pets / maximum
        Added value: +4
      • addedInput schema / properties / pets / minimum
        Added value: +0
      • changedInput schema / properties / pets / type
        Previous value: -"boolean"New value: +[
        +  "integer",
        +  "boolean"
        +]
      • changedInput schema / properties / query / description
        Previous value: -"Free text place, e.g. 'Tampa', 'near Chicago downtown', a neighbourhood or a landmark."New value: +"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."
      • addedInput schema / properties / radius_miles
        Added value: +{
        +  "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"
        +}
      • changedInput schema / properties / sort / description
        Previous value: -"total_price_* needs dates and orders by the stay total; from_price_asc orders by starting nightly rate; sleeps_desc puts the largest homes first."New value: +"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."
      • addedOutput schema / properties / accommodation_type_unknown
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / amenities_unknown
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / budget_applied
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / budget_unverified
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / budget_unverified_property_ids
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / completeness
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / distance_unknown
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / has_more
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / next_cursor
        Added value: +{
        +  "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"
        +  ]
        +}
      • addedOutput schema / properties / offset
        Added value: +{
        +  "description": "How many results precede this page in the full ordering.",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / page_size
        Added value: +{
        +  "description": "How many results this page asked for.",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / properties / items / properties / accommodation_type
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / properties / items / properties / availability_status
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / properties / items / properties / bathroom_sharing
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / properties / items / properties / content_updated_at
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / properties / items / properties / data_checked_at
        Added value: +{
        +  "description": "When this home's availability and price were fetched, ISO 8601. Only present on a row whose stay was priced.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / properties / items / properties / distance_miles
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / properties / items / properties / distance_type
        Added value: +{
        +  "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"
        +}
      • changedOutput schema / properties / properties / items / properties / from_price_note / description
        Previous value: -"Only present when from_price_per_night is null: what is and is not visible about this home's calendar. A null starting rate means neither that the home is booked out nor that it is ready to book."New value: +"Deprecated, no longer returned along with from_price_per_night."
      • changedOutput schema / properties / properties / items / properties / from_price_per_night / description
        Previous value: -"Starting nightly rate, used to order results. It excludes cleaning, fees and taxes, so it is not the price of any stay. Only present on a row without stay_total. Null means no starting rate is published for this home, not that it is free or cheap; from_price_note says why."New value: +"Deprecated, no longer returned: only a row with a confirmed stay_total carries a price. Kept in this schema so existing clients still validate."
      • addedOutput schema / properties / properties / items / properties / match_reasons
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / properties / items / properties / missing_or_unverified
        Added value: +{
        +  "description": "Facts about this home that could not be verified, drawn from: pet policy, amenities, accommodation type.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / properties / items / required
        Previous value: -[
        -  "property_id",
        -  "name",
        -  "city",
        -  "top_amenities",
        -  "review_count",
        -  "review_sources",
        -  "highlights",
        -  "booking_url"
        -]New value: +[
        +  "property_id",
        +  "name",
        +  "city",
        +  "top_amenities",
        +  "review_count",
        +  "review_sources",
        +  "highlights",
        +  "booking_url",
        +  "match_reasons",
        +  "availability_status",
        +  "missing_or_unverified"
        +]
      • addedOutput schema / properties / search_scope
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / status
        Added value: +{
        +  "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"
        +}
      • changedOutput schema / properties / unpriced_in_time / description
        Previous value: -"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."New value: +"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."
      • addedOutput schema / properties / unpriced_property_ids
        Added value: +{
        +  "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"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "matches",
        -  "total_matching",
        -  "total_matching_groups",
        -  "unpriced_in_time",
        -  "dates_checked",
        -  "availability_note",
        -  "properties"
        -]New value: +[
        +  "matches",
        +  "total_matching",
        +  "total_matching_groups",
        +  "unpriced_in_time",
        +  "unpriced_property_ids",
        +  "dates_checked",
        +  "availability_note",
        +  "properties",
        +  "completeness",
        +  "search_scope",
        +  "has_more",
        +  "next_cursor"
        +]
  6. 6 tool updates
    • Changedcompare_properties11 fields changed
      • changedInput schema / properties / guests / description
        Previous value: -"Everyone staying, including children and infants."New value: +"Number of guests."
      • changedInput schema / properties / pets / description
        Previous value: -"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."New value: +"Whether the guest is bringing a pet."
      • removedInput schema / properties / pets / maximum
        Removed value: -4
      • removedInput schema / properties / pets / minimum
        Removed value: -0
      • changedInput schema / properties / pets / type
        Previous value: -[
        -  "integer",
        -  "boolean"
        -]New value: +"boolean"
      • removedOutput schema / properties / homes / items / properties / accommodation_type
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / homes / items / properties / bathroom_sharing
        Removed value: -{
        -  "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"
        -}
      • changedOutput schema / properties / homes / items / properties / from_price_note / description
        Previous value: -"Deprecated, no longer returned along with from_price_per_night."New value: +"Only present when from_price_per_night is null: what is and is not visible about this home's calendar. A null starting rate means neither that the home is booked out nor that it is ready to book."
      • changedOutput schema / properties / homes / items / properties / from_price_per_night / description
        Previous value: -"Deprecated, no longer returned: only a row with a confirmed stay_total carries a price. Kept in this schema so existing clients still validate."New value: +"Starting nightly rate. It excludes cleaning, fees and taxes, so it is not the price of any stay. Only present on a row without stay_total. Null means no starting rate is published for this home, not that it is free; from_price_note says why."
      • changedOutput schema / properties / homes / items / properties / pet_fee / description
        Previous value: -"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."New value: +"For a stay with one pet, from the fee table the quote charges from. Null when the home charges none; omitted when it could not be verified, and pet_fee_note says why."
      • changedOutput schema / properties / homes / items / properties / pet_fee_basis / enum
        Previous value: -[
        -  "per stay",
        -  "per night",
        -  "per pet",
        -  "per pet per night"
        -]New value: +[
        +  "per stay",
        +  "per pet",
        +  "per pet per night"
        +]
    • Removedget_booking_link
    • Changedget_live_quote13 fields changed
      • changedInput schema / properties / guests / description
        Previous value: -"Everyone staying, including children and infants."New value: +"Number of guests."
      • changedInput schema / properties / pets / description
        Previous value: -"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."New value: +"Whether the guest is bringing a pet; this changes the price."
      • removedInput schema / properties / pets / maximum
        Removed value: -4
      • removedInput schema / properties / pets / minimum
        Removed value: -0
      • changedInput schema / properties / pets / type
        Previous value: -[
        -  "integer",
        -  "boolean"
        -]New value: +"boolean"
      • changedOutput schema / description
        Previous value: -"A live total for one stay. When available is false only property_id, available, reason, booking_url and a short quote block are present."New value: +"A live total for one stay. When available is false only property_id, available, reason and booking_url are present."
      • removedOutput schema / properties / pets / description
        Removed value: -"How many pets this quote is for. pet_fee in price_breakdown is the fee for that many."
      • removedOutput schema / properties / pets / maximum
        Removed value: -4
      • removedOutput schema / properties / pets / minimum
        Removed value: -0
      • changedOutput schema / properties / pets / type
        Previous value: -"integer"New value: +"boolean"
      • removedOutput schema / properties / quote
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / rate_options / items / properties / refundable
        Removed value: -{
        -  "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"
        -}
      • changedOutput schema / properties / rate_options / items / required
        Previous value: -[
        -  "plan",
        -  "refundable",
        -  "stay_total",
        -  "total_due_now",
        -  "cancellation",
        -  "booking_url"
        -]New value: +[
        +  "plan",
        +  "stay_total",
        +  "total_due_now",
        +  "cancellation",
        +  "booking_url"
        +]
    • Changedget_property_details5 fields changed
      • removedOutput schema / properties / accommodation_type
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / bathroom_sharing
        Removed value: -{
        -  "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"
        -}
      • changedOutput schema / properties / policies / properties / pet_fee / description
        Previous value: -"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."New value: +"For a stay with one pet, from the fee table the quote charges from. Null when the home charges none; omitted when it could not be verified, and pet_fee_note says why."
      • changedOutput schema / properties / policies / properties / pet_fee_basis / description
        Previous value: -"How pet_fee applies. Per night multiplies by the nights; per pet by the number of pets; per pet per night by both."New value: +"How pet_fee applies. A per-pet-per-night fee multiplies by the nights."
      • changedOutput schema / properties / policies / properties / pet_fee_basis / enum
        Previous value: -[
        -  "per stay",
        -  "per night",
        -  "per pet",
        -  "per pet per night"
        -]New value: +[
        +  "per stay",
        +  "per pet",
        +  "per pet per night"
        +]
    • Changedlist_markets4 fields changed
      • removedOutput schema / properties / markets / items / properties / area_name
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / markets / items / properties / counts
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / markets / items / properties / homes_in_area
        Removed value: -{
        -  "description": "Stays a search for this market returns before dates, including nearby cities (Chicago: 65 miles around the city). At least homes.",
        -  "type": "integer"
        -}
      • removedOutput schema / properties / markets / items / properties / summary
        Removed value: -{
        -  "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"
        -}
    • Changedsearch_properties45 fields changed
      • removedInput schema / properties / accommodation_type
        Removed value: -{
        -  "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"
        -}
      • changedInput schema / properties / amenities / description
        Previous value: -"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."New value: +"Amenities every returned home has, as recorded by the property manager."
      • removedInput schema / properties / amenities_preferred
        Removed value: -{
        -  "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"
        -}
      • removedInput schema / properties / amenities_required
        Removed value: -{
        -  "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"
        -}
      • removedInput schema / properties / bedrooms_exact
        Removed value: -{
        -  "description": "Exactly this many bedrooms; 0 is a studio. Cannot be sent together with bedrooms_min.",
        -  "maximum": 100,
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedInput schema / properties / budget
        Removed value: -{
        -  "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"
        -}
      • removedInput schema / properties / cursor
        Removed value: -{
        -  "description": "The next_cursor value of the previous response, valid only with the same other inputs. Returns the page after it.",
        -  "type": "string"
        -}
      • changedInput schema / properties / guests / description
        Previous value: -"Everyone staying, including children and infants."New value: +"Number of guests, including children."
      • removedInput schema / properties / page
        Removed value: -{
        -  "description": "Page number, starting at 1, counted in units of page_size. Cannot be sent together with cursor.",
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / page_size
        Removed value: -{
        -  "description": "Results per page, up to 20. Takes the place of limit when both are sent.",
        -  "maximum": 20,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • changedInput schema / properties / pets / description
        Previous value: -"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."New value: +"The guest is bringing a pet. Results are limited to pet-friendly homes, dated totals include the pet fee, and booking links keep the pet selection."
      • removedInput schema / properties / pets / maximum
        Removed value: -4
      • removedInput schema / properties / pets / minimum
        Removed value: -0
      • changedInput schema / properties / pets / type
        Previous value: -[
        -  "integer",
        -  "boolean"
        -]New value: +"boolean"
      • changedInput schema / properties / query / description
        Previous value: -"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."New value: +"Free text place, e.g. 'Tampa', 'near Chicago downtown', a neighbourhood or a landmark."
      • removedInput schema / properties / radius_miles
        Removed value: -{
        -  "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"
        -}
      • changedInput schema / properties / sort / description
        Previous value: -"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."New value: +"total_price_* needs dates and orders by the stay total; from_price_asc orders by starting nightly rate; sleeps_desc puts the largest homes first."
      • removedOutput schema / properties / accommodation_type_unknown
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / amenities_unknown
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / budget_applied
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / budget_unverified
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / budget_unverified_property_ids
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / completeness
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / distance_unknown
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / has_more
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / next_cursor
        Removed value: -{
        -  "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"
        -  ]
        -}
      • removedOutput schema / properties / offset
        Removed value: -{
        -  "description": "How many results precede this page in the full ordering.",
        -  "type": "integer"
        -}
      • removedOutput schema / properties / page_size
        Removed value: -{
        -  "description": "How many results this page asked for.",
        -  "type": "integer"
        -}
      • removedOutput schema / properties / properties / items / properties / accommodation_type
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / properties / items / properties / availability_status
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / properties / items / properties / bathroom_sharing
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / properties / items / properties / content_updated_at
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / properties / items / properties / data_checked_at
        Removed value: -{
        -  "description": "When this home's availability and price were fetched, ISO 8601. Only present on a row whose stay was priced.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / properties / items / properties / distance_miles
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / properties / items / properties / distance_type
        Removed value: -{
        -  "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"
        -}
      • changedOutput schema / properties / properties / items / properties / from_price_note / description
        Previous value: -"Deprecated, no longer returned along with from_price_per_night."New value: +"Only present when from_price_per_night is null: what is and is not visible about this home's calendar. A null starting rate means neither that the home is booked out nor that it is ready to book."
      • changedOutput schema / properties / properties / items / properties / from_price_per_night / description
        Previous value: -"Deprecated, no longer returned: only a row with a confirmed stay_total carries a price. Kept in this schema so existing clients still validate."New value: +"Starting nightly rate, used to order results. It excludes cleaning, fees and taxes, so it is not the price of any stay. Only present on a row without stay_total. Null means no starting rate is published for this home, not that it is free or cheap; from_price_note says why."
      • removedOutput schema / properties / properties / items / properties / match_reasons
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / properties / items / properties / missing_or_unverified
        Removed value: -{
        -  "description": "Facts about this home that could not be verified, drawn from: pet policy, amenities, accommodation type.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • changedOutput schema / properties / properties / items / required
        Previous value: -[
        -  "property_id",
        -  "name",
        -  "city",
        -  "top_amenities",
        -  "review_count",
        -  "review_sources",
        -  "highlights",
        -  "booking_url",
        -  "match_reasons",
        -  "availability_status",
        -  "missing_or_unverified"
        -]New value: +[
        +  "property_id",
        +  "name",
        +  "city",
        +  "top_amenities",
        +  "review_count",
        +  "review_sources",
        +  "highlights",
        +  "booking_url"
        +]
      • removedOutput schema / properties / search_scope
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / status
        Removed value: -{
        -  "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"
        -}
      • changedOutput schema / properties / unpriced_in_time / description
        Previous value: -"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."New value: +"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."
      • removedOutput schema / properties / unpriced_property_ids
        Removed value: -{
        -  "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"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "matches",
        -  "total_matching",
        -  "total_matching_groups",
        -  "unpriced_in_time",
        -  "unpriced_property_ids",
        -  "dates_checked",
        -  "availability_note",
        -  "properties",
        -  "completeness",
        -  "search_scope",
        -  "has_more",
        -  "next_cursor"
        -]New value: +[
        +  "matches",
        +  "total_matching",
        +  "total_matching_groups",
        +  "unpriced_in_time",
        +  "dates_checked",
        +  "availability_note",
        +  "properties"
        +]
  7. 6 tool updates
    • Changedcompare_properties11 fields changed
      • changedInput schema / properties / guests / description
        Previous value: -"Number of guests."New value: +"Everyone staying, including children and infants."
      • changedInput schema / properties / pets / description
        Previous value: -"Whether the guest is bringing a pet."New value: +"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."
      • addedInput schema / properties / pets / maximum
        Added value: +4
      • addedInput schema / properties / pets / minimum
        Added value: +0
      • changedInput schema / properties / pets / type
        Previous value: -"boolean"New value: +[
        +  "integer",
        +  "boolean"
        +]
      • addedOutput schema / properties / homes / items / properties / accommodation_type
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / homes / items / properties / bathroom_sharing
        Added value: +{
        +  "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"
        +}
      • changedOutput schema / properties / homes / items / properties / from_price_note / description
        Previous value: -"Only present when from_price_per_night is null: what is and is not visible about this home's calendar. A null starting rate means neither that the home is booked out nor that it is ready to book."New value: +"Deprecated, no longer returned along with from_price_per_night."
      • changedOutput schema / properties / homes / items / properties / from_price_per_night / description
        Previous value: -"Starting nightly rate. It excludes cleaning, fees and taxes, so it is not the price of any stay. Only present on a row without stay_total. Null means no starting rate is published for this home, not that it is free; from_price_note says why."New value: +"Deprecated, no longer returned: only a row with a confirmed stay_total carries a price. Kept in this schema so existing clients still validate."
      • changedOutput schema / properties / homes / items / properties / pet_fee / description
        Previous value: -"For a stay with one pet, from the fee table the quote charges from. Null when the home charges none; omitted when it could not be verified, and pet_fee_note says why."New value: +"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."
      • changedOutput schema / properties / homes / items / properties / pet_fee_basis / enum
        Previous value: -[
        -  "per stay",
        -  "per pet",
        -  "per pet per night"
        -]New value: +[
        +  "per stay",
        +  "per night",
        +  "per pet",
        +  "per pet per night"
        +]
    • Addedget_booking_link
    • Changedget_live_quote13 fields changed
      • changedInput schema / properties / guests / description
        Previous value: -"Number of guests."New value: +"Everyone staying, including children and infants."
      • changedInput schema / properties / pets / description
        Previous value: -"Whether the guest is bringing a pet; this changes the price."New value: +"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."
      • addedInput schema / properties / pets / maximum
        Added value: +4
      • addedInput schema / properties / pets / minimum
        Added value: +0
      • changedInput schema / properties / pets / type
        Previous value: -"boolean"New value: +[
        +  "integer",
        +  "boolean"
        +]
      • changedOutput schema / description
        Previous value: -"A live total for one stay. When available is false only property_id, available, reason and booking_url are present."New value: +"A live total for one stay. When available is false only property_id, available, reason, booking_url and a short quote block are present."
      • addedOutput schema / properties / pets / description
        Added value: +"How many pets this quote is for. pet_fee in price_breakdown is the fee for that many."
      • addedOutput schema / properties / pets / maximum
        Added value: +4
      • addedOutput schema / properties / pets / minimum
        Added value: +0
      • changedOutput schema / properties / pets / type
        Previous value: -"boolean"New value: +"integer"
      • addedOutput schema / properties / quote
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / rate_options / items / properties / refundable
        Added value: +{
        +  "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"
        +}
      • changedOutput schema / properties / rate_options / items / required
        Previous value: -[
        -  "plan",
        -  "stay_total",
        -  "total_due_now",
        -  "cancellation",
        -  "booking_url"
        -]New value: +[
        +  "plan",
        +  "refundable",
        +  "stay_total",
        +  "total_due_now",
        +  "cancellation",
        +  "booking_url"
        +]
    • Changedget_property_details5 fields changed
      • addedOutput schema / properties / accommodation_type
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / bathroom_sharing
        Added value: +{
        +  "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"
        +}
      • changedOutput schema / properties / policies / properties / pet_fee / description
        Previous value: -"For a stay with one pet, from the fee table the quote charges from. Null when the home charges none; omitted when it could not be verified, and pet_fee_note says why."New value: +"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."
      • changedOutput schema / properties / policies / properties / pet_fee_basis / description
        Previous value: -"How pet_fee applies. A per-pet-per-night fee multiplies by the nights."New value: +"How pet_fee applies. Per night multiplies by the nights; per pet by the number of pets; per pet per night by both."
      • changedOutput schema / properties / policies / properties / pet_fee_basis / enum
        Previous value: -[
        -  "per stay",
        -  "per pet",
        -  "per pet per night"
        -]New value: +[
        +  "per stay",
        +  "per night",
        +  "per pet",
        +  "per pet per night"
        +]
    • Changedlist_markets4 fields changed
      • addedOutput schema / properties / markets / items / properties / area_name
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / markets / items / properties / counts
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / markets / items / properties / homes_in_area
        Added value: +{
        +  "description": "Stays a search for this market returns before dates, including nearby cities (Chicago: 65 miles around the city). At least homes.",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / markets / items / properties / summary
        Added value: +{
        +  "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"
        +}
    • Changedsearch_properties45 fields changed
      • addedInput schema / properties / accommodation_type
        Added value: +{
        +  "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"
        +}
      • changedInput schema / properties / amenities / description
        Previous value: -"Amenities every returned home has, as recorded by the property manager."New value: +"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."
      • addedInput schema / properties / amenities_preferred
        Added value: +{
        +  "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"
        +}
      • addedInput schema / properties / amenities_required
        Added value: +{
        +  "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"
        +}
      • addedInput schema / properties / bedrooms_exact
        Added value: +{
        +  "description": "Exactly this many bedrooms; 0 is a studio. Cannot be sent together with bedrooms_min.",
        +  "maximum": 100,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / budget
        Added value: +{
        +  "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"
        +}
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "The next_cursor value of the previous response, valid only with the same other inputs. Returns the page after it.",
        +  "type": "string"
        +}
      • changedInput schema / properties / guests / description
        Previous value: -"Number of guests, including children."New value: +"Everyone staying, including children and infants."
      • addedInput schema / properties / page
        Added value: +{
        +  "description": "Page number, starting at 1, counted in units of page_size. Cannot be sent together with cursor.",
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / page_size
        Added value: +{
        +  "description": "Results per page, up to 20. Takes the place of limit when both are sent.",
        +  "maximum": 20,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedInput schema / properties / pets / description
        Previous value: -"The guest is bringing a pet. Results are limited to pet-friendly homes, dated totals include the pet fee, and booking links keep the pet selection."New value: +"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."
      • addedInput schema / properties / pets / maximum
        Added value: +4
      • addedInput schema / properties / pets / minimum
        Added value: +0
      • changedInput schema / properties / pets / type
        Previous value: -"boolean"New value: +[
        +  "integer",
        +  "boolean"
        +]
      • changedInput schema / properties / query / description
        Previous value: -"Free text place, e.g. 'Tampa', 'near Chicago downtown', a neighbourhood or a landmark."New value: +"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."
      • addedInput schema / properties / radius_miles
        Added value: +{
        +  "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"
        +}
      • changedInput schema / properties / sort / description
        Previous value: -"total_price_* needs dates and orders by the stay total; from_price_asc orders by starting nightly rate; sleeps_desc puts the largest homes first."New value: +"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."
      • addedOutput schema / properties / accommodation_type_unknown
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / amenities_unknown
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / budget_applied
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / budget_unverified
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / budget_unverified_property_ids
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / completeness
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / distance_unknown
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / has_more
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / next_cursor
        Added value: +{
        +  "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"
        +  ]
        +}
      • addedOutput schema / properties / offset
        Added value: +{
        +  "description": "How many results precede this page in the full ordering.",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / page_size
        Added value: +{
        +  "description": "How many results this page asked for.",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / properties / items / properties / accommodation_type
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / properties / items / properties / availability_status
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / properties / items / properties / bathroom_sharing
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / properties / items / properties / content_updated_at
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / properties / items / properties / data_checked_at
        Added value: +{
        +  "description": "When this home's availability and price were fetched, ISO 8601. Only present on a row whose stay was priced.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / properties / items / properties / distance_miles
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / properties / items / properties / distance_type
        Added value: +{
        +  "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"
        +}
      • changedOutput schema / properties / properties / items / properties / from_price_note / description
        Previous value: -"Only present when from_price_per_night is null: what is and is not visible about this home's calendar. A null starting rate means neither that the home is booked out nor that it is ready to book."New value: +"Deprecated, no longer returned along with from_price_per_night."
      • changedOutput schema / properties / properties / items / properties / from_price_per_night / description
        Previous value: -"Starting nightly rate, used to order results. It excludes cleaning, fees and taxes, so it is not the price of any stay. Only present on a row without stay_total. Null means no starting rate is published for this home, not that it is free or cheap; from_price_note says why."New value: +"Deprecated, no longer returned: only a row with a confirmed stay_total carries a price. Kept in this schema so existing clients still validate."
      • addedOutput schema / properties / properties / items / properties / match_reasons
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / properties / items / properties / missing_or_unverified
        Added value: +{
        +  "description": "Facts about this home that could not be verified, drawn from: pet policy, amenities, accommodation type.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / properties / items / required
        Previous value: -[
        -  "property_id",
        -  "name",
        -  "city",
        -  "top_amenities",
        -  "review_count",
        -  "review_sources",
        -  "highlights",
        -  "booking_url"
        -]New value: +[
        +  "property_id",
        +  "name",
        +  "city",
        +  "top_amenities",
        +  "review_count",
        +  "review_sources",
        +  "highlights",
        +  "booking_url",
        +  "match_reasons",
        +  "availability_status",
        +  "missing_or_unverified"
        +]
      • addedOutput schema / properties / search_scope
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / status
        Added value: +{
        +  "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"
        +}
      • changedOutput schema / properties / unpriced_in_time / description
        Previous value: -"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."New value: +"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."
      • addedOutput schema / properties / unpriced_property_ids
        Added value: +{
        +  "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"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "matches",
        -  "total_matching",
        -  "total_matching_groups",
        -  "unpriced_in_time",
        -  "dates_checked",
        -  "availability_note",
        -  "properties"
        -]New value: +[
        +  "matches",
        +  "total_matching",
        +  "total_matching_groups",
        +  "unpriced_in_time",
        +  "unpriced_property_ids",
        +  "dates_checked",
        +  "availability_note",
        +  "properties",
        +  "completeness",
        +  "search_scope",
        +  "has_more",
        +  "next_cursor"
        +]
  8. 6 tool updates
    • Changedcompare_properties11 fields changed
      • changedInput schema / properties / guests / description
        Previous value: -"Everyone staying, including children and infants."New value: +"Number of guests."
      • changedInput schema / properties / pets / description
        Previous value: -"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."New value: +"Whether the guest is bringing a pet."
      • removedInput schema / properties / pets / maximum
        Removed value: -4
      • removedInput schema / properties / pets / minimum
        Removed value: -0
      • changedInput schema / properties / pets / type
        Previous value: -[
        -  "integer",
        -  "boolean"
        -]New value: +"boolean"
      • removedOutput schema / properties / homes / items / properties / accommodation_type
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / homes / items / properties / bathroom_sharing
        Removed value: -{
        -  "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"
        -}
      • changedOutput schema / properties / homes / items / properties / from_price_note / description
        Previous value: -"Deprecated, no longer returned along with from_price_per_night."New value: +"Only present when from_price_per_night is null: what is and is not visible about this home's calendar. A null starting rate means neither that the home is booked out nor that it is ready to book."
      • changedOutput schema / properties / homes / items / properties / from_price_per_night / description
        Previous value: -"Deprecated, no longer returned: only a row with a confirmed stay_total carries a price. Kept in this schema so existing clients still validate."New value: +"Starting nightly rate. It excludes cleaning, fees and taxes, so it is not the price of any stay. Only present on a row without stay_total. Null means no starting rate is published for this home, not that it is free; from_price_note says why."
      • changedOutput schema / properties / homes / items / properties / pet_fee / description
        Previous value: -"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."New value: +"For a stay with one pet, from the fee table the quote charges from. Null when the home charges none; omitted when it could not be verified, and pet_fee_note says why."
      • changedOutput schema / properties / homes / items / properties / pet_fee_basis / enum
        Previous value: -[
        -  "per stay",
        -  "per night",
        -  "per pet",
        -  "per pet per night"
        -]New value: +[
        +  "per stay",
        +  "per pet",
        +  "per pet per night"
        +]
    • Removedget_booking_link
    • Changedget_live_quote13 fields changed
      • changedInput schema / properties / guests / description
        Previous value: -"Everyone staying, including children and infants."New value: +"Number of guests."
      • changedInput schema / properties / pets / description
        Previous value: -"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."New value: +"Whether the guest is bringing a pet; this changes the price."
      • removedInput schema / properties / pets / maximum
        Removed value: -4
      • removedInput schema / properties / pets / minimum
        Removed value: -0
      • changedInput schema / properties / pets / type
        Previous value: -[
        -  "integer",
        -  "boolean"
        -]New value: +"boolean"
      • changedOutput schema / description
        Previous value: -"A live total for one stay. When available is false only property_id, available, reason, booking_url and a short quote block are present."New value: +"A live total for one stay. When available is false only property_id, available, reason and booking_url are present."
      • removedOutput schema / properties / pets / description
        Removed value: -"How many pets this quote is for. pet_fee in price_breakdown is the fee for that many."
      • removedOutput schema / properties / pets / maximum
        Removed value: -4
      • removedOutput schema / properties / pets / minimum
        Removed value: -0
      • changedOutput schema / properties / pets / type
        Previous value: -"integer"New value: +"boolean"
      • removedOutput schema / properties / quote
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / rate_options / items / properties / refundable
        Removed value: -{
        -  "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"
        -}
      • changedOutput schema / properties / rate_options / items / required
        Previous value: -[
        -  "plan",
        -  "refundable",
        -  "stay_total",
        -  "total_due_now",
        -  "cancellation",
        -  "booking_url"
        -]New value: +[
        +  "plan",
        +  "stay_total",
        +  "total_due_now",
        +  "cancellation",
        +  "booking_url"
        +]
    • Changedget_property_details5 fields changed
      • removedOutput schema / properties / accommodation_type
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / bathroom_sharing
        Removed value: -{
        -  "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"
        -}
      • changedOutput schema / properties / policies / properties / pet_fee / description
        Previous value: -"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."New value: +"For a stay with one pet, from the fee table the quote charges from. Null when the home charges none; omitted when it could not be verified, and pet_fee_note says why."
      • changedOutput schema / properties / policies / properties / pet_fee_basis / description
        Previous value: -"How pet_fee applies. Per night multiplies by the nights; per pet by the number of pets; per pet per night by both."New value: +"How pet_fee applies. A per-pet-per-night fee multiplies by the nights."
      • changedOutput schema / properties / policies / properties / pet_fee_basis / enum
        Previous value: -[
        -  "per stay",
        -  "per night",
        -  "per pet",
        -  "per pet per night"
        -]New value: +[
        +  "per stay",
        +  "per pet",
        +  "per pet per night"
        +]
    • Changedlist_markets4 fields changed
      • removedOutput schema / properties / markets / items / properties / area_name
        Removed value: -{
        -  "type": "string"
        -}
      • removedOutput schema / properties / markets / items / properties / counts
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / markets / items / properties / homes_in_area
        Removed value: -{
        -  "description": "Stays a search for this market returns before dates, including nearby cities (Chicago: 65 miles around the city). At least homes.",
        -  "type": "integer"
        -}
      • removedOutput schema / properties / markets / items / properties / summary
        Removed value: -{
        -  "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"
        -}
    • Changedsearch_properties45 fields changed
      • removedInput schema / properties / accommodation_type
        Removed value: -{
        -  "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"
        -}
      • changedInput schema / properties / amenities / description
        Previous value: -"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."New value: +"Amenities every returned home has, as recorded by the property manager."
      • removedInput schema / properties / amenities_preferred
        Removed value: -{
        -  "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"
        -}
      • removedInput schema / properties / amenities_required
        Removed value: -{
        -  "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"
        -}
      • removedInput schema / properties / bedrooms_exact
        Removed value: -{
        -  "description": "Exactly this many bedrooms; 0 is a studio. Cannot be sent together with bedrooms_min.",
        -  "maximum": 100,
        -  "minimum": 0,
        -  "type": "integer"
        -}
      • removedInput schema / properties / budget
        Removed value: -{
        -  "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"
        -}
      • removedInput schema / properties / cursor
        Removed value: -{
        -  "description": "The next_cursor value of the previous response, valid only with the same other inputs. Returns the page after it.",
        -  "type": "string"
        -}
      • changedInput schema / properties / guests / description
        Previous value: -"Everyone staying, including children and infants."New value: +"Number of guests, including children."
      • removedInput schema / properties / page
        Removed value: -{
        -  "description": "Page number, starting at 1, counted in units of page_size. Cannot be sent together with cursor.",
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • removedInput schema / properties / page_size
        Removed value: -{
        -  "description": "Results per page, up to 20. Takes the place of limit when both are sent.",
        -  "maximum": 20,
        -  "minimum": 1,
        -  "type": "integer"
        -}
      • changedInput schema / properties / pets / description
        Previous value: -"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."New value: +"The guest is bringing a pet. Results are limited to pet-friendly homes, dated totals include the pet fee, and booking links keep the pet selection."
      • removedInput schema / properties / pets / maximum
        Removed value: -4
      • removedInput schema / properties / pets / minimum
        Removed value: -0
      • changedInput schema / properties / pets / type
        Previous value: -[
        -  "integer",
        -  "boolean"
        -]New value: +"boolean"
      • changedInput schema / properties / query / description
        Previous value: -"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."New value: +"Free text place, e.g. 'Tampa', 'near Chicago downtown', a neighbourhood or a landmark."
      • removedInput schema / properties / radius_miles
        Removed value: -{
        -  "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"
        -}
      • changedInput schema / properties / sort / description
        Previous value: -"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."New value: +"total_price_* needs dates and orders by the stay total; from_price_asc orders by starting nightly rate; sleeps_desc puts the largest homes first."
      • removedOutput schema / properties / accommodation_type_unknown
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / amenities_unknown
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / budget_applied
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / budget_unverified
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / budget_unverified_property_ids
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / completeness
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / distance_unknown
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / has_more
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / next_cursor
        Removed value: -{
        -  "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"
        -  ]
        -}
      • removedOutput schema / properties / offset
        Removed value: -{
        -  "description": "How many results precede this page in the full ordering.",
        -  "type": "integer"
        -}
      • removedOutput schema / properties / page_size
        Removed value: -{
        -  "description": "How many results this page asked for.",
        -  "type": "integer"
        -}
      • removedOutput schema / properties / properties / items / properties / accommodation_type
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / properties / items / properties / availability_status
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / properties / items / properties / bathroom_sharing
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / properties / items / properties / content_updated_at
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / properties / items / properties / data_checked_at
        Removed value: -{
        -  "description": "When this home's availability and price were fetched, ISO 8601. Only present on a row whose stay was priced.",
        -  "type": "string"
        -}
      • removedOutput schema / properties / properties / items / properties / distance_miles
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / properties / items / properties / distance_type
        Removed value: -{
        -  "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"
        -}
      • changedOutput schema / properties / properties / items / properties / from_price_note / description
        Previous value: -"Deprecated, no longer returned along with from_price_per_night."New value: +"Only present when from_price_per_night is null: what is and is not visible about this home's calendar. A null starting rate means neither that the home is booked out nor that it is ready to book."
      • changedOutput schema / properties / properties / items / properties / from_price_per_night / description
        Previous value: -"Deprecated, no longer returned: only a row with a confirmed stay_total carries a price. Kept in this schema so existing clients still validate."New value: +"Starting nightly rate, used to order results. It excludes cleaning, fees and taxes, so it is not the price of any stay. Only present on a row without stay_total. Null means no starting rate is published for this home, not that it is free or cheap; from_price_note says why."
      • removedOutput schema / properties / properties / items / properties / match_reasons
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / properties / items / properties / missing_or_unverified
        Removed value: -{
        -  "description": "Facts about this home that could not be verified, drawn from: pet policy, amenities, accommodation type.",
        -  "items": {
        -    "type": "string"
        -  },
        -  "type": "array"
        -}
      • changedOutput schema / properties / properties / items / required
        Previous value: -[
        -  "property_id",
        -  "name",
        -  "city",
        -  "top_amenities",
        -  "review_count",
        -  "review_sources",
        -  "highlights",
        -  "booking_url",
        -  "match_reasons",
        -  "availability_status",
        -  "missing_or_unverified"
        -]New value: +[
        +  "property_id",
        +  "name",
        +  "city",
        +  "top_amenities",
        +  "review_count",
        +  "review_sources",
        +  "highlights",
        +  "booking_url"
        +]
      • removedOutput schema / properties / search_scope
        Removed value: -{
        -  "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"
        -}
      • removedOutput schema / properties / status
        Removed value: -{
        -  "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"
        -}
      • changedOutput schema / properties / unpriced_in_time / description
        Previous value: -"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."New value: +"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."
      • removedOutput schema / properties / unpriced_property_ids
        Removed value: -{
        -  "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"
        -}
      • changedOutput schema / required
        Previous value: -[
        -  "matches",
        -  "total_matching",
        -  "total_matching_groups",
        -  "unpriced_in_time",
        -  "unpriced_property_ids",
        -  "dates_checked",
        -  "availability_note",
        -  "properties",
        -  "completeness",
        -  "search_scope",
        -  "has_more",
        -  "next_cursor"
        -]New value: +[
        +  "matches",
        +  "total_matching",
        +  "total_matching_groups",
        +  "unpriced_in_time",
        +  "dates_checked",
        +  "availability_note",
        +  "properties"
        +]
  9. 1 tool update
    • Changedget_live_quote3 fields changed
      • addedOutput schema / properties / quote / properties / refundable
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / rate_options / items / properties / refundable
        Added value: +{
        +  "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"
        +}
      • changedOutput schema / properties / rate_options / items / required
        Previous value: -[
        -  "plan",
        -  "stay_total",
        -  "total_due_now",
        -  "cancellation",
        -  "booking_url"
        -]New value: +[
        +  "plan",
        +  "refundable",
        +  "stay_total",
        +  "total_due_now",
        +  "cancellation",
        +  "booking_url"
        +]
  10. 1 tool update
    • Changedsearch_properties10 fields changed
      • changedInput schema / properties / query / description
        Previous value: -"Free text place, e.g. 'Tampa', 'near Chicago downtown', a neighbourhood or a landmark."New value: +"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."
      • addedInput schema / properties / radius_miles
        Added value: +{
        +  "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"
        +}
      • changedOutput schema / properties / completeness / description
        Previous value: -"complete: no matching home is unpriced, and none was left out for an unknown pet policy, accommodation type, amenity data or starting rate. partial: at least one is, so the results may omit a home that matches."New value: +"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."
      • addedOutput schema / properties / distance_unknown
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / properties / items / properties / distance_miles
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / properties / items / properties / distance_type
        Added value: +{
        +  "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"
        +}
      • changedOutput schema / properties / properties / items / properties / match_reasons / description
        Previous value: -"Short statements of why this home passed the filters that were sent, e.g. \"2 bedrooms (exact)\" or \"has parking\". Empty when no filter was sent."New value: +"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."
      • changedOutput schema / properties / search_scope / properties / radius_miles / description
        Previous value: -"Only present for a metro: how far from its centre homes are included."New value: +"How far from its centre or point homes are included; given for a metro, landmark or area."
      • changedOutput schema / properties / search_scope / properties / type / description
        Previous value: -"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."New value: +"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."
      • changedOutput schema / properties / search_scope / properties / type / enum
        Previous value: -[
        -  "all_homes",
        -  "metro",
        -  "state",
        -  "city",
        -  "nearby_or_text"
        -]New value: +[
        +  "all_homes",
        +  "metro",
        +  "state",
        +  "city",
        +  "nearby_or_text",
        +  "landmark",
        +  "area"
        +]
  11. 2 tool updates
    • Addedget_booking_link
    • Changedsearch_properties28 fields changed
      • addedInput schema / properties / accommodation_type
        Added value: +{
        +  "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"
        +}
      • changedInput schema / properties / amenities / description
        Previous value: -"Amenities every returned home has, as recorded by the property manager."New value: +"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."
      • addedInput schema / properties / amenities_preferred
        Added value: +{
        +  "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"
        +}
      • addedInput schema / properties / amenities_required
        Added value: +{
        +  "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"
        +}
      • addedInput schema / properties / bedrooms_exact
        Added value: +{
        +  "description": "Exactly this many bedrooms; 0 is a studio. Cannot be sent together with bedrooms_min.",
        +  "maximum": 100,
        +  "minimum": 0,
        +  "type": "integer"
        +}
      • addedInput schema / properties / budget
        Added value: +{
        +  "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"
        +}
      • addedInput schema / properties / cursor
        Added value: +{
        +  "description": "The next_cursor value of the previous response, valid only with the same other inputs. Returns the page after it.",
        +  "type": "string"
        +}
      • addedInput schema / properties / page
        Added value: +{
        +  "description": "Page number, starting at 1, counted in units of page_size. Cannot be sent together with cursor.",
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedInput schema / properties / page_size
        Added value: +{
        +  "description": "Results per page, up to 20. Takes the place of limit when both are sent.",
        +  "maximum": 20,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • addedOutput schema / properties / accommodation_type_unknown
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / amenities_unknown
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / budget_applied
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / budget_unverified
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / budget_unverified_property_ids
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / completeness
        Added value: +{
        +  "description": "complete: no matching home is unpriced, and none was left out for an unknown pet policy, accommodation type, amenity data or starting rate. partial: at least one is, so the results may omit a home that matches.",
        +  "enum": [
        +    "complete",
        +    "partial"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / has_more
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / next_cursor
        Added value: +{
        +  "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"
        +  ]
        +}
      • addedOutput schema / properties / offset
        Added value: +{
        +  "description": "How many results precede this page in the full ordering.",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / page_size
        Added value: +{
        +  "description": "How many results this page asked for.",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / properties / items / properties / availability_status
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / properties / items / properties / content_updated_at
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / properties / items / properties / data_checked_at
        Added value: +{
        +  "description": "When this home's availability and price were fetched, ISO 8601. Only present on a row whose stay was priced.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / properties / items / properties / match_reasons
        Added value: +{
        +  "description": "Short statements of why this home passed the filters that were sent, e.g. \"2 bedrooms (exact)\" or \"has parking\". Empty when no filter was sent.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / properties / items / properties / missing_or_unverified
        Added value: +{
        +  "description": "Facts about this home that could not be verified, drawn from: pet policy, amenities, accommodation type.",
        +  "items": {
        +    "type": "string"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / properties / items / required
        Previous value: -[
        -  "property_id",
        -  "name",
        -  "city",
        -  "top_amenities",
        -  "review_count",
        -  "review_sources",
        -  "highlights",
        -  "booking_url"
        -]New value: +[
        +  "property_id",
        +  "name",
        +  "city",
        +  "top_amenities",
        +  "review_count",
        +  "review_sources",
        +  "highlights",
        +  "booking_url",
        +  "match_reasons",
        +  "availability_status",
        +  "missing_or_unverified"
        +]
      • addedOutput schema / properties / search_scope
        Added value: +{
        +  "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": "Only present for a metro: how far from its centre homes are included.",
        +      "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.",
        +      "enum": [
        +        "all_homes",
        +        "metro",
        +        "state",
        +        "city",
        +        "nearby_or_text"
        +      ],
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "place",
        +    "type"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / unpriced_in_time / description
        Previous value: -"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."New value: +"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."
      • changedOutput schema / required
        Previous value: -[
        -  "matches",
        -  "total_matching",
        -  "total_matching_groups",
        -  "unpriced_in_time",
        -  "unpriced_property_ids",
        -  "dates_checked",
        -  "availability_note",
        -  "properties"
        -]New value: +[
        +  "matches",
        +  "total_matching",
        +  "total_matching_groups",
        +  "unpriced_in_time",
        +  "unpriced_property_ids",
        +  "dates_checked",
        +  "availability_note",
        +  "properties",
        +  "completeness",
        +  "search_scope",
        +  "has_more",
        +  "next_cursor"
        +]
  12. 3 tool updates
    • Changedcompare_properties1 field changed
      • changedInput schema / properties / guests / description
        Previous value: -"Number of guests."New value: +"Everyone staying, including children and infants."
    • Changedget_live_quote3 fields changed
      • changedInput schema / properties / guests / description
        Previous value: -"Number of guests."New value: +"Everyone staying, including children and infants."
      • changedOutput schema / description
        Previous value: -"A live total for one stay. When available is false only property_id, available, reason and booking_url are present."New value: +"A live total for one stay. When available is false only property_id, available, reason, booking_url and a short quote block are present."
      • addedOutput schema / properties / quote
        Added value: +{
        +  "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_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"
        +}
    • Changedsearch_properties2 fields changed
      • changedInput schema / properties / guests / description
        Previous value: -"Number of guests, including children."New value: +"Everyone staying, including children and infants."
      • addedOutput schema / properties / status
        Added value: +{
        +  "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"
        +}
  13. 4 tool updates
    • Changedcompare_properties6 fields changed
      • changedInput schema / properties / pets / description
        Previous value: -"Whether the guest is bringing a pet."New value: +"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."
      • addedInput schema / properties / pets / maximum
        Added value: +4
      • addedInput schema / properties / pets / minimum
        Added value: +0
      • changedInput schema / properties / pets / type
        Previous value: -"boolean"New value: +[
        +  "integer",
        +  "boolean"
        +]
      • changedOutput schema / properties / homes / items / properties / pet_fee / description
        Previous value: -"For a stay with one pet, from the fee table the quote charges from. Null when the home charges none; omitted when it could not be verified, and pet_fee_note says why."New value: +"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."
      • changedOutput schema / properties / homes / items / properties / pet_fee_basis / enum
        Previous value: -[
        -  "per stay",
        -  "per pet",
        -  "per pet per night"
        -]New value: +[
        +  "per stay",
        +  "per night",
        +  "per pet",
        +  "per pet per night"
        +]
    • Changedget_live_quote8 fields changed
      • changedInput schema / properties / pets / description
        Previous value: -"Whether the guest is bringing a pet; this changes the price."New value: +"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."
      • addedInput schema / properties / pets / maximum
        Added value: +4
      • addedInput schema / properties / pets / minimum
        Added value: +0
      • changedInput schema / properties / pets / type
        Previous value: -"boolean"New value: +[
        +  "integer",
        +  "boolean"
        +]
      • addedOutput schema / properties / pets / description
        Added value: +"How many pets this quote is for. pet_fee in price_breakdown is the fee for that many."
      • addedOutput schema / properties / pets / maximum
        Added value: +4
      • addedOutput schema / properties / pets / minimum
        Added value: +0
      • changedOutput schema / properties / pets / type
        Previous value: -"boolean"New value: +"integer"
    • Changedget_property_details3 fields changed
      • changedOutput schema / properties / policies / properties / pet_fee / description
        Previous value: -"For a stay with one pet, from the fee table the quote charges from. Null when the home charges none; omitted when it could not be verified, and pet_fee_note says why."New value: +"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."
      • changedOutput schema / properties / policies / properties / pet_fee_basis / description
        Previous value: -"How pet_fee applies. A per-pet-per-night fee multiplies by the nights."New value: +"How pet_fee applies. Per night multiplies by the nights; per pet by the number of pets; per pet per night by both."
      • changedOutput schema / properties / policies / properties / pet_fee_basis / enum
        Previous value: -[
        -  "per stay",
        -  "per pet",
        -  "per pet per night"
        -]New value: +[
        +  "per stay",
        +  "per night",
        +  "per pet",
        +  "per pet per night"
        +]
    • Changedsearch_properties4 fields changed
      • changedInput schema / properties / pets / description
        Previous value: -"The guest is bringing a pet. Results are limited to pet-friendly homes, dated totals include the pet fee, and booking links keep the pet selection."New value: +"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."
      • addedInput schema / properties / pets / maximum
        Added value: +4
      • addedInput schema / properties / pets / minimum
        Added value: +0
      • changedInput schema / properties / pets / type
        Previous value: -"boolean"New value: +[
        +  "integer",
        +  "boolean"
        +]
  14. 1 tool update
    • Changedsearch_properties2 fields changed
      • addedOutput schema / properties / unpriced_property_ids
        Added value: +{
        +  "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"
        +}
      • changedOutput schema / required
        Previous value: -[
        -  "matches",
        -  "total_matching",
        -  "total_matching_groups",
        -  "unpriced_in_time",
        -  "dates_checked",
        -  "availability_note",
        -  "properties"
        -]New value: +[
        +  "matches",
        +  "total_matching",
        +  "total_matching_groups",
        +  "unpriced_in_time",
        +  "unpriced_property_ids",
        +  "dates_checked",
        +  "availability_note",
        +  "properties"
        +]
  15. 4 tool updates
    • Changedcompare_properties4 fields changed
      • addedOutput schema / properties / homes / items / properties / accommodation_type
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / homes / items / properties / bathroom_sharing
        Added value: +{
        +  "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"
        +}
      • changedOutput schema / properties / homes / items / properties / from_price_note / description
        Previous value: -"Only present when from_price_per_night is null: what is and is not visible about this home's calendar. A null starting rate means neither that the home is booked out nor that it is ready to book."New value: +"Deprecated, no longer returned along with from_price_per_night."
      • changedOutput schema / properties / homes / items / properties / from_price_per_night / description
        Previous value: -"Starting nightly rate. It excludes cleaning, fees and taxes, so it is not the price of any stay. Only present on a row without stay_total. Null means no starting rate is published for this home, not that it is free; from_price_note says why."New value: +"Deprecated, no longer returned: only a row with a confirmed stay_total carries a price. Kept in this schema so existing clients still validate."
    • Changedget_property_details2 fields changed
      • addedOutput schema / properties / accommodation_type
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / bathroom_sharing
        Added value: +{
        +  "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"
        +}
    • Changedlist_markets4 fields changed
      • addedOutput schema / properties / markets / items / properties / area_name
        Added value: +{
        +  "type": "string"
        +}
      • addedOutput schema / properties / markets / items / properties / counts
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / markets / items / properties / homes_in_area
        Added value: +{
        +  "description": "Stays a search for this market returns before dates, including nearby cities (Chicago: 65 miles around the city). At least homes.",
        +  "type": "integer"
        +}
      • addedOutput schema / properties / markets / items / properties / summary
        Added value: +{
        +  "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"
        +}
    • Changedsearch_properties5 fields changed
      • changedInput schema / properties / sort / description
        Previous value: -"total_price_* needs dates and orders by the stay total; from_price_asc orders by starting nightly rate; sleeps_desc puts the largest homes first."New value: +"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."
      • addedOutput schema / properties / properties / items / properties / accommodation_type
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / properties / items / properties / bathroom_sharing
        Added value: +{
        +  "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"
        +}
      • changedOutput schema / properties / properties / items / properties / from_price_note / description
        Previous value: -"Only present when from_price_per_night is null: what is and is not visible about this home's calendar. A null starting rate means neither that the home is booked out nor that it is ready to book."New value: +"Deprecated, no longer returned along with from_price_per_night."
      • changedOutput schema / properties / properties / items / properties / from_price_per_night / description
        Previous value: -"Starting nightly rate, used to order results. It excludes cleaning, fees and taxes, so it is not the price of any stay. Only present on a row without stay_total. Null means no starting rate is published for this home, not that it is free or cheap; from_price_note says why."New value: +"Deprecated, no longer returned: only a row with a confirmed stay_total carries a price. Kept in this schema so existing clients still validate."
  16. 5 tool updates
    • Changedcompare_properties11 fields changed
      • changedInput schema / properties / check_in / description
        Previous value: -"Check-in date, YYYY-MM-DD. Give both dates to get totals."New value: +"Check-in date, YYYY-MM-DD. Totals are returned only when both dates are given."
      • changedInput schema / properties / guests / maximum
        Previous value: -40New value: +50
      • addedOutput schema / properties / homes / items / properties / avg_per_night / description
        Added value: +"No longer returned; stay_total is the price of the stay."
      • changedOutput schema / properties / homes / items / properties / details_available / description
        Previous value: -"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 -- read detail_note, and call get_property_details for it again."New value: +"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."
      • changedOutput schema / properties / homes / items / properties / from_price_note / description
        Previous value: -"Only present when from_price_per_night is null: what we can and cannot see about this home's calendar. Call get_availability before suggesting dates; do not describe the home as booked out or as ready to book."New value: +"Only present when from_price_per_night is null: what is and is not visible about this home's calendar. A null starting rate means neither that the home is booked out nor that it is ready to book."
      • changedOutput schema / properties / homes / items / properties / from_price_per_night / description
        Previous value: -"Starting nightly rate. Null means no starting rate is published for this home, never that it is free -- read from_price_note."New value: +"Starting nightly rate. It excludes cleaning, fees and taxes, so it is not the price of any stay. Only present on a row without stay_total. Null means no starting rate is published for this home, not that it is free; from_price_note says why."
      • changedOutput schema / properties / homes / items / properties / highlights / description
        Previous value: -"Up to three short phrases an agent can repeat when recommending the home."New value: +"Up to three short phrases describing what sets the home apart."
      • addedOutput schema / properties / homes / items / properties / pet_fee / description
        Added value: +"For a stay with one pet, from the fee table the quote charges from. Null when the home charges none; omitted when it could not be verified, and pet_fee_note says why."
      • addedOutput schema / properties / homes / items / properties / pet_fee_basis
        Added value: +{
        +  "enum": [
        +    "per stay",
        +    "per pet",
        +    "per pet per night"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / homes / items / properties / pet_fee_note
        Added value: +{
        +  "type": "string"
        +}
      • changedOutput schema / properties / homes / items / properties / review_count / description
        Previous value: -"How many 4- and 5-star reviews this home has. Never present this as, or derive, an average rating."New value: +"How many 4- and 5-star reviews this home has. It is a count, not a rating; no average rating exists for any home."
    • Changedget_live_quote11 fields changed
      • changedInput schema / properties / guests / maximum
        Previous value: -40New value: +50
      • changedOutput schema / properties / cancellation / description
        Previous value: -"This home's terms. Never promise a refund beyond what this says."New value: +"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."
      • addedOutput schema / properties / payment_schedule
        Added value: +{
        +  "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"
        +}
      • addedOutput schema / properties / price_breakdown / properties / refundable_rate_premium
        Added value: +{
        +  "description": "The 8% of the nightly subtotal the refundable rate adds; 0 on the non-refundable rate.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / price_breakdown / properties / taxes / description
        Previous value: -"Lodging tax. Always collected and always included in the total."New value: +"Lodging tax. It is collected on every stay and included in the total."
      • changedOutput schema / properties / quote_expires_at / description
        Previous value: -"After this the total must be re-quoted before it is given to a guest."New value: +"When this quote lapses. After it, the price of the stay can differ from stay_total until it is quoted again."
      • addedOutput schema / properties / rate_options
        Added value: +{
        +  "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"
        +      },
        +      "stay_total": {
        +        "type": "number"
        +      },
        +      "total_due_now": {
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "plan",
        +      "stay_total",
        +      "total_due_now",
        +      "cancellation",
        +      "booking_url"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • changedOutput schema / properties / security_deposit_hold / description
        Previous value: -"A refundable hold, not part of total_due_now."New value: +"A refundable hold, not part of stay_total."
      • addedOutput schema / properties / stay_total
        Added value: +{
        +  "description": "The price of the stay, including cleaning, fees and taxes. Nightly rates exclude them.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / total_display / description
        Added value: +"stay_total, formatted."
      • changedOutput schema / properties / total_due_now / description
        Previous value: -"Everything the guest pays at booking, including cleaning, fees and taxes. State this, never the nightly rate alone."New value: +"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."
    • Changedget_property_details5 fields changed
      • changedOutput schema / properties / guest_reviews / properties / reviews / items / properties / source / description
        Previous value: -"The platform the review was left on. Always name it when quoting the review."New value: +"The platform the review was left on."
      • changedOutput schema / properties / location / properties / country / description
        Previous value: -"Null when the provider gave none; never assume one."New value: +"Null when the provider gave none; the country is then unknown."
      • addedOutput schema / properties / policies / properties / pet_fee / description
        Added value: +"For a stay with one pet, from the fee table the quote charges from. Null when the home charges none; omitted when it could not be verified, and pet_fee_note says why."
      • addedOutput schema / properties / policies / properties / pet_fee_basis
        Added value: +{
        +  "description": "How pet_fee applies. A per-pet-per-night fee multiplies by the nights.",
        +  "enum": [
        +    "per stay",
        +    "per pet",
        +    "per pet per night"
        +  ],
        +  "type": "string"
        +}
      • addedOutput schema / properties / policies / properties / pet_fee_note
        Added value: +{
        +  "type": "string"
        +}
    • Changedlist_markets1 field changed
      • changedOutput schema / properties / markets / items / properties / collection_url / description
        Previous value: -"The public page for this market, when it has enough homes to have one. Safe to cite; it lists the homes and their neighbourhoods."New value: +"The public page for this market, when it has enough homes to have one. It lists the homes and their neighbourhoods."
    • Changedsearch_properties13 fields changed
      • changedInput schema / properties / amenities / description
        Previous value: -"Amenities the home must have, as recorded by the property manager."New value: +"Amenities every returned home has, as recorded by the property manager."
      • changedInput schema / properties / check_in / description
        Previous value: -"Check-in date, YYYY-MM-DD. Give both dates to filter by real availability."New value: +"Check-in date, YYYY-MM-DD. Availability is checked only when both dates are given."
      • changedInput schema / properties / guests / maximum
        Previous value: -40New value: +50
      • changedInput schema / properties / max_total / description
        Previous value: -"Budget for the whole stay in dollars, including cleaning, fees and taxes. Only works with dates."New value: +"Budget for the whole stay in dollars, including cleaning, fees and taxes. Applies only when dates are given."
      • changedInput schema / properties / pets / description
        Previous value: -"The guest is bringing a pet. Only return pet-friendly homes, include the pet fee in dated totals, and preserve the pet selection in booking links."New value: +"The guest is bringing a pet. Results are limited to pet-friendly homes, dated totals include the pet fee, and booking links keep the pet selection."
      • changedInput schema / properties / price_all_matches / description
        Previous value: -"Price 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 — check unpriced_in_time. Use it when a guest asks how many homes are free or for the cheapest; leave it off for browsing."New value: +"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."
      • changedOutput schema / properties / dates_checked / description
        Previous value: -"False means availability is unknown and every price is a starting nightly rate."New value: +"False means availability is unknown and no stay has been priced; no row carries a stay_total."
      • changedOutput schema / properties / properties / items / properties / avg_per_night / description
        Previous value: -"stay_total divided by nights. A derived figure; quote the total, not this."New value: +"No longer returned; stay_total is the price of the stay."
      • changedOutput schema / properties / properties / items / properties / from_price_note / description
        Previous value: -"Only present when from_price_per_night is null: what we can and cannot see about this home's calendar. Call get_availability before suggesting dates; do not describe the home as booked out or as ready to book."New value: +"Only present when from_price_per_night is null: what is and is not visible about this home's calendar. A null starting rate means neither that the home is booked out nor that it is ready to book."
      • changedOutput schema / properties / properties / items / properties / from_price_per_night / description
        Previous value: -"Starting nightly rate, not a stay total. Absent dates, this is all that is known. Null means no starting rate is published for this home, never that it is free or cheap -- read from_price_note."New value: +"Starting nightly rate, used to order results. It excludes cleaning, fees and taxes, so it is not the price of any stay. Only present on a row without stay_total. Null means no starting rate is published for this home, not that it is free or cheap; from_price_note says why."
      • changedOutput schema / properties / properties / items / properties / highlights / description
        Previous value: -"Up to three short phrases an agent can repeat when recommending the home."New value: +"Up to three short phrases describing what sets the home apart."
      • changedOutput schema / properties / properties / items / properties / review_count / description
        Previous value: -"How many 4- and 5-star reviews this home has. Never present this as, or derive, an average rating."New value: +"How many 4- and 5-star reviews this home has. It is a count, not a rating; no average rating exists for any home."
      • changedOutput schema / properties / unpriced_in_time / description
        Previous value: -"Matching homes whose availability was never 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 — raise `limit`, narrow the place, or use get_live_quote."New value: +"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."

Related MCP Connectors

Related MCP Servers

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources