Threshold
Measured conclusion: Deep-tested. L2 outcome: tools_ok.
Search and book verified independent vacation rentals directly from hosts, with no guest fees.
| Author | rentals.threshold |
|---|---|
| Access | remote |
| Publisher key required | No |
| Measured state | Deep-tested |
| L1 liveness | alive |
| L1 latency | 2464 ms |
| Last measured | 2026-10-24 |
Add to your agent
Copy this into your MCP client config:
{
"mcpServers": {
"Threshold": {
"url": "https://threshold.rentals/api/mcp",
"transport": "streamable-http"
}
}
}
Measured tools (10)
search_staysread-onlyFind verified independent vacation rentals. Filters are strict: every listed amenity must be present. With dates, results include a cached availability signal and an indicative all-in total (no guest service fee). Maps to GET /v1/search.
Parameters:
pets— integer — Number of pets. Only places that allow that many are returned. Service animals don't count as pets.limit— integer — Most results to return, 1 to 50. Default 8.place— string — Town and state/country, e.g. 'Asheville, NC'. Use near_lat/near_lng instead when you have coordinates.adults— integer — Number of adults. Default 2.infants— integer — Number of infants under 2.check_in— string — Arrival date, YYYY-MM-DD. With check_out, only places free for the whole stay are returned, with an indicative total.children— integer — Number of children aged 2 to 12.near_lat— number — Latitude to search around, with near_lng. Use instead of place when you have coordinates.near_lng— number — Longitude to search around, with near_lat.amenities— array — Amenity codes, e.g. hot_tub, wifi, ev_charger, dedicated_workspace, pool, fireplace_wood.check_out— string — Departure date, YYYY-MM-DD (the morning the guests leave).radius_km— number — How far from near_lat/near_lng to search, in kilometres. Default 30.instant_only— boolean — True to return only places that confirm instantly, without waiting for the host.min_bedrooms— integer — Fewest bedrooms the place must have.max_total_usd— number — Maximum all-in total in dollars. Requires dates.min_wifi_mbps— number — Lowest Wi-Fi download speed needed, in megabits per second.step_free_entrance— boolean — True to return only places with a step-free way in.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_propertyread-onlyFull record for one property: beds by room, amenities with details, access and stairs, rules, host FAQ, policies, and verification status. The location is approximate on purpose: the exact address and the host's direct contact details are not in the record and are sent to the guest after a confirmed booking, so if asked, say that rather than that they are missing. Maps to GET /v1/properties/{id}.
Parameters:
property_id(required) — string — The property's id, from search_stays (starts with prop_).
Hints: read-only yes · destructive no · idempotent not declared · open-world no
check_availabilityread-onlyDay-by-day availability and indicative nightly prices for up to 180 days. Cached; use get_quote to confirm. Useful when the guest's dates are flexible. Maps to GET /v1/properties/{id}/availability.
Parameters:
property_id(required) — string — The property's id, from search_stays.from(required) — string — First night to check, YYYY-MM-DD.to(required) — string — Exclusive
Hints: read-only yes · destructive no · idempotent not declared · open-world no
get_quoteread-onlyItemized, binding price for exact dates and party, after re-checking the host's live calendars. Valid 10 minutes. Returns house rules and an exact refund schedule to show the guest. Does not reserve the dates. Maps to POST /v1/properties/{id}/quotes.
Parameters:
property_id(required) — string — The property's id, from search_stays.check_in(required) — string — Arrival date, YYYY-MM-DD.check_out(required) — string — Departure date, YYYY-MM-DD.adults(required) — integer — Number of adults (at least 1).pets— integer — Number of pets. Default 0. Service animals don't count.infants— integer — Number of infants under 2. Default 0.children— integer — Number of children aged 2 to 12. Default 0.
Hints: read-only yes · destructive no · idempotent yes · open-world no
get_bookingread-onlyStatus, amounts, refund schedule, guest ID verification link, and when arrival details will be sent. Maps to GET /v1/bookings/{id}. Pass guest_email (the email the booking was made with) unless you connect with an agent token.
Parameters:
booking_id(required) — string — The booking's id, from request_booking (starts with bkg_).guest_email— string — The email the booking was made with. Needed unless you connect with an agent token.
Hints: read-only yes · destructive no · idempotent not declared · open-world no
ask_hostSend a question the property record and FAQ don't answer. The answer arrives later; tell the guest you'll follow up. Don't include the guest's contact details. Maps to POST /v1/properties/{id}/questions.
Parameters:
property_id(required) — string — The property the question is about.question(required) — string — The guest's question, in plain words, up to 500 characters. The host's answer may be added to the listing's FAQ.
Hints: read-only no · destructive no · idempotent not declared · open-world yes
get_messagesread-onlyThe conversation between the guest and the host about a booking, oldest first (including the guest's note with the request and the host's note when accepting or declining). Use it to relay the host's replies. Pass guest_email (the email the booking was made with) unless you connect with an agent token.
Parameters:
booking_id(required) — string — The booking's id, from request_booking (starts with bkg_).guest_email— string — The email the booking was made with. Needed unless you connect with an agent token.
Hints: read-only yes · destructive no · idempotent not declared · open-world yes
send_messageSend a message to the host on the guest's behalf, e.g. a question about check-in or a late arrival. Only send what the guest asked you to say. The host is emailed and replies appear in get_messages. Open from the request until two weeks after check-out.
Parameters:
booking_id(required) — string — The booking the message is about.body(required) — string — The message to the host, in the guest's words, up to 2,000 characters.guest_email— string — The email the booking was made with. Needed unless you connect with an agent token.
Hints: read-only no · destructive no · idempotent not declared · open-world yes
cancel_bookingdestructiveTwo-step. First call with confirm=false to see what the guest gets back if they cancel now (nothing changes). Tell the guest that refund and get their go-ahead, then call again with confirm=true and expected_refund_cents set to the refund amount from the first call. If the refund changed in between, the call fails with refund_changed instead of cancelling. Refunds go to the guest's card automatically. Pass guest_email (the email the booking was made with) unless you connect with an agent token.
Parameters:
booking_id(required) — string — The booking or request to cancel.confirm(required) — boolean — False to preview the refund without changing anything; true to cancel.guest_email— string — The email the booking was made with. Needed unless you connect with an agent token.expected_refund_cents— integer — Required when confirm is true: refund.amount from the confirm=false call.
Hints: read-only no · destructive yes · idempotent yes · open-world yes
request_bookingRequest a stay from a quote. Set house_rules_accepted only after the guest has seen and agreed to the quote's house_rules. If the quote's payment.collected_by is "threshold", the booking starts as awaiting_payment and the response includes payment_url: the guest must open payment_url and add a card within 60 minutes, after which the host gets the request (status pending_host_confirmation). Otherwise the request goes to the host immediately and the host arranges payment after accepting. Returns the booking and a status link to give the guest; poll get_booking for changes.
Parameters:
quote_id(required) — string — The quote being booked, from get_quote (starts with quo_).first_name(required) — string — The guest's first name.last_name(required) — string — The guest's last name.email(required) — string — The guest's email: confirmations, the payment link and the host's messages go there.house_rules_accepted(required) — boolean — True only after the guest has seen and agreed to the quote's house_rules.phone— string — The guest's phone number in international format, e.g. +15551234567. Optional.special_requests— string — Anything the guest wants the host to know, in their words (arrival time, a question). Optional, up to 500 characters.
Hints: read-only no · destructive no · idempotent not declared · open-world yes
Measured by MCPYP probing. Untested fields are omitted, never estimated. Listing is always free; MCPYP never proxies calls or stores user tokens.