Threshold
REMOTE · THRESHOLD.RENTALS
Search and book verified independent vacation rentals directly from hosts, with no guest fees.
Available components
Last scanned (8 hours ago)
Scores higher than 68% of remote servers
Reachable. Last reached 24 Oct 2026.
Category E-commerce
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security63
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- Authorisation check failed: no authorisation is required to call this server, and it exposes a tool marked destructive (cancel_booking). See how to fix → View diagnostics → Fail
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- The HSTS (Strict-Transport-Security) header is present. View diagnostics → Pass
- DNSSEC check failed: this domain isn't protected by DNSSEC. See how to fix → View diagnostics → Fail
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability65
- AI-judged instruction clarity (excellent).Pass
- Context-footprint check failed: tool/resource definitions use about 2281 tokens (~228/item across 10 items; 10 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management73
- Stability observed for 22 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
- Structured output schemas are declared (100% of tools); any adoption earns full credit.Pass
Tool Safety100
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- All 1 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation.Pass
- An AI judge read all 11 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities100
- Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 24 Oct 26 0
- Tool “get_booking” rewrote its description, which is the text the model reads security
- “get_booking” added an optional parameter “guest_email” cosmetic
- 23 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 67 to 70. That category is still filling its 30-day observation window: 20 days of observed history at the previous scan, 21 at this one. The score rises as the window fills, whether or not the server changes.
- 21 Oct 26 +1
- The server rewrote its instructions, which are the text every model session reads security
- 19 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 53 to 57. That category is still filling its 30-day observation window: 16 days of observed history at the previous scan, 17 at this one. The score rises as the window fills, whether or not the server changes.
- 17 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 47 to 50. That category is still filling its 30-day observation window: 14 days of observed history at the previous scan, 15 at this one. The score rises as the window fills, whether or not the server changes.
- 15 Oct 26 +3
- Schema quality: 174 → 227 ▼ functional
- Tool coverage: 11% → 100% ▲ functional
- Tool “ask_host” now declares an output schema ▲ functional
- Tool “cancel_booking” now declares an output schema ▲ functional
- Tool “check_availability” now declares an output schema ▲ functional
- Tool “get_booking” now declares an output schema ▲ functional
- Tool “get_messages” now declares an output schema ▲ functional
- Tool “get_property” now declares an output schema ▲ functional
- Tool “get_quote” now declares an output schema ▲ functional
- Tool “request_booking” now declares an output schema ▲ functional
- Tool “search_stays” now declares an output schema ▲ functional
- Tool “send_message” now declares an output schema ▲ functional
- First check of Tool coverage: 100 functional
- Schema quality: good → excellent functional
- “ask_host” reworded the description of “property_id” cosmetic
- “ask_host” reworded the description of “question” cosmetic
- “cancel_booking” reworded the description of “booking_id” cosmetic
- “cancel_booking” reworded the description of “confirm” cosmetic
- “cancel_booking” reworded the description of “guest_email” cosmetic
- “check_availability” reworded the description of “from” cosmetic
- “check_availability” reworded the description of “property_id” cosmetic
- “get_booking” reworded the description of “booking_id” cosmetic
- “get_messages” reworded the description of “booking_id” cosmetic
- “get_messages” reworded the description of “guest_email” cosmetic
- “get_property” reworded the description of “property_id” cosmetic
- “get_quote” reworded the description of “adults” cosmetic
- “get_quote” reworded the description of “check_in” cosmetic
- “get_quote” reworded the description of “check_out” cosmetic
- “get_quote” reworded the description of “children” cosmetic
- “get_quote” reworded the description of “infants” cosmetic
- “get_quote” reworded the description of “pets” cosmetic
- “get_quote” reworded the description of “property_id” cosmetic
- “request_booking” reworded the description of “email” cosmetic
- “request_booking” reworded the description of “first_name” cosmetic
- “request_booking” reworded the description of “house_rules_accepted” cosmetic
- “request_booking” reworded the description of “last_name” cosmetic
- “request_booking” reworded the description of “phone” cosmetic
- “request_booking” reworded the description of “quote_id” cosmetic
- “request_booking” reworded the description of “special_requests” cosmetic
- “search_stays” reworded the description of “adults” cosmetic
- “search_stays” reworded the description of “check_in” cosmetic
- “search_stays” reworded the description of “check_out” cosmetic
- “search_stays” reworded the description of “children” cosmetic
- “search_stays” reworded the description of “infants” cosmetic
- “search_stays” reworded the description of “instant_only” cosmetic
- “search_stays” reworded the description of “limit” cosmetic
- “search_stays” reworded the description of “min_bedrooms” cosmetic
- “search_stays” reworded the description of “min_wifi_mbps” cosmetic
- “search_stays” reworded the description of “near_lat” cosmetic
- “search_stays” reworded the description of “near_lng” cosmetic
- “search_stays” reworded the description of “pets” cosmetic
- “search_stays” reworded the description of “radius_km” cosmetic
- “search_stays” reworded the description of “step_free_entrance” cosmetic
- “send_message” reworded the description of “body” cosmetic
- “send_message” reworded the description of “booking_id” cosmetic
- “send_message” reworded the description of “guest_email” cosmetic
- 14 Oct 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 37 to 40. That category is still filling its 30-day observation window: 11 days of observed history at the previous scan, 12 at this one. The score rises as the window fills, whether or not the server changes.
- 12 Oct 26 +1
- The server rewrote its instructions, which are the text every model session reads security
- Tool “get_property” rewrote its description, which is the text the model reads security
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 24 Oct 2026 · Probed https://threshold.rentals/api/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=threshold.rentals | CN=YR2,O=Let's Encrypt,C=US | 29 Sept 2026 | 28 Dec 2026 | RSA 2048 | SHA256-RSA | 6e651054d6f4e37370a11ce2de56cb23716 |
| SANs: threshold.rentals, www.threshold.rentals | ||||||
| CN=YR2,O=Let's Encrypt,C=US (CA) | CN=Root YR,O=ISRG,C=US | 3 Sept 2025 | 2 Sept 2028 | RSA 2048 | SHA256-RSA | 4ebd24947e24d394802d84a52fd5b319 |
| CN=Root YR,O=ISRG,C=US (CA) | CN=ISRG Root X1,O=Internet Security Research Group,C=US | 13 May 2026 | 2 Sept 2032 | RSA 4096 | SHA256-RSA | f24b6d17f9d9ad7cb1c9fea78782699f |
Background: What to check on a remote MCP endpoint →
DNSSEC insecure
Validation of threshold.rentals. — Not signed
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| rentals. | present | 33616 | 8 | Verified |
| threshold.rentals. | absent | Unsigned (proven) parent-signed NSEC/NSEC3 proves an unsigned delegation |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| strict-transport-security | max-age=63072000 |
| content-security-policy | frame-ancestors 'self' |
| x-content-type-options | nosniff |
| x-frame-options | SAMEORIGIN |
| referrer-policy | strict-origin-when-cross-origin |
| permissions-policy | camera=(self), microphone=(self), geolocation=(self), payment=(self "https://js.stripe.com"), usb=(), serial=(), bluetooth=() |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://threshold.rentals/api/mcp | Verified | 200 | |
| http (plaintext) | http://threshold.rentals/api/mcp | HTTPS enforced | 308 | https://threshold.rentals/api/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
ask_host Ask the host a question ~100
Send 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.
| Name | Type | Req | Description |
|---|---|---|---|
| property_id | string | yes | The property the question is about. |
| question | string | yes | The guest's question, in plain words, up to 500 characters. The host's answer may be added to the listing's FAQ. |
| Name | Type | Req | Description |
|---|---|---|---|
| answer | string|null | – | – |
| status | string | – | – |
No examples provided.
cancel_booking Cancel a booking or request ~193
Two-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.
| Name | Type | Req | Description |
|---|---|---|---|
| booking_id | string | yes | The booking or request to cancel. |
| confirm | boolean | yes | False to preview the refund without changing anything; true to cancel. |
| expected_refund_cents | integer | – | Required when confirm is true: refund.amount from the confirm=false call. |
| guest_email | string | – | The email the booking was made with. Needed unless you connect with an agent token. |
| Name | Type | Req | Description |
|---|---|---|---|
| booking | object | – | – |
| refund | object | – | An amount in cents with its currency. |
No examples provided.
check_availability Check a property's calendar ~93
Day-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.
| Name | Type | Req | Description |
|---|---|---|---|
| from | string | yes | First night to check, YYYY-MM-DD. |
| property_id | string | yes | The property's id, from search_stays. |
| to | string | yes | Exclusive |
| Name | Type | Req | Description |
|---|---|---|---|
| days | array | – | – |
| property_id | string | – | – |
| timezone | string | – | – |
No examples provided.
get_booking Get booking status ~105
Status, 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.
| Name | Type | Req | Description |
|---|---|---|---|
| booking_id | string | yes | 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| check_in | string | – | – |
| check_out | string | – | – |
| id | string | – | – |
| property_id | string | – | – |
| status | string | – | e.g. awaiting_payment, pending_host_confirmation, confirmed, declined, cancelled. |
| total | object | – | An amount in cents with its currency. |
No examples provided.
get_messages Read messages with the host ~116
The 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.
| Name | Type | Req | Description |
|---|---|---|---|
| booking_id | string | yes | 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. |
| Name | Type | Req | Description |
|---|---|---|---|
| messages | array | – | – |
No examples provided.
get_property Get property details ~115
Full 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}.
| Name | Type | Req | Description |
|---|---|---|---|
| property_id | string | yes | The property's id, from search_stays (starts with prop_). |
| Name | Type | Req | Description |
|---|---|---|---|
| amenities | array | – | – |
| capacity | object | – | – |
| faq | array | – | – |
| id | string | – | – |
| listing | object | – | – |
| location | object | – | – |
| policies | object | – | – |
| rules | object | – | – |
No examples provided.
get_quote Get a binding price ~181
Itemized, 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.
| Name | Type | Req | Description |
|---|---|---|---|
| adults | integer | yes | Number of adults (at least 1). |
| check_in | string | yes | Arrival date, YYYY-MM-DD. |
| check_out | string | yes | Departure date, YYYY-MM-DD. |
| children | integer | – | Number of children aged 2 to 12. Default 0. |
| infants | integer | – | Number of infants under 2. Default 0. |
| pets | integer | – | Number of pets. Default 0. Service animals don't count. |
| property_id | string | yes | The property's id, from search_stays. |
| Name | Type | Req | Description |
|---|---|---|---|
| booking_mode | string | – | – |
| check_in | string | – | – |
| check_out | string | – | – |
| expires_at | string | – | – |
| house_rules | array | – | – |
| id | string | – | – |
| line_items | array | – | – |
| nights | integer | – | – |
| payment | object | – | – |
| property_id | string | – | – |
| refund_schedule | array | – | – |
| total | object | – | An amount in cents with its currency. |
No examples provided.
request_booking Request to book ~279
Request 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.
| Name | Type | Req | Description |
|---|---|---|---|
| string | yes | The guest's email: confirmations, the payment link and the host's messages go there. | |
| first_name | string | yes | The guest's first name. |
| house_rules_accepted | boolean | yes | True only after the guest has seen and agreed to the quote's house_rules. |
| last_name | string | yes | The guest's last name. |
| phone | string | – | The guest's phone number in international format, e.g. +15551234567. Optional. |
| quote_id | string | yes | The quote being booked, from get_quote (starts with quo_). |
| special_requests | string | – | Anything the guest wants the host to know, in their words (arrival time, a question). Optional, up to 500 characters. |
| Name | Type | Req | Description |
|---|---|---|---|
| booking | object | – | The booking. |
| payment_url | string | – | When present, the guest opens this to add a card; the request reaches the host only after that. |
No examples provided.
search_stays Search vacation rentals ~439
Find 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.
| Name | Type | Req | Description |
|---|---|---|---|
| adults | integer | – | Number of adults. Default 2. |
| amenities | array | – | Amenity codes, e.g. hot_tub, wifi, ev_charger, dedicated_workspace, pool, fireplace_wood. |
| check_in | string | – | Arrival date, YYYY-MM-DD. With check_out, only places free for the whole stay are returned, with an indicative total. |
| check_out | string | – | Departure date, YYYY-MM-DD (the morning the guests leave). |
| children | integer | – | Number of children aged 2 to 12. |
| infants | integer | – | Number of infants under 2. |
| instant_only | boolean | – | True to return only places that confirm instantly, without waiting for the host. |
| limit | integer | – | Most results to return, 1 to 50. Default 8. |
| max_total_usd | number | – | Maximum all-in total in dollars. Requires dates. |
| min_bedrooms | integer | – | Fewest bedrooms the place must have. |
| min_wifi_mbps | number | – | Lowest Wi-Fi download speed needed, in megabits per second. |
| 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. |
| pets | integer | – | Number of pets. Only places that allow that many are returned. Service animals don't count as pets. |
| place | string | – | Town and state/country, e.g. 'Asheville, NC'. Use near_lat/near_lng instead when you have coordinates. |
| radius_km | number | – | How far from near_lat/near_lng to search, in kilometres. Default 30. |
| step_free_entrance | boolean | – | True to return only places with a step-free way in. |
| Name | Type | Req | Description |
|---|---|---|---|
| next_cursor | string|null | – | – |
| results | array | – | – |
No examples provided.
send_message Message the host ~129
Send 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.
| Name | Type | Req | Description |
|---|---|---|---|
| body | string | yes | The message to the host, in the guest's words, up to 2,000 characters. |
| booking_id | string | yes | The booking the message is about. |
| guest_email | string | – | The email the booking was made with. Needed unless you connect with an agent token. |
| Name | Type | Req | Description |
|---|---|---|---|
| message | object | – | The message. |
No examples provided.
How do I install the Threshold MCP server?
Threshold is a hosted endpoint at https://threshold.rentals/api/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · threshold.rentals
claude mcp add --transport http rentals-threshold-stays 'https://threshold.rentals/api/mcp'
What is the Threshold MCP server?
Threshold is an MCP server listed in the public MCP registry as rentals.threshold/stays. Search and book verified independent vacation rentals directly from hosts, with no guest fees. This page covers its hosted endpoint (https://threshold.rentals/api/mcp).
Is the Threshold MCP server safe to use?
Threshold scores 75 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Threshold MCP server expose?
Threshold exposes 10 tools: search_stays, get_property, check_availability, get_quote, get_booking, and 5 more. Their descriptions and schemas cost roughly 1,750 tokens of context every time the server is loaded.
Does the Threshold MCP server require authentication?
No. We connected to Threshold without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Threshold MCP server still maintained?
Threshold is still listed as active in the MCP registry. We last reached this channel on 24 October 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.