EscapeStays by Luxury Lodging
Server Details
Book vacation rentals direct: search homes, check live availability, get a real total.
- Status
- Healthy
- Uptime
- 100.0% over 21 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 7 tools
Several tools overlap: get_live_quote and get_booking_link both validate dates, re-price the stay and return a booking_url, differing mainly in whether the total is returned. get_availability also overlaps with dated search_properties, and compare_properties duplicates pricing already offered by get_live_quote/search_properties. The descriptions are detailed enough to resolve most cases, but an agent could easily misselect among the pricing/link tools.
All seven tools use 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 mixed conventions or vague standalone verbs.
Seven tools is well-scoped for a vacation-rental discovery and booking-link server. Each tool maps to a distinct step (market discovery, search, detail, availability, pricing, comparison, booking handoff) and none feels redundant or trivial.
The surface covers the full discovery-to-booking-redirect flow: markets, search, property detail, availability, quotes, comparison and a signed booking link. Actual reservation/payment, reviews lookup, and any booking-management operations are absent, but these appear intentionally delegated to the Luxury Lodging site.
Available Tools
7 toolscompare_propertiesCompare homes side by sideARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pets | No | 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. | |
| guests | No | Everyone staying, including children and infants. | |
| check_in | No | Check-in date, YYYY-MM-DD. Totals are returned only when both dates are given. | |
| check_out | No | Check-out date, YYYY-MM-DD. | |
| property_ids | Yes | Property ids or slugs from search results or booking links. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| homes | Yes | |
| compared | Yes | |
| dates_checked | Yes |
TDQS
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.
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.
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.
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.
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.
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 calendarARead-onlyIdempotentInspect
Open and blocked nights for one property over a date range of up to 93 days, with its minimum stay. It shows which alternative dates are open; it does not price or confirm a stay.
| Name | Required | Description | Default |
|---|---|---|---|
| end_date | Yes | Last date to check, YYYY-MM-DD. At most 93 days after start_date. | |
| start_date | Yes | First date to check, YYYY-MM-DD. | |
| property_id | Yes | Property id or slug. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| end_date | Yes | |
| open_dates | Yes | YYYY-MM-DD nights that are open. They still have to satisfy minimum stay and arrival rules. |
| start_date | Yes | |
| nights_open | Yes | |
| property_id | Yes | |
| blocked_dates | Yes | |
| minimum_nights | No | |
| nights_blocked | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description need not repeat safety. It adds context that it returns open and blocked nights plus minimum stay, and explicitly says it does not price or confirm, which is useful behavioral context beyond annotations. However, it doesn't mention any rate limits, pagination, or edge cases (e.g., behavior when start_date is after end_date). The bar is lower due to annotations, but it still could disclose more about output granularity.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, front-loaded with the core function and scope, then a clarifying exclusion. No wasted words; every sentence earns its place. The exclusion of pricing/confirmation is particularly valuable for disambiguation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has an output schema (stated in context signals) which likely describes the return structure, so the description need not detail return fields. The description covers the main functional aspects, the date range limit, and what it does not do. It could mention pagination or the exact representation of 'blocked nights', but given the output schema and annotations, this is reasonably complete for an agent to invoke correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so all three parameters are fully described in the schema with types and constraints (e.g., date format, 93-day limit). The description adds the concept of 'open and blocked nights' and 'minimum stay' but does not elaborate on parameter semantics beyond what the schema already provides. Baseline 3 is appropriate since the schema carries the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Open and blocked nights for one property'), a clear resource ('availability calendar over a date range'), and scope ('up to 93 days, with minimum stay'). It distinguishes itself from siblings by explicitly noting it does not price or confirm a stay, differentiating it from get_live_quote. This is specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use it: checking availability for a property over a date range. It explicitly says what it does not do ('does not price or confirm a stay'), which helps avoid confusion with get_live_quote, but it does not name the sibling tool explicitly. Still, the boundary is clear enough for an agent to choose it over pricing/booking tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_booking_linkGet a booking linkARead-onlyIdempotentInspect
A link to Luxury Lodging's own site that opens checkout for one home, dates, party size and rate, for the same stay, rate and attribution as a live quote's booking_url, carrying a freshly signed quote token. It checks the stay the way a live quote does: valid dates, the home's guest limit and its pet policy, and it re-prices the stay to sign the link without returning the total. An optional coupon_code is priced into the signed total the same way a live quote prices it, and the link carries the code only when it applied. Opening the link does not reserve the home, hold dates or take payment; the guest completes checkout on EscapeStays. When the guest has dates and wants to book, call get_booking_link and give the guest that URL. Never return a nightly rate as the price; quote all-in totals only. Never return an exact street address.
| Name | Required | Description | Default |
|---|---|---|---|
| pets | No | How many pets the guest is bringing, 0 to 4; 0 or leave out for none. true means one pet and false none. The link keeps the number of pets, and the stay is refused when the home does not allow them. | |
| rate | No | Which rate the link opens on. Defaults to non_refundable, the rate a live quote's booking_url opens on. refundable is offered only while check-in is more than 30 days away. | |
| guests | Yes | Everyone staying, including children and infants. The link opens on this party size. | |
| check_in | Yes | Check-in date, YYYY-MM-DD. | |
| quote_id | No | The quote.quote_id from a live quote for this stay, echoed back unchanged. It is not checked against current pricing. | |
| check_out | Yes | Check-out date, YYYY-MM-DD. | |
| coupon_code | No | 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. | |
| property_id | Yes | Property id or slug. |
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| pets | Yes | |
| rate | Yes | The rate the link opens on. |
| coupon | No | 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. |
| guests | Yes | |
| check_in | Yes | |
| quote_id | No | The quote_id sent with the request, echoed unchanged. Absent when none was sent. |
| check_out | Yes | |
| booking_url | Yes | 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. |
| property_id | Yes | |
| pricing_note | Yes | States that the stay was re-priced to sign the link, and that the total is not returned here. |
| canonical_url | Yes | The home's property page, not the booking link. |
| confirms_booking | Yes | False on every response: the link does not book, hold or pay for anything. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond the annotations (readOnly/openWorld/idempotent/non-destructive), it discloses that opening the link does not reserve, hold dates or take payment, that validation re-checks dates, guest limit and pet policy, that it re-prices to sign without returning a total, and that quote_id is not re-checked against current pricing. The coupon lifecycle (reported in 'coupon' with a reason, re-checked at booking) is unusually complete behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose and the core trigger are front-loaded, but the prose is dense and repetitive — 'the way a live quote does/opens on/prices it' recurs several times, and the trailing pricing/address policy lines are tangential to invoking this tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 8 parameters, an output schema already covering return values, and annotations covering safety, the description supplies the remaining needed context: what the link does and does not do, the validation it performs, and the coupon/quote_id caveats an agent must relay to a guest.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 restates rather than extends the schema's parameter semantics (coupon applied into the signed total, rate defaulting to non_refundable, pets affecting refusal) — nearly all of this is already documented per-parameter, so it adds little beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence names a specific artifact (a signed booking link to the operator's own checkout) and its scope (one home, dates, party size, rate), and explicitly ties it to the sibling concept 'a live quote's booking_url' with the same stay/rate/attribution. An agent can distinguish this from get_live_quote and get_availability immediately.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives a clear trigger: 'When the guest has dates and wants to book, call get_booking_link and give the guest that URL,' and implicitly routes the pre-step through a live quote ('the same stay, rate and attribution as a live quote's booking_url'). It does not state an explicit when-not or name the sibling it replaces, so it falls short of a 5.
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 priceARead-onlyIdempotentInspect
Live price for one property and one stay. stay_total includes cleaning, fees and taxes; nightly rates exclude them. Also returns the refundable deposit hold, which is separate from the total, the payment schedule, and that home's own cancellation and check-in terms. The top-level totals and cancellation are the non-refundable rate; rate_options lists every rate on offer with its own terms, total and booking_url, including a refundable rate with its free-cancellation deadline when check-in is more than 30 days away (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.
| Name | Required | Description | Default |
|---|---|---|---|
| pets | No | 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. | |
| guests | No | Everyone staying, including children and infants. | |
| check_in | Yes | Check-in date, YYYY-MM-DD. | |
| check_out | Yes | Check-out date, YYYY-MM-DD. | |
| coupon_code | No | 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. | |
| property_id | Yes | Property id or slug. |
Output Schema
| Name | Required | Description |
|---|---|---|
| name | No | |
| note | No | |
| pets | No | How many pets this quote is for. pet_fee in price_breakdown is the fee for that many. |
| quote | No | 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. |
| coupon | No | 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. |
| guests | No | |
| nights | No | |
| reason | No | Why the stay cannot be booked. Only present when available is false. |
| check_in | No | |
| currency | No | |
| available | Yes | |
| check_out | No | |
| quoted_at | No | |
| stay_total | No | The price of the stay, including cleaning, fees and taxes, and the coupon when one applied. Nightly rates exclude them. |
| booking_url | Yes | 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. |
| property_id | Yes | |
| cancellation | No | 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. |
| check_out_by | No | |
| rate_options | No | 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. |
| check_in_from | No | |
| total_display | No | stay_total, formatted. |
| total_due_now | No | 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. |
| maximum_nights | No | |
| minimum_nights | No | |
| price_breakdown | No | |
| payment_schedule | No | 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. |
| quote_expires_at | No | When this quote lapses. After it, the price of the stay can differ from stay_total until it is quoted again. |
| security_deposit_hold | No | A refundable hold, not part of stay_total. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Goes well beyond the readOnly/idempotent annotations: it discloses that stay_total bundles cleaning/fees/taxes while nightly rates don't, that the refundable deposit hold is separate from the total, that coupon codes are repriced and re-validated at booking and may stop applying, and that amounts ending in _minor are integer cents. This is exactly the kind of behavioral context annotations can't carry.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Long but dense and largely front-loaded: pricing composition first, then rate_options and booking_url, then the coupon caveat. The coupon paragraph partially duplicates the schema, which is the only real slack.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 6-param priced-quote tool with an output schema, the description covers totals composition, rate variants, coupon lifecycle, deposit holds, and the fact that no booking occurs. An agent has everything needed to call and interpret it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents coupon_code, pets, guests and dates in detail. The description restates much of the coupon behavior (applied to rent before pricing, re-checked at booking) rather than adding new semantics, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource+scope: 'Live price for one property and one stay.' It immediately distinguishes itself from pricing-adjacent siblings like compare_properties and get_booking_link by describing the pricing computation and the booking_url handoff.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It clearly states what the tool does NOT do ('does not book or take payment') and points to booking_url as the completion path, which is implied routing. But it never explicitly says when to prefer it over compare_properties or get_booking_link, leaving the sibling choice to inference.
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 detailsARead-onlyIdempotentInspect
Full detail for one property: bedrooms, capacity, amenities recorded by the property manager, photos, house rules and the real check-in, check-out, deposit and pet policies for that specific home. Location is given at neighbourhood level; the exact address is shared after booking. Guest reviews are a selection of 4- and 5-star reviews, each with its source; no average rating exists. accommodation_type and bathroom_sharing say whether the guest rents an entire home or a room: a private room or shared room is not an entire home.
| Name | Required | Description | Default |
|---|---|---|---|
| property_id | Yes | Property id or the slug from a booking link. |
Output Schema
| Name | Required | Description |
|---|---|---|
| beds | No | |
| name | Yes | |
| alias | No | |
| photos | Yes | |
| sleeps | No | |
| bedrooms | No | |
| location | Yes | |
| policies | Yes | This home's own policies, not portfolio defaults, when policies_source is "provider". |
| amenities | Yes | |
| bathrooms | No | |
| booking_url | Yes | |
| description | No | |
| house_rules | Yes | |
| property_id | Yes | |
| guest_reviews | Yes | A selection of 4- and 5-star reviews, not a summary of every review. No overall or average rating is implied or available. |
| property_type | No | |
| support_email | Yes | |
| amenities_source | Yes | |
| bathroom_sharing | No | Whether the guest has a private bathroom or shares one. unknown means it is not recorded for this home. |
| common_questions | No | |
| accommodation_type | No | 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. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds genuinely non-obvious behavior: location is only neighbourhood-level with the exact address shared after booking, and reviews are a curated 4-/5-star selection with no average rating. These caveats go beyond anything in the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead sentence front-loads what is returned, and the remaining sentences each carry distinct semantic content (location granularity, review selection, room-vs-entire-home distinction). It is dense but not padded, though some return-field enumeration is redundant against the existing output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the return values needn't be enumerated, yet the description supplies the interpretive caveats an agent needs (no average rating, address withheld until booking, what accommodation_type means). Nothing critical for correct invocation appears missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single property_id parameter, and the description adds no format, slug-parsing, or lookup-failure guidance beyond the schema's "Property id or the slug from a booking link." Baseline 3 is correct when the schema already carries the parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific verb+resource ("Full detail for one property") and enumerates the fields returned, so an agent can tell this apart from search_properties or get_availability without opening a schema. It never names a sibling explicitly, so the differentiation is implied rather than stated.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is only implied: an agent infers it should call this when it already holds a property_id and needs the full record rather than a search/quote. There is no explicit when-to-use, when-not-to-use, or named alternative (compare_properties, get_live_quote) to route between.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_marketsList destinationsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| note | Yes | |
| markets | Yes | |
| homes_count | Yes | |
| markets_count | Yes |
TDQS
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.
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.
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.
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.
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.
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 homesARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | Page number, starting at 1, counted in units of page_size. Cannot be sent together with cursor. | |
| pets | No | 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. | |
| sort | No | 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. | |
| limit | No | How many properties to return (default 8). | |
| query | No | 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. | |
| budget | No | 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. | |
| cursor | No | The next_cursor value of the previous response, valid only with the same other inputs. Returns the page after it. | |
| guests | No | Everyone staying, including children and infants. | |
| market | No | Market or city name, when the guest named one exactly. | |
| check_in | No | Check-in date, YYYY-MM-DD. Availability is checked only when both dates are given. | |
| amenities | No | 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. | |
| check_out | No | Check-out date, YYYY-MM-DD. | |
| max_total | No | Budget for the whole stay in dollars, including cleaning, fees and taxes. Applies only when dates are given. | |
| page_size | No | Results per page, up to 20. Takes the place of limit when both are sent. | |
| bedrooms_min | No | Fewest bedrooms acceptable. | |
| radius_miles | No | 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. | |
| bathrooms_min | No | Fewest bathrooms acceptable. | |
| bedrooms_exact | No | Exactly this many bedrooms; 0 is a studio. Cannot be sent together with bedrooms_min. | |
| price_all_matches | No | 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. | |
| accommodation_type | No | What the guest rents. Homes whose type is not recorded are left out and counted in accommodation_type_unknown. | |
| amenities_required | No | Amenities every returned home has. A home whose amenity data is unavailable fails the filter and is counted in amenities_unknown. | |
| amenities_preferred | No | Amenities that order homes when the requested sort ties, and appear in match_reasons. Homes lacking them stay in the results. |
Output Schema
| Name | Required | Description |
|---|---|---|
| offset | No | How many results precede this page in the full ordering. |
| status | No | 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. |
| matches | Yes | How many results this response carries. |
| has_more | Yes | 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. |
| page_size | No | How many results this page asked for. |
| properties | Yes | |
| next_cursor | Yes | The value to send as cursor, with every other input unchanged, to get the next page. Null when has_more is false. |
| completeness | Yes | 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. |
| search_scope | Yes | The place actually searched and how it was read. |
| dates_checked | Yes | False means availability is unknown and no stay has been priced; no row carries a stay_total. |
| budget_applied | No | Only returned when a budget was sent: what it was compared with. |
| total_matching | Yes | How many individual homes matched, counting every interchangeable unit. |
| distance_unknown | No | 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. |
| unpriced_in_time | Yes | 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. |
| amenities_unknown | No | 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. |
| availability_note | Yes | |
| budget_unverified | No | 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. |
| searched_location | No | |
| pet_policy_unknown | No | Otherwise matching homes omitted from a pet-friendly search because their pet policy is unknown, not confirmed to prohibit pets. Applies with or without dates; included in unpriced_in_time when dated. A positive count means the pet-friendly inventory is incomplete. |
| total_matching_groups | Yes | How many distinct unit types matched. |
| unpriced_property_ids | Yes | 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. |
| accommodation_type_unknown | No | 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. |
| budget_unverified_property_ids | No | 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. |
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
- Changed
get_booking_link3 fields changed- added
Input schema / properties / coupon_codeAdded 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" +} - changed
Output schema / properties / booking_url / descriptionPrevious 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." - added
Output schema / properties / couponAdded 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" +}
- Changed
get_live_quote5 fields changed- added
Input schema / properties / coupon_codeAdded 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" +} - added
Output schema / properties / booking_url / descriptionAdded 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." - added
Output schema / properties / couponAdded 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" +} - added
Output schema / properties / price_breakdown / properties / discount / descriptionAdded value: +"Dollars the coupon took off the rent; 0 when none applied." - changed
Output schema / properties / stay_total / descriptionPrevious 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."
1 tool update
- Changed
get_live_quote3 fields changed- changed
Output schema / properties / quote / properties / card_fee_minor / descriptionPrevious 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." - changed
Output schema / properties / rate_options / descriptionPrevious 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." - changed
Output schema / properties / rate_options / items / properties / free_cancel_until / descriptionPrevious 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."
6 tool updates
- Changed
compare_properties11 fields changed- changed
Input schema / properties / guests / descriptionPrevious value: -"Number of guests."New value: +"Everyone staying, including children and infants." - changed
Input schema / properties / pets / descriptionPrevious 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." - added
Input schema / properties / pets / maximumAdded value: +4 - added
Input schema / properties / pets / minimumAdded value: +0 - changed
Input schema / properties / pets / typePrevious value: -"boolean"New value: +[ + "integer", + "boolean" +] - added
Output schema / properties / homes / items / properties / accommodation_typeAdded 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" +} - added
Output schema / properties / homes / items / properties / bathroom_sharingAdded 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" +} - changed
Output schema / properties / homes / items / properties / from_price_note / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / from_price_per_night / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / pet_fee / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / pet_fee_basis / enumPrevious value: -[ - "per stay", - "per pet", - "per pet per night" -]New value: +[ + "per stay", + "per night", + "per pet", + "per pet per night" +]
- Added
get_booking_link - Changed
get_live_quote13 fields changed- changed
Input schema / properties / guests / descriptionPrevious value: -"Number of guests."New value: +"Everyone staying, including children and infants." - changed
Input schema / properties / pets / descriptionPrevious 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." - added
Input schema / properties / pets / maximumAdded value: +4 - added
Input schema / properties / pets / minimumAdded value: +0 - changed
Input schema / properties / pets / typePrevious value: -"boolean"New value: +[ + "integer", + "boolean" +] - changed
Output schema / descriptionPrevious 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." - added
Output schema / properties / pets / descriptionAdded value: +"How many pets this quote is for. pet_fee in price_breakdown is the fee for that many." - added
Output schema / properties / pets / maximumAdded value: +4 - added
Output schema / properties / pets / minimumAdded value: +0 - changed
Output schema / properties / pets / typePrevious value: -"boolean"New value: +"integer" - added
Output schema / properties / quoteAdded 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" +} - added
Output schema / properties / rate_options / items / properties / refundableAdded 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" +} - changed
Output schema / properties / rate_options / items / requiredPrevious value: -[ - "plan", - "stay_total", - "total_due_now", - "cancellation", - "booking_url" -]New value: +[ + "plan", + "refundable", + "stay_total", + "total_due_now", + "cancellation", + "booking_url" +]
- Changed
get_property_details5 fields changed- added
Output schema / properties / accommodation_typeAdded 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" +} - added
Output schema / properties / bathroom_sharingAdded 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" +} - changed
Output schema / properties / policies / properties / pet_fee / descriptionPrevious 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." - changed
Output schema / properties / policies / properties / pet_fee_basis / descriptionPrevious 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." - changed
Output schema / properties / policies / properties / pet_fee_basis / enumPrevious value: -[ - "per stay", - "per pet", - "per pet per night" -]New value: +[ + "per stay", + "per night", + "per pet", + "per pet per night" +]
- Changed
list_markets4 fields changed- added
Output schema / properties / markets / items / properties / area_nameAdded value: +{ + "type": "string" +} - added
Output schema / properties / markets / items / properties / countsAdded 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" +} - added
Output schema / properties / markets / items / properties / homes_in_areaAdded 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" +} - added
Output schema / properties / markets / items / properties / summaryAdded 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" +}
- Changed
search_properties45 fields changed- added
Input schema / properties / accommodation_typeAdded 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" +} - changed
Input schema / properties / amenities / descriptionPrevious 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." - added
Input schema / properties / amenities_preferredAdded 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" +} - added
Input schema / properties / amenities_requiredAdded 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" +} - added
Input schema / properties / bedrooms_exactAdded value: +{ + "description": "Exactly this many bedrooms; 0 is a studio. Cannot be sent together with bedrooms_min.", + "maximum": 100, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / budgetAdded 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" +} - added
Input schema / properties / cursorAdded value: +{ + "description": "The next_cursor value of the previous response, valid only with the same other inputs. Returns the page after it.", + "type": "string" +} - changed
Input schema / properties / guests / descriptionPrevious value: -"Number of guests, including children."New value: +"Everyone staying, including children and infants." - added
Input schema / properties / pageAdded value: +{ + "description": "Page number, starting at 1, counted in units of page_size. Cannot be sent together with cursor.", + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / page_sizeAdded value: +{ + "description": "Results per page, up to 20. Takes the place of limit when both are sent.", + "maximum": 20, + "minimum": 1, + "type": "integer" +} - changed
Input schema / properties / pets / descriptionPrevious 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." - added
Input schema / properties / pets / maximumAdded value: +4 - added
Input schema / properties / pets / minimumAdded value: +0 - changed
Input schema / properties / pets / typePrevious value: -"boolean"New value: +[ + "integer", + "boolean" +] - changed
Input schema / properties / query / descriptionPrevious 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." - added
Input schema / properties / radius_milesAdded 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" +} - changed
Input schema / properties / sort / descriptionPrevious 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." - added
Output schema / properties / accommodation_type_unknownAdded 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" +} - added
Output schema / properties / amenities_unknownAdded 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" +} - added
Output schema / properties / budget_appliedAdded 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" +} - added
Output schema / properties / budget_unverifiedAdded 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" +} - added
Output schema / properties / budget_unverified_property_idsAdded 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" +} - added
Output schema / properties / completenessAdded 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" +} - added
Output schema / properties / distance_unknownAdded 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" +} - added
Output schema / properties / has_moreAdded 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" +} - added
Output schema / properties / next_cursorAdded 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" + ] +} - added
Output schema / properties / offsetAdded value: +{ + "description": "How many results precede this page in the full ordering.", + "type": "integer" +} - added
Output schema / properties / page_sizeAdded value: +{ + "description": "How many results this page asked for.", + "type": "integer" +} - added
Output schema / properties / properties / items / properties / accommodation_typeAdded 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" +} - added
Output schema / properties / properties / items / properties / availability_statusAdded 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" +} - added
Output schema / properties / properties / items / properties / bathroom_sharingAdded 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" +} - added
Output schema / properties / properties / items / properties / content_updated_atAdded 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" +} - added
Output schema / properties / properties / items / properties / data_checked_atAdded value: +{ + "description": "When this home's availability and price were fetched, ISO 8601. Only present on a row whose stay was priced.", + "type": "string" +} - added
Output schema / properties / properties / items / properties / distance_milesAdded 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" +} - added
Output schema / properties / properties / items / properties / distance_typeAdded 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" +} - changed
Output schema / properties / properties / items / properties / from_price_note / descriptionPrevious 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." - changed
Output schema / properties / properties / items / properties / from_price_per_night / descriptionPrevious 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." - added
Output schema / properties / properties / items / properties / match_reasonsAdded 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" +} - added
Output schema / properties / properties / items / properties / missing_or_unverifiedAdded value: +{ + "description": "Facts about this home that could not be verified, drawn from: pet policy, amenities, accommodation type.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / properties / items / requiredPrevious 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" +] - added
Output schema / properties / search_scopeAdded 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" +} - added
Output schema / properties / statusAdded 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" +} - changed
Output schema / properties / unpriced_in_time / descriptionPrevious 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." - added
Output schema / properties / unpriced_property_idsAdded 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" +} - changed
Output schema / requiredPrevious 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 tool updates
- Changed
compare_properties11 fields changed- changed
Input schema / properties / guests / descriptionPrevious value: -"Everyone staying, including children and infants."New value: +"Number of guests." - changed
Input schema / properties / pets / descriptionPrevious 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." - removed
Input schema / properties / pets / maximumRemoved value: -4 - removed
Input schema / properties / pets / minimumRemoved value: -0 - changed
Input schema / properties / pets / typePrevious value: -[ - "integer", - "boolean" -]New value: +"boolean" - removed
Output schema / properties / homes / items / properties / accommodation_typeRemoved 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" -} - removed
Output schema / properties / homes / items / properties / bathroom_sharingRemoved 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" -} - changed
Output schema / properties / homes / items / properties / from_price_note / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / from_price_per_night / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / pet_fee / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / pet_fee_basis / enumPrevious value: -[ - "per stay", - "per night", - "per pet", - "per pet per night" -]New value: +[ + "per stay", + "per pet", + "per pet per night" +]
- Removed
get_booking_link - Changed
get_live_quote13 fields changed- changed
Input schema / properties / guests / descriptionPrevious value: -"Everyone staying, including children and infants."New value: +"Number of guests." - changed
Input schema / properties / pets / descriptionPrevious 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." - removed
Input schema / properties / pets / maximumRemoved value: -4 - removed
Input schema / properties / pets / minimumRemoved value: -0 - changed
Input schema / properties / pets / typePrevious value: -[ - "integer", - "boolean" -]New value: +"boolean" - changed
Output schema / descriptionPrevious 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." - removed
Output schema / properties / pets / descriptionRemoved value: -"How many pets this quote is for. pet_fee in price_breakdown is the fee for that many." - removed
Output schema / properties / pets / maximumRemoved value: -4 - removed
Output schema / properties / pets / minimumRemoved value: -0 - changed
Output schema / properties / pets / typePrevious value: -"integer"New value: +"boolean" - removed
Output schema / properties / quoteRemoved 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" -} - removed
Output schema / properties / rate_options / items / properties / refundableRemoved 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" -} - changed
Output schema / properties / rate_options / items / requiredPrevious value: -[ - "plan", - "refundable", - "stay_total", - "total_due_now", - "cancellation", - "booking_url" -]New value: +[ + "plan", + "stay_total", + "total_due_now", + "cancellation", + "booking_url" +]
- Changed
get_property_details5 fields changed- removed
Output schema / properties / accommodation_typeRemoved 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" -} - removed
Output schema / properties / bathroom_sharingRemoved 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" -} - changed
Output schema / properties / policies / properties / pet_fee / descriptionPrevious 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." - changed
Output schema / properties / policies / properties / pet_fee_basis / descriptionPrevious 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." - changed
Output schema / properties / policies / properties / pet_fee_basis / enumPrevious value: -[ - "per stay", - "per night", - "per pet", - "per pet per night" -]New value: +[ + "per stay", + "per pet", + "per pet per night" +]
- Changed
list_markets4 fields changed- removed
Output schema / properties / markets / items / properties / area_nameRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / markets / items / properties / countsRemoved 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" -} - removed
Output schema / properties / markets / items / properties / homes_in_areaRemoved 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" -} - removed
Output schema / properties / markets / items / properties / summaryRemoved 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" -}
- Changed
search_properties45 fields changed- removed
Input schema / properties / accommodation_typeRemoved 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" -} - changed
Input schema / properties / amenities / descriptionPrevious 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." - removed
Input schema / properties / amenities_preferredRemoved 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" -} - removed
Input schema / properties / amenities_requiredRemoved 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" -} - removed
Input schema / properties / bedrooms_exactRemoved value: -{ - "description": "Exactly this many bedrooms; 0 is a studio. Cannot be sent together with bedrooms_min.", - "maximum": 100, - "minimum": 0, - "type": "integer" -} - removed
Input schema / properties / budgetRemoved 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" -} - removed
Input schema / properties / cursorRemoved value: -{ - "description": "The next_cursor value of the previous response, valid only with the same other inputs. Returns the page after it.", - "type": "string" -} - changed
Input schema / properties / guests / descriptionPrevious value: -"Everyone staying, including children and infants."New value: +"Number of guests, including children." - removed
Input schema / properties / pageRemoved value: -{ - "description": "Page number, starting at 1, counted in units of page_size. Cannot be sent together with cursor.", - "minimum": 1, - "type": "integer" -} - removed
Input schema / properties / page_sizeRemoved value: -{ - "description": "Results per page, up to 20. Takes the place of limit when both are sent.", - "maximum": 20, - "minimum": 1, - "type": "integer" -} - changed
Input schema / properties / pets / descriptionPrevious 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." - removed
Input schema / properties / pets / maximumRemoved value: -4 - removed
Input schema / properties / pets / minimumRemoved value: -0 - changed
Input schema / properties / pets / typePrevious value: -[ - "integer", - "boolean" -]New value: +"boolean" - changed
Input schema / properties / query / descriptionPrevious 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." - removed
Input schema / properties / radius_milesRemoved 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" -} - changed
Input schema / properties / sort / descriptionPrevious 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." - removed
Output schema / properties / accommodation_type_unknownRemoved 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" -} - removed
Output schema / properties / amenities_unknownRemoved 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" -} - removed
Output schema / properties / budget_appliedRemoved 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" -} - removed
Output schema / properties / budget_unverifiedRemoved 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" -} - removed
Output schema / properties / budget_unverified_property_idsRemoved 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" -} - removed
Output schema / properties / completenessRemoved 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" -} - removed
Output schema / properties / distance_unknownRemoved 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" -} - removed
Output schema / properties / has_moreRemoved 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" -} - removed
Output schema / properties / next_cursorRemoved 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" - ] -} - removed
Output schema / properties / offsetRemoved value: -{ - "description": "How many results precede this page in the full ordering.", - "type": "integer" -} - removed
Output schema / properties / page_sizeRemoved value: -{ - "description": "How many results this page asked for.", - "type": "integer" -} - removed
Output schema / properties / properties / items / properties / accommodation_typeRemoved 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" -} - removed
Output schema / properties / properties / items / properties / availability_statusRemoved 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" -} - removed
Output schema / properties / properties / items / properties / bathroom_sharingRemoved 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" -} - removed
Output schema / properties / properties / items / properties / content_updated_atRemoved 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" -} - removed
Output schema / properties / properties / items / properties / data_checked_atRemoved value: -{ - "description": "When this home's availability and price were fetched, ISO 8601. Only present on a row whose stay was priced.", - "type": "string" -} - removed
Output schema / properties / properties / items / properties / distance_milesRemoved 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" -} - removed
Output schema / properties / properties / items / properties / distance_typeRemoved 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" -} - changed
Output schema / properties / properties / items / properties / from_price_note / descriptionPrevious 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." - changed
Output schema / properties / properties / items / properties / from_price_per_night / descriptionPrevious 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." - removed
Output schema / properties / properties / items / properties / match_reasonsRemoved 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" -} - removed
Output schema / properties / properties / items / properties / missing_or_unverifiedRemoved value: -{ - "description": "Facts about this home that could not be verified, drawn from: pet policy, amenities, accommodation type.", - "items": { - "type": "string" - }, - "type": "array" -} - changed
Output schema / properties / properties / items / requiredPrevious 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" +] - removed
Output schema / properties / search_scopeRemoved 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" -} - removed
Output schema / properties / statusRemoved 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" -} - changed
Output schema / properties / unpriced_in_time / descriptionPrevious 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." - removed
Output schema / properties / unpriced_property_idsRemoved 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" -} - changed
Output schema / requiredPrevious 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" +]
6 tool updates
- Changed
compare_properties11 fields changed- changed
Input schema / properties / guests / descriptionPrevious value: -"Number of guests."New value: +"Everyone staying, including children and infants." - changed
Input schema / properties / pets / descriptionPrevious 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." - added
Input schema / properties / pets / maximumAdded value: +4 - added
Input schema / properties / pets / minimumAdded value: +0 - changed
Input schema / properties / pets / typePrevious value: -"boolean"New value: +[ + "integer", + "boolean" +] - added
Output schema / properties / homes / items / properties / accommodation_typeAdded 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" +} - added
Output schema / properties / homes / items / properties / bathroom_sharingAdded 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" +} - changed
Output schema / properties / homes / items / properties / from_price_note / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / from_price_per_night / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / pet_fee / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / pet_fee_basis / enumPrevious value: -[ - "per stay", - "per pet", - "per pet per night" -]New value: +[ + "per stay", + "per night", + "per pet", + "per pet per night" +]
- Added
get_booking_link - Changed
get_live_quote13 fields changed- changed
Input schema / properties / guests / descriptionPrevious value: -"Number of guests."New value: +"Everyone staying, including children and infants." - changed
Input schema / properties / pets / descriptionPrevious 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." - added
Input schema / properties / pets / maximumAdded value: +4 - added
Input schema / properties / pets / minimumAdded value: +0 - changed
Input schema / properties / pets / typePrevious value: -"boolean"New value: +[ + "integer", + "boolean" +] - changed
Output schema / descriptionPrevious 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." - added
Output schema / properties / pets / descriptionAdded value: +"How many pets this quote is for. pet_fee in price_breakdown is the fee for that many." - added
Output schema / properties / pets / maximumAdded value: +4 - added
Output schema / properties / pets / minimumAdded value: +0 - changed
Output schema / properties / pets / typePrevious value: -"boolean"New value: +"integer" - added
Output schema / properties / quoteAdded 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" +} - added
Output schema / properties / rate_options / items / properties / refundableAdded 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" +} - changed
Output schema / properties / rate_options / items / requiredPrevious value: -[ - "plan", - "stay_total", - "total_due_now", - "cancellation", - "booking_url" -]New value: +[ + "plan", + "refundable", + "stay_total", + "total_due_now", + "cancellation", + "booking_url" +]
- Changed
get_property_details5 fields changed- added
Output schema / properties / accommodation_typeAdded 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" +} - added
Output schema / properties / bathroom_sharingAdded 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" +} - changed
Output schema / properties / policies / properties / pet_fee / descriptionPrevious 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." - changed
Output schema / properties / policies / properties / pet_fee_basis / descriptionPrevious 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." - changed
Output schema / properties / policies / properties / pet_fee_basis / enumPrevious value: -[ - "per stay", - "per pet", - "per pet per night" -]New value: +[ + "per stay", + "per night", + "per pet", + "per pet per night" +]
- Changed
list_markets4 fields changed- added
Output schema / properties / markets / items / properties / area_nameAdded value: +{ + "type": "string" +} - added
Output schema / properties / markets / items / properties / countsAdded 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" +} - added
Output schema / properties / markets / items / properties / homes_in_areaAdded 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" +} - added
Output schema / properties / markets / items / properties / summaryAdded 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" +}
- Changed
search_properties45 fields changed- added
Input schema / properties / accommodation_typeAdded 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" +} - changed
Input schema / properties / amenities / descriptionPrevious 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." - added
Input schema / properties / amenities_preferredAdded 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" +} - added
Input schema / properties / amenities_requiredAdded 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" +} - added
Input schema / properties / bedrooms_exactAdded value: +{ + "description": "Exactly this many bedrooms; 0 is a studio. Cannot be sent together with bedrooms_min.", + "maximum": 100, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / budgetAdded 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" +} - added
Input schema / properties / cursorAdded value: +{ + "description": "The next_cursor value of the previous response, valid only with the same other inputs. Returns the page after it.", + "type": "string" +} - changed
Input schema / properties / guests / descriptionPrevious value: -"Number of guests, including children."New value: +"Everyone staying, including children and infants." - added
Input schema / properties / pageAdded value: +{ + "description": "Page number, starting at 1, counted in units of page_size. Cannot be sent together with cursor.", + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / page_sizeAdded value: +{ + "description": "Results per page, up to 20. Takes the place of limit when both are sent.", + "maximum": 20, + "minimum": 1, + "type": "integer" +} - changed
Input schema / properties / pets / descriptionPrevious 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." - added
Input schema / properties / pets / maximumAdded value: +4 - added
Input schema / properties / pets / minimumAdded value: +0 - changed
Input schema / properties / pets / typePrevious value: -"boolean"New value: +[ + "integer", + "boolean" +] - changed
Input schema / properties / query / descriptionPrevious 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." - added
Input schema / properties / radius_milesAdded 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" +} - changed
Input schema / properties / sort / descriptionPrevious 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." - added
Output schema / properties / accommodation_type_unknownAdded 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" +} - added
Output schema / properties / amenities_unknownAdded 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" +} - added
Output schema / properties / budget_appliedAdded 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" +} - added
Output schema / properties / budget_unverifiedAdded 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" +} - added
Output schema / properties / budget_unverified_property_idsAdded 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" +} - added
Output schema / properties / completenessAdded 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" +} - added
Output schema / properties / distance_unknownAdded 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" +} - added
Output schema / properties / has_moreAdded 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" +} - added
Output schema / properties / next_cursorAdded 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" + ] +} - added
Output schema / properties / offsetAdded value: +{ + "description": "How many results precede this page in the full ordering.", + "type": "integer" +} - added
Output schema / properties / page_sizeAdded value: +{ + "description": "How many results this page asked for.", + "type": "integer" +} - added
Output schema / properties / properties / items / properties / accommodation_typeAdded 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" +} - added
Output schema / properties / properties / items / properties / availability_statusAdded 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" +} - added
Output schema / properties / properties / items / properties / bathroom_sharingAdded 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" +} - added
Output schema / properties / properties / items / properties / content_updated_atAdded 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" +} - added
Output schema / properties / properties / items / properties / data_checked_atAdded value: +{ + "description": "When this home's availability and price were fetched, ISO 8601. Only present on a row whose stay was priced.", + "type": "string" +} - added
Output schema / properties / properties / items / properties / distance_milesAdded 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" +} - added
Output schema / properties / properties / items / properties / distance_typeAdded 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" +} - changed
Output schema / properties / properties / items / properties / from_price_note / descriptionPrevious 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." - changed
Output schema / properties / properties / items / properties / from_price_per_night / descriptionPrevious 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." - added
Output schema / properties / properties / items / properties / match_reasonsAdded 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" +} - added
Output schema / properties / properties / items / properties / missing_or_unverifiedAdded value: +{ + "description": "Facts about this home that could not be verified, drawn from: pet policy, amenities, accommodation type.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / properties / items / requiredPrevious 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" +] - added
Output schema / properties / search_scopeAdded 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" +} - added
Output schema / properties / statusAdded 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" +} - changed
Output schema / properties / unpriced_in_time / descriptionPrevious 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." - added
Output schema / properties / unpriced_property_idsAdded 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" +} - changed
Output schema / requiredPrevious 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 tool updates
- Changed
compare_properties11 fields changed- changed
Input schema / properties / guests / descriptionPrevious value: -"Everyone staying, including children and infants."New value: +"Number of guests." - changed
Input schema / properties / pets / descriptionPrevious 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." - removed
Input schema / properties / pets / maximumRemoved value: -4 - removed
Input schema / properties / pets / minimumRemoved value: -0 - changed
Input schema / properties / pets / typePrevious value: -[ - "integer", - "boolean" -]New value: +"boolean" - removed
Output schema / properties / homes / items / properties / accommodation_typeRemoved 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" -} - removed
Output schema / properties / homes / items / properties / bathroom_sharingRemoved 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" -} - changed
Output schema / properties / homes / items / properties / from_price_note / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / from_price_per_night / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / pet_fee / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / pet_fee_basis / enumPrevious value: -[ - "per stay", - "per night", - "per pet", - "per pet per night" -]New value: +[ + "per stay", + "per pet", + "per pet per night" +]
- Removed
get_booking_link - Changed
get_live_quote13 fields changed- changed
Input schema / properties / guests / descriptionPrevious value: -"Everyone staying, including children and infants."New value: +"Number of guests." - changed
Input schema / properties / pets / descriptionPrevious 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." - removed
Input schema / properties / pets / maximumRemoved value: -4 - removed
Input schema / properties / pets / minimumRemoved value: -0 - changed
Input schema / properties / pets / typePrevious value: -[ - "integer", - "boolean" -]New value: +"boolean" - changed
Output schema / descriptionPrevious 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." - removed
Output schema / properties / pets / descriptionRemoved value: -"How many pets this quote is for. pet_fee in price_breakdown is the fee for that many." - removed
Output schema / properties / pets / maximumRemoved value: -4 - removed
Output schema / properties / pets / minimumRemoved value: -0 - changed
Output schema / properties / pets / typePrevious value: -"integer"New value: +"boolean" - removed
Output schema / properties / quoteRemoved 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" -} - removed
Output schema / properties / rate_options / items / properties / refundableRemoved 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" -} - changed
Output schema / properties / rate_options / items / requiredPrevious value: -[ - "plan", - "refundable", - "stay_total", - "total_due_now", - "cancellation", - "booking_url" -]New value: +[ + "plan", + "stay_total", + "total_due_now", + "cancellation", + "booking_url" +]
- Changed
get_property_details5 fields changed- removed
Output schema / properties / accommodation_typeRemoved 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" -} - removed
Output schema / properties / bathroom_sharingRemoved 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" -} - changed
Output schema / properties / policies / properties / pet_fee / descriptionPrevious 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." - changed
Output schema / properties / policies / properties / pet_fee_basis / descriptionPrevious 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." - changed
Output schema / properties / policies / properties / pet_fee_basis / enumPrevious value: -[ - "per stay", - "per night", - "per pet", - "per pet per night" -]New value: +[ + "per stay", + "per pet", + "per pet per night" +]
- Changed
list_markets4 fields changed- removed
Output schema / properties / markets / items / properties / area_nameRemoved value: -{ - "type": "string" -} - removed
Output schema / properties / markets / items / properties / countsRemoved 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" -} - removed
Output schema / properties / markets / items / properties / homes_in_areaRemoved 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" -} - removed
Output schema / properties / markets / items / properties / summaryRemoved 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" -}
- Changed
search_properties45 fields changed- removed
Input schema / properties / accommodation_typeRemoved 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" -} - changed
Input schema / properties / amenities / descriptionPrevious 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." - removed
Input schema / properties / amenities_preferredRemoved 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" -} - removed
Input schema / properties / amenities_requiredRemoved 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" -} - removed
Input schema / properties / bedrooms_exactRemoved value: -{ - "description": "Exactly this many bedrooms; 0 is a studio. Cannot be sent together with bedrooms_min.", - "maximum": 100, - "minimum": 0, - "type": "integer" -} - removed
Input schema / properties / budgetRemoved 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" -} - removed
Input schema / properties / cursorRemoved value: -{ - "description": "The next_cursor value of the previous response, valid only with the same other inputs. Returns the page after it.", - "type": "string" -} - changed
Input schema / properties / guests / descriptionPrevious value: -"Everyone staying, including children and infants."New value: +"Number of guests, including children." - removed
Input schema / properties / pageRemoved value: -{ - "description": "Page number, starting at 1, counted in units of page_size. Cannot be sent together with cursor.", - "minimum": 1, - "type": "integer" -} - removed
Input schema / properties / page_sizeRemoved value: -{ - "description": "Results per page, up to 20. Takes the place of limit when both are sent.", - "maximum": 20, - "minimum": 1, - "type": "integer" -} - changed
Input schema / properties / pets / descriptionPrevious 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." - removed
Input schema / properties / pets / maximumRemoved value: -4 - removed
Input schema / properties / pets / minimumRemoved value: -0 - changed
Input schema / properties / pets / typePrevious value: -[ - "integer", - "boolean" -]New value: +"boolean" - changed
Input schema / properties / query / descriptionPrevious 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." - removed
Input schema / properties / radius_milesRemoved 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" -} - changed
Input schema / properties / sort / descriptionPrevious 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." - removed
Output schema / properties / accommodation_type_unknownRemoved 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" -} - removed
Output schema / properties / amenities_unknownRemoved 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" -} - removed
Output schema / properties / budget_appliedRemoved 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" -} - removed
Output schema / properties / budget_unverifiedRemoved 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" -} - removed
Output schema / properties / budget_unverified_property_idsRemoved 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" -} - removed
Output schema / properties / completenessRemoved 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" -} - removed
Output schema / properties / distance_unknownRemoved 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" -} - removed
Output schema / properties / has_moreRemoved 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" -} - removed
Output schema / properties / next_cursorRemoved 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" - ] -} - removed
Output schema / properties / offsetRemoved value: -{ - "description": "How many results precede this page in the full ordering.", - "type": "integer" -} - removed
Output schema / properties / page_sizeRemoved value: -{ - "description": "How many results this page asked for.", - "type": "integer" -} - removed
Output schema / properties / properties / items / properties / accommodation_typeRemoved 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" -} - removed
Output schema / properties / properties / items / properties / availability_statusRemoved 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" -} - removed
Output schema / properties / properties / items / properties / bathroom_sharingRemoved 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" -} - removed
Output schema / properties / properties / items / properties / content_updated_atRemoved 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" -} - removed
Output schema / properties / properties / items / properties / data_checked_atRemoved value: -{ - "description": "When this home's availability and price were fetched, ISO 8601. Only present on a row whose stay was priced.", - "type": "string" -} - removed
Output schema / properties / properties / items / properties / distance_milesRemoved 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" -} - removed
Output schema / properties / properties / items / properties / distance_typeRemoved 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" -} - changed
Output schema / properties / properties / items / properties / from_price_note / descriptionPrevious 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." - changed
Output schema / properties / properties / items / properties / from_price_per_night / descriptionPrevious 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." - removed
Output schema / properties / properties / items / properties / match_reasonsRemoved 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" -} - removed
Output schema / properties / properties / items / properties / missing_or_unverifiedRemoved value: -{ - "description": "Facts about this home that could not be verified, drawn from: pet policy, amenities, accommodation type.", - "items": { - "type": "string" - }, - "type": "array" -} - changed
Output schema / properties / properties / items / requiredPrevious 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" +] - removed
Output schema / properties / search_scopeRemoved 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" -} - removed
Output schema / properties / statusRemoved 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" -} - changed
Output schema / properties / unpriced_in_time / descriptionPrevious 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." - removed
Output schema / properties / unpriced_property_idsRemoved 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" -} - changed
Output schema / requiredPrevious 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" +]
1 tool update
- Changed
get_live_quote3 fields changed- added
Output schema / properties / quote / properties / refundableAdded 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" +} - added
Output schema / properties / rate_options / items / properties / refundableAdded 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" +} - changed
Output schema / properties / rate_options / items / requiredPrevious value: -[ - "plan", - "stay_total", - "total_due_now", - "cancellation", - "booking_url" -]New value: +[ + "plan", + "refundable", + "stay_total", + "total_due_now", + "cancellation", + "booking_url" +]
1 tool update
- Changed
search_properties10 fields changed- changed
Input schema / properties / query / descriptionPrevious 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." - added
Input schema / properties / radius_milesAdded 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" +} - changed
Output schema / properties / completeness / descriptionPrevious 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." - added
Output schema / properties / distance_unknownAdded 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" +} - added
Output schema / properties / properties / items / properties / distance_milesAdded 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" +} - added
Output schema / properties / properties / items / properties / distance_typeAdded 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" +} - changed
Output schema / properties / properties / items / properties / match_reasons / descriptionPrevious 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." - changed
Output schema / properties / search_scope / properties / radius_miles / descriptionPrevious 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." - changed
Output schema / properties / search_scope / properties / type / descriptionPrevious 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." - changed
Output schema / properties / search_scope / properties / type / enumPrevious value: -[ - "all_homes", - "metro", - "state", - "city", - "nearby_or_text" -]New value: +[ + "all_homes", + "metro", + "state", + "city", + "nearby_or_text", + "landmark", + "area" +]
2 tool updates
- Added
get_booking_link - Changed
search_properties28 fields changed- added
Input schema / properties / accommodation_typeAdded 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" +} - changed
Input schema / properties / amenities / descriptionPrevious 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." - added
Input schema / properties / amenities_preferredAdded 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" +} - added
Input schema / properties / amenities_requiredAdded 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" +} - added
Input schema / properties / bedrooms_exactAdded value: +{ + "description": "Exactly this many bedrooms; 0 is a studio. Cannot be sent together with bedrooms_min.", + "maximum": 100, + "minimum": 0, + "type": "integer" +} - added
Input schema / properties / budgetAdded 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" +} - added
Input schema / properties / cursorAdded value: +{ + "description": "The next_cursor value of the previous response, valid only with the same other inputs. Returns the page after it.", + "type": "string" +} - added
Input schema / properties / pageAdded value: +{ + "description": "Page number, starting at 1, counted in units of page_size. Cannot be sent together with cursor.", + "minimum": 1, + "type": "integer" +} - added
Input schema / properties / page_sizeAdded value: +{ + "description": "Results per page, up to 20. Takes the place of limit when both are sent.", + "maximum": 20, + "minimum": 1, + "type": "integer" +} - added
Output schema / properties / accommodation_type_unknownAdded 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" +} - added
Output schema / properties / amenities_unknownAdded 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" +} - added
Output schema / properties / budget_appliedAdded 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" +} - added
Output schema / properties / budget_unverifiedAdded 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" +} - added
Output schema / properties / budget_unverified_property_idsAdded 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" +} - added
Output schema / properties / completenessAdded 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" +} - added
Output schema / properties / has_moreAdded 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" +} - added
Output schema / properties / next_cursorAdded 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" + ] +} - added
Output schema / properties / offsetAdded value: +{ + "description": "How many results precede this page in the full ordering.", + "type": "integer" +} - added
Output schema / properties / page_sizeAdded value: +{ + "description": "How many results this page asked for.", + "type": "integer" +} - added
Output schema / properties / properties / items / properties / availability_statusAdded 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" +} - added
Output schema / properties / properties / items / properties / content_updated_atAdded 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" +} - added
Output schema / properties / properties / items / properties / data_checked_atAdded value: +{ + "description": "When this home's availability and price were fetched, ISO 8601. Only present on a row whose stay was priced.", + "type": "string" +} - added
Output schema / properties / properties / items / properties / match_reasonsAdded 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" +} - added
Output schema / properties / properties / items / properties / missing_or_unverifiedAdded value: +{ + "description": "Facts about this home that could not be verified, drawn from: pet policy, amenities, accommodation type.", + "items": { + "type": "string" + }, + "type": "array" +} - changed
Output schema / properties / properties / items / requiredPrevious 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" +] - added
Output schema / properties / search_scopeAdded 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" +} - changed
Output schema / properties / unpriced_in_time / descriptionPrevious 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." - changed
Output schema / requiredPrevious 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" +]
3 tool updates
- Changed
compare_properties1 field changed- changed
Input schema / properties / guests / descriptionPrevious value: -"Number of guests."New value: +"Everyone staying, including children and infants."
- Changed
get_live_quote3 fields changed- changed
Input schema / properties / guests / descriptionPrevious value: -"Number of guests."New value: +"Everyone staying, including children and infants." - changed
Output schema / descriptionPrevious 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." - added
Output schema / properties / quoteAdded 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" +}
- Changed
search_properties2 fields changed- changed
Input schema / properties / guests / descriptionPrevious value: -"Number of guests, including children."New value: +"Everyone staying, including children and infants." - added
Output schema / properties / statusAdded 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" +}
4 tool updates
- Changed
compare_properties6 fields changed- changed
Input schema / properties / pets / descriptionPrevious 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." - added
Input schema / properties / pets / maximumAdded value: +4 - added
Input schema / properties / pets / minimumAdded value: +0 - changed
Input schema / properties / pets / typePrevious value: -"boolean"New value: +[ + "integer", + "boolean" +] - changed
Output schema / properties / homes / items / properties / pet_fee / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / pet_fee_basis / enumPrevious value: -[ - "per stay", - "per pet", - "per pet per night" -]New value: +[ + "per stay", + "per night", + "per pet", + "per pet per night" +]
- Changed
get_live_quote8 fields changed- changed
Input schema / properties / pets / descriptionPrevious 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." - added
Input schema / properties / pets / maximumAdded value: +4 - added
Input schema / properties / pets / minimumAdded value: +0 - changed
Input schema / properties / pets / typePrevious value: -"boolean"New value: +[ + "integer", + "boolean" +] - added
Output schema / properties / pets / descriptionAdded value: +"How many pets this quote is for. pet_fee in price_breakdown is the fee for that many." - added
Output schema / properties / pets / maximumAdded value: +4 - added
Output schema / properties / pets / minimumAdded value: +0 - changed
Output schema / properties / pets / typePrevious value: -"boolean"New value: +"integer"
- Changed
get_property_details3 fields changed- changed
Output schema / properties / policies / properties / pet_fee / descriptionPrevious 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." - changed
Output schema / properties / policies / properties / pet_fee_basis / descriptionPrevious 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." - changed
Output schema / properties / policies / properties / pet_fee_basis / enumPrevious value: -[ - "per stay", - "per pet", - "per pet per night" -]New value: +[ + "per stay", + "per night", + "per pet", + "per pet per night" +]
- Changed
search_properties4 fields changed- changed
Input schema / properties / pets / descriptionPrevious 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." - added
Input schema / properties / pets / maximumAdded value: +4 - added
Input schema / properties / pets / minimumAdded value: +0 - changed
Input schema / properties / pets / typePrevious value: -"boolean"New value: +[ + "integer", + "boolean" +]
1 tool update
- Changed
search_properties2 fields changed- added
Output schema / properties / unpriced_property_idsAdded 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" +} - changed
Output schema / requiredPrevious 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" +]
4 tool updates
- Changed
compare_properties4 fields changed- added
Output schema / properties / homes / items / properties / accommodation_typeAdded 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" +} - added
Output schema / properties / homes / items / properties / bathroom_sharingAdded 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" +} - changed
Output schema / properties / homes / items / properties / from_price_note / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / from_price_per_night / descriptionPrevious 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."
- Changed
get_property_details2 fields changed- added
Output schema / properties / accommodation_typeAdded 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" +} - added
Output schema / properties / bathroom_sharingAdded 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" +}
- Changed
list_markets4 fields changed- added
Output schema / properties / markets / items / properties / area_nameAdded value: +{ + "type": "string" +} - added
Output schema / properties / markets / items / properties / countsAdded 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" +} - added
Output schema / properties / markets / items / properties / homes_in_areaAdded 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" +} - added
Output schema / properties / markets / items / properties / summaryAdded 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" +}
- Changed
search_properties5 fields changed- changed
Input schema / properties / sort / descriptionPrevious 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." - added
Output schema / properties / properties / items / properties / accommodation_typeAdded 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" +} - added
Output schema / properties / properties / items / properties / bathroom_sharingAdded 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" +} - changed
Output schema / properties / properties / items / properties / from_price_note / descriptionPrevious 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." - changed
Output schema / properties / properties / items / properties / from_price_per_night / descriptionPrevious 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."
5 tool updates
- Changed
compare_properties11 fields changed- changed
Input schema / properties / check_in / descriptionPrevious 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." - changed
Input schema / properties / guests / maximumPrevious value: -40New value: +50 - added
Output schema / properties / homes / items / properties / avg_per_night / descriptionAdded value: +"No longer returned; stay_total is the price of the stay." - changed
Output schema / properties / homes / items / properties / details_available / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / from_price_note / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / from_price_per_night / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / highlights / descriptionPrevious 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." - added
Output schema / properties / homes / items / properties / pet_fee / descriptionAdded 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." - added
Output schema / properties / homes / items / properties / pet_fee_basisAdded value: +{ + "enum": [ + "per stay", + "per pet", + "per pet per night" + ], + "type": "string" +} - added
Output schema / properties / homes / items / properties / pet_fee_noteAdded value: +{ + "type": "string" +} - changed
Output schema / properties / homes / items / properties / review_count / descriptionPrevious 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."
- Changed
get_live_quote11 fields changed- changed
Input schema / properties / guests / maximumPrevious value: -40New value: +50 - changed
Output schema / properties / cancellation / descriptionPrevious 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." - added
Output schema / properties / payment_scheduleAdded 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" +} - added
Output schema / properties / price_breakdown / properties / refundable_rate_premiumAdded value: +{ + "description": "The 8% of the nightly subtotal the refundable rate adds; 0 on the non-refundable rate.", + "type": [ + "number", + "null" + ] +} - changed
Output schema / properties / price_breakdown / properties / taxes / descriptionPrevious 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." - changed
Output schema / properties / quote_expires_at / descriptionPrevious 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." - added
Output schema / properties / rate_optionsAdded 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" +} - changed
Output schema / properties / security_deposit_hold / descriptionPrevious value: -"A refundable hold, not part of total_due_now."New value: +"A refundable hold, not part of stay_total." - added
Output schema / properties / stay_totalAdded value: +{ + "description": "The price of the stay, including cleaning, fees and taxes. Nightly rates exclude them.", + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / total_display / descriptionAdded value: +"stay_total, formatted." - changed
Output schema / properties / total_due_now / descriptionPrevious 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."
- Changed
get_property_details5 fields changed- changed
Output schema / properties / guest_reviews / properties / reviews / items / properties / source / descriptionPrevious value: -"The platform the review was left on. Always name it when quoting the review."New value: +"The platform the review was left on." - changed
Output schema / properties / location / properties / country / descriptionPrevious value: -"Null when the provider gave none; never assume one."New value: +"Null when the provider gave none; the country is then unknown." - added
Output schema / properties / policies / properties / pet_fee / descriptionAdded 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." - added
Output schema / properties / policies / properties / pet_fee_basisAdded 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" +} - added
Output schema / properties / policies / properties / pet_fee_noteAdded value: +{ + "type": "string" +}
- Changed
list_markets1 field changed- changed
Output schema / properties / markets / items / properties / collection_url / descriptionPrevious 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."
- Changed
search_properties13 fields changed- changed
Input schema / properties / amenities / descriptionPrevious 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." - changed
Input schema / properties / check_in / descriptionPrevious 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." - changed
Input schema / properties / guests / maximumPrevious value: -40New value: +50 - changed
Input schema / properties / max_total / descriptionPrevious 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." - changed
Input schema / properties / pets / descriptionPrevious 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." - changed
Input schema / properties / price_all_matches / descriptionPrevious 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." - changed
Output schema / properties / dates_checked / descriptionPrevious 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." - changed
Output schema / properties / properties / items / properties / avg_per_night / descriptionPrevious 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." - changed
Output schema / properties / properties / items / properties / from_price_note / descriptionPrevious 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." - changed
Output schema / properties / properties / items / properties / from_price_per_night / descriptionPrevious 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." - changed
Output schema / properties / properties / items / properties / highlights / descriptionPrevious 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." - changed
Output schema / properties / properties / items / properties / review_count / descriptionPrevious 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." - changed
Output schema / properties / unpriced_in_time / descriptionPrevious 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."
5 tool updates
- Changed
compare_properties11 fields changed- changed
Input schema / properties / check_in / descriptionPrevious value: -"Check-in date, YYYY-MM-DD. Totals are returned only when both dates are given."New value: +"Check-in date, YYYY-MM-DD. Give both dates to get totals." - changed
Input schema / properties / guests / maximumPrevious value: -50New value: +40 - removed
Output schema / properties / homes / items / properties / avg_per_night / descriptionRemoved value: -"No longer returned; stay_total is the price of the stay." - changed
Output schema / properties / homes / items / properties / details_available / descriptionPrevious 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."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 -- read detail_note, and call get_property_details for it again." - changed
Output schema / properties / homes / items / properties / from_price_note / descriptionPrevious 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: +"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." - changed
Output schema / properties / homes / items / properties / from_price_per_night / descriptionPrevious 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: +"Starting nightly rate. Null means no starting rate is published for this home, never that it is free -- read from_price_note." - changed
Output schema / properties / homes / items / properties / highlights / descriptionPrevious value: -"Up to three short phrases describing what sets the home apart."New value: +"Up to three short phrases an agent can repeat when recommending the home." - removed
Output schema / properties / homes / items / properties / pet_fee / descriptionRemoved 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." - removed
Output schema / properties / homes / items / properties / pet_fee_basisRemoved value: -{ - "enum": [ - "per stay", - "per pet", - "per pet per night" - ], - "type": "string" -} - removed
Output schema / properties / homes / items / properties / pet_fee_noteRemoved value: -{ - "type": "string" -} - changed
Output schema / properties / homes / items / properties / review_count / descriptionPrevious 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."New value: +"How many 4- and 5-star reviews this home has. Never present this as, or derive, an average rating."
- Changed
get_live_quote11 fields changed- changed
Input schema / properties / guests / maximumPrevious value: -50New value: +40 - changed
Output schema / properties / cancellation / descriptionPrevious 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."New value: +"This home's terms. Never promise a refund beyond what this says." - removed
Output schema / properties / payment_scheduleRemoved 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" -} - removed
Output schema / properties / price_breakdown / properties / refundable_rate_premiumRemoved value: -{ - "description": "The 8% of the nightly subtotal the refundable rate adds; 0 on the non-refundable rate.", - "type": [ - "number", - "null" - ] -} - changed
Output schema / properties / price_breakdown / properties / taxes / descriptionPrevious value: -"Lodging tax. It is collected on every stay and included in the total."New value: +"Lodging tax. Always collected and always included in the total." - changed
Output schema / properties / quote_expires_at / descriptionPrevious value: -"When this quote lapses. After it, the price of the stay can differ from stay_total until it is quoted again."New value: +"After this the total must be re-quoted before it is given to a guest." - removed
Output schema / properties / rate_optionsRemoved 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" -} - changed
Output schema / properties / security_deposit_hold / descriptionPrevious value: -"A refundable hold, not part of stay_total."New value: +"A refundable hold, not part of total_due_now." - removed
Output schema / properties / stay_totalRemoved value: -{ - "description": "The price of the stay, including cleaning, fees and taxes. Nightly rates exclude them.", - "type": [ - "number", - "null" - ] -} - removed
Output schema / properties / total_display / descriptionRemoved value: -"stay_total, formatted." - changed
Output schema / properties / total_due_now / descriptionPrevious 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."New value: +"Everything the guest pays at booking, including cleaning, fees and taxes. State this, never the nightly rate alone."
- Changed
get_property_details5 fields changed- changed
Output schema / properties / guest_reviews / properties / reviews / items / properties / source / descriptionPrevious value: -"The platform the review was left on."New value: +"The platform the review was left on. Always name it when quoting the review." - changed
Output schema / properties / location / properties / country / descriptionPrevious value: -"Null when the provider gave none; the country is then unknown."New value: +"Null when the provider gave none; never assume one." - removed
Output schema / properties / policies / properties / pet_fee / descriptionRemoved 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." - removed
Output schema / properties / policies / properties / pet_fee_basisRemoved 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" -} - removed
Output schema / properties / policies / properties / pet_fee_noteRemoved value: -{ - "type": "string" -}
- Changed
list_markets1 field changed- changed
Output schema / properties / markets / items / properties / collection_url / descriptionPrevious value: -"The public page for this market, when it has enough homes to have one. It lists the homes and their neighbourhoods."New 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."
- Changed
search_properties13 fields changed- changed
Input schema / properties / amenities / descriptionPrevious value: -"Amenities every returned home has, as recorded by the property manager."New value: +"Amenities the home must have, as recorded by the property manager." - changed
Input schema / properties / check_in / descriptionPrevious value: -"Check-in date, YYYY-MM-DD. Availability is checked only when both dates are given."New value: +"Check-in date, YYYY-MM-DD. Give both dates to filter by real availability." - changed
Input schema / properties / guests / maximumPrevious value: -50New value: +40 - changed
Input schema / properties / max_total / descriptionPrevious value: -"Budget for the whole stay in dollars, including cleaning, fees and taxes. Applies only when dates are given."New value: +"Budget for the whole stay in dollars, including cleaning, fees and taxes. Only works with dates." - changed
Input schema / properties / pets / descriptionPrevious 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: +"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." - changed
Input schema / properties / price_all_matches / descriptionPrevious 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."New 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." - changed
Output schema / properties / dates_checked / descriptionPrevious value: -"False means availability is unknown and no stay has been priced; no row carries a stay_total."New value: +"False means availability is unknown and every price is a starting nightly rate." - changed
Output schema / properties / properties / items / properties / avg_per_night / descriptionPrevious value: -"No longer returned; stay_total is the price of the stay."New value: +"stay_total divided by nights. A derived figure; quote the total, not this." - changed
Output schema / properties / properties / items / properties / from_price_note / descriptionPrevious 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: +"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." - changed
Output schema / properties / properties / items / properties / from_price_per_night / descriptionPrevious 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: +"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." - changed
Output schema / properties / properties / items / properties / highlights / descriptionPrevious value: -"Up to three short phrases describing what sets the home apart."New value: +"Up to three short phrases an agent can repeat when recommending the home." - changed
Output schema / properties / properties / items / properties / review_count / descriptionPrevious 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."New value: +"How many 4- and 5-star reviews this home has. Never present this as, or derive, an average rating." - changed
Output schema / properties / unpriced_in_time / descriptionPrevious 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 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."
5 tool updates
- Changed
compare_properties11 fields changed- changed
Input schema / properties / check_in / descriptionPrevious 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." - changed
Input schema / properties / guests / maximumPrevious value: -40New value: +50 - added
Output schema / properties / homes / items / properties / avg_per_night / descriptionAdded value: +"No longer returned; stay_total is the price of the stay." - changed
Output schema / properties / homes / items / properties / details_available / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / from_price_note / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / from_price_per_night / descriptionPrevious 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." - changed
Output schema / properties / homes / items / properties / highlights / descriptionPrevious 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." - added
Output schema / properties / homes / items / properties / pet_fee / descriptionAdded 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." - added
Output schema / properties / homes / items / properties / pet_fee_basisAdded value: +{ + "enum": [ + "per stay", + "per pet", + "per pet per night" + ], + "type": "string" +} - added
Output schema / properties / homes / items / properties / pet_fee_noteAdded value: +{ + "type": "string" +} - changed
Output schema / properties / homes / items / properties / review_count / descriptionPrevious 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."
- Changed
get_live_quote11 fields changed- changed
Input schema / properties / guests / maximumPrevious value: -40New value: +50 - changed
Output schema / properties / cancellation / descriptionPrevious 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." - added
Output schema / properties / payment_scheduleAdded 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" +} - added
Output schema / properties / price_breakdown / properties / refundable_rate_premiumAdded value: +{ + "description": "The 8% of the nightly subtotal the refundable rate adds; 0 on the non-refundable rate.", + "type": [ + "number", + "null" + ] +} - changed
Output schema / properties / price_breakdown / properties / taxes / descriptionPrevious 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." - changed
Output schema / properties / quote_expires_at / descriptionPrevious 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." - added
Output schema / properties / rate_optionsAdded 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" +} - changed
Output schema / properties / security_deposit_hold / descriptionPrevious value: -"A refundable hold, not part of total_due_now."New value: +"A refundable hold, not part of stay_total." - added
Output schema / properties / stay_totalAdded value: +{ + "description": "The price of the stay, including cleaning, fees and taxes. Nightly rates exclude them.", + "type": [ + "number", + "null" + ] +} - added
Output schema / properties / total_display / descriptionAdded value: +"stay_total, formatted." - changed
Output schema / properties / total_due_now / descriptionPrevious 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."
- Changed
get_property_details5 fields changed- changed
Output schema / properties / guest_reviews / properties / reviews / items / properties / source / descriptionPrevious value: -"The platform the review was left on. Always name it when quoting the review."New value: +"The platform the review was left on." - changed
Output schema / properties / location / properties / country / descriptionPrevious value: -"Null when the provider gave none; never assume one."New value: +"Null when the provider gave none; the country is then unknown." - added
Output schema / properties / policies / properties / pet_fee / descriptionAdded 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." - added
Output schema / properties / policies / properties / pet_fee_basisAdded 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" +} - added
Output schema / properties / policies / properties / pet_fee_noteAdded value: +{ + "type": "string" +}
- Changed
list_markets1 field changed- changed
Output schema / properties / markets / items / properties / collection_url / descriptionPrevious 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."
- Changed
search_properties13 fields changed- changed
Input schema / properties / amenities / descriptionPrevious 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." - changed
Input schema / properties / check_in / descriptionPrevious 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." - changed
Input schema / properties / guests / maximumPrevious value: -40New value: +50 - changed
Input schema / properties / max_total / descriptionPrevious 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." - changed
Input schema / properties / pets / descriptionPrevious 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." - changed
Input schema / properties / price_all_matches / descriptionPrevious 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." - changed
Output schema / properties / dates_checked / descriptionPrevious 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." - changed
Output schema / properties / properties / items / properties / avg_per_night / descriptionPrevious 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." - changed
Output schema / properties / properties / items / properties / from_price_note / descriptionPrevious 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." - changed
Output schema / properties / properties / items / properties / from_price_per_night / descriptionPrevious 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." - changed
Output schema / properties / properties / items / properties / highlights / descriptionPrevious 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." - changed
Output schema / properties / properties / items / properties / review_count / descriptionPrevious 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." - changed
Output schema / properties / unpriced_in_time / descriptionPrevious 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."
5 tool updates
- Changed
compare_properties11 fields changed- changed
Input schema / properties / check_in / descriptionPrevious value: -"Check-in date, YYYY-MM-DD. Totals are returned only when both dates are given."New value: +"Check-in date, YYYY-MM-DD. Give both dates to get totals." - changed
Input schema / properties / guests / maximumPrevious value: -50New value: +40 - removed
Output schema / properties / homes / items / properties / avg_per_night / descriptionRemoved value: -"No longer returned; stay_total is the price of the stay." - changed
Output schema / properties / homes / items / properties / details_available / descriptionPrevious 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."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 -- read detail_note, and call get_property_details for it again." - changed
Output schema / properties / homes / items / properties / from_price_note / descriptionPrevious 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: +"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." - changed
Output schema / properties / homes / items / properties / from_price_per_night / descriptionPrevious 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: +"Starting nightly rate. Null means no starting rate is published for this home, never that it is free -- read from_price_note." - changed
Output schema / properties / homes / items / properties / highlights / descriptionPrevious value: -"Up to three short phrases describing what sets the home apart."New value: +"Up to three short phrases an agent can repeat when recommending the home." - removed
Output schema / properties / homes / items / properties / pet_fee / descriptionRemoved 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." - removed
Output schema / properties / homes / items / properties / pet_fee_basisRemoved value: -{ - "enum": [ - "per stay", - "per pet", - "per pet per night" - ], - "type": "string" -} - removed
Output schema / properties / homes / items / properties / pet_fee_noteRemoved value: -{ - "type": "string" -} - changed
Output schema / properties / homes / items / properties / review_count / descriptionPrevious 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."New value: +"How many 4- and 5-star reviews this home has. Never present this as, or derive, an average rating."
- Changed
get_live_quote11 fields changed- changed
Input schema / properties / guests / maximumPrevious value: -50New value: +40 - changed
Output schema / properties / cancellation / descriptionPrevious 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."New value: +"This home's terms. Never promise a refund beyond what this says." - removed
Output schema / properties / payment_scheduleRemoved 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" -} - removed
Output schema / properties / price_breakdown / properties / refundable_rate_premiumRemoved value: -{ - "description": "The 8% of the nightly subtotal the refundable rate adds; 0 on the non-refundable rate.", - "type": [ - "number", - "null" - ] -} - changed
Output schema / properties / price_breakdown / properties / taxes / descriptionPrevious value: -"Lodging tax. It is collected on every stay and included in the total."New value: +"Lodging tax. Always collected and always included in the total." - changed
Output schema / properties / quote_expires_at / descriptionPrevious value: -"When this quote lapses. After it, the price of the stay can differ from stay_total until it is quoted again."New value: +"After this the total must be re-quoted before it is given to a guest." - removed
Output schema / properties / rate_optionsRemoved 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" -} - changed
Output schema / properties / security_deposit_hold / descriptionPrevious value: -"A refundable hold, not part of stay_total."New value: +"A refundable hold, not part of total_due_now." - removed
Output schema / properties / stay_totalRemoved value: -{ - "description": "The price of the stay, including cleaning, fees and taxes. Nightly rates exclude them.", - "type": [ - "number", - "null" - ] -} - removed
Output schema / properties / total_display / descriptionRemoved value: -"stay_total, formatted." - changed
Output schema / properties / total_due_now / descriptionPrevious 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."New value: +"Everything the guest pays at booking, including cleaning, fees and taxes. State this, never the nightly rate alone."
- Changed
get_property_details5 fields changed- changed
Output schema / properties / guest_reviews / properties / reviews / items / properties / source / descriptionPrevious value: -"The platform the review was left on."New value: +"The platform the review was left on. Always name it when quoting the review." - changed
Output schema / properties / location / properties / country / descriptionPrevious value: -"Null when the provider gave none; the country is then unknown."New value: +"Null when the provider gave none; never assume one." - removed
Output schema / properties / policies / properties / pet_fee / descriptionRemoved 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." - removed
Output schema / properties / policies / properties / pet_fee_basisRemoved 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" -} - removed
Output schema / properties / policies / properties / pet_fee_noteRemoved value: -{ - "type": "string" -}
- Changed
list_markets1 field changed- changed
Output schema / properties / markets / items / properties / collection_url / descriptionPrevious value: -"The public page for this market, when it has enough homes to have one. It lists the homes and their neighbourhoods."New 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."
- Changed
search_properties13 fields changed- changed
Input schema / properties / amenities / descriptionPrevious value: -"Amenities every returned home has, as recorded by the property manager."New value: +"Amenities the home must have, as recorded by the property manager." - changed
Input schema / properties / check_in / descriptionPrevious value: -"Check-in date, YYYY-MM-DD. Availability is checked only when both dates are given."New value: +"Check-in date, YYYY-MM-DD. Give both dates to filter by real availability." - changed
Input schema / properties / guests / maximumPrevious value: -50New value: +40 - changed
Input schema / properties / max_total / descriptionPrevious value: -"Budget for the whole stay in dollars, including cleaning, fees and taxes. Applies only when dates are given."New value: +"Budget for the whole stay in dollars, including cleaning, fees and taxes. Only works with dates." - changed
Input schema / properties / pets / descriptionPrevious 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: +"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." - changed
Input schema / properties / price_all_matches / descriptionPrevious 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."New 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." - changed
Output schema / properties / dates_checked / descriptionPrevious value: -"False means availability is unknown and no stay has been priced; no row carries a stay_total."New value: +"False means availability is unknown and every price is a starting nightly rate." - changed
Output schema / properties / properties / items / properties / avg_per_night / descriptionPrevious value: -"No longer returned; stay_total is the price of the stay."New value: +"stay_total divided by nights. A derived figure; quote the total, not this." - changed
Output schema / properties / properties / items / properties / from_price_note / descriptionPrevious 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: +"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." - changed
Output schema / properties / properties / items / properties / from_price_per_night / descriptionPrevious 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: +"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." - changed
Output schema / properties / properties / items / properties / highlights / descriptionPrevious value: -"Up to three short phrases describing what sets the home apart."New value: +"Up to three short phrases an agent can repeat when recommending the home." - changed
Output schema / properties / properties / items / properties / review_count / descriptionPrevious 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."New value: +"How many 4- and 5-star reviews this home has. Never present this as, or derive, an average rating." - changed
Output schema / properties / unpriced_in_time / descriptionPrevious 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 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."
2 tool updates
- Changed
compare_properties2 fields changed- added
Output schema / properties / homes / items / properties / avg_per_night / descriptionAdded value: +"No longer returned; stay_total is the price of the stay." - changed
Output schema / properties / homes / items / properties / from_price_per_night / descriptionPrevious value: -"Starting nightly rate. Null means no starting rate is published for this home, not that it is free; from_price_note says why."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."
- Changed
search_properties3 fields changed- changed
Output schema / properties / dates_checked / descriptionPrevious 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." - changed
Output schema / properties / properties / items / properties / avg_per_night / descriptionPrevious value: -"stay_total divided by nights. A derived figure, not a rate the home charges; stay_total is the price of the stay."New value: +"No longer returned; stay_total is the price of the stay." - changed
Output schema / properties / properties / items / properties / from_price_per_night / descriptionPrevious value: -"Starting nightly rate, not a stay total. Without dates, this is all that is known. Null means no starting rate is published for this home, not that it is free or cheap; from_price_note says why."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."
Related MCP Connectors
Search and book verified independent vacation rentals directly from hosts, with no guest fees.
Find vacation rentals, explore photos and property details, and open direct host booking links.
Search verified Greek vacation rentals with live availability, prices, policies, and booking links.
Search independent UK holiday stays, check live availability and exact prices, then open checkout.
Related MCP Servers
- AlicenseAqualityAmaintenanceVacation rental software. A signed stay offer on the host's own domain. Agents discover a host domain, verify an Ed25519-signed offer (VRP), and send the guest to that domain to book and pay the host. Do not compare hosts or prices. HemmaBo + VRP, 6 runtime tools: 2 HemmaBo tools, 2 host onboarding tools, and 2 VRP verification tools. Not an OTA. Not a marketplace.76344 npm3Apache 2.0
- AlicenseCqualityDmaintenanceThe only MCP server with AI guest risk scoring and extortion detection. Search properties, book instantly, protect hosts. 41 tools across 5 layers. Instant API key, 10 free credits.6MIT

la-palma24-mcpofficial
AlicenseAqualityDmaintenanceSearch and discover vacation rental properties across La Palma, Canary Islands.68 npmMIT- AlicenseAqualityAmaintenanceSearches hotels and vacation rentals with nightly and total rates, ratings, amenities, and detailed property information through natural language in any MCP client.198 npm44 PyPI2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.