Threshold
by threshold.rentals · remote · no sign-in to list tools · v0.1.0 · published by rentals.threshold
Search and book verified independent vacation rentals directly from hosts, with no guest fees.
10 tools: 1 can delete or cancel things, 3 do something that can't be undone, 1 change things and 5 only read.
Scanned Oct 21, 2026
- Deletes or cancels1Claude Code: deny: see these tools
- Can't be undone3Claude Code: ask: see these tools
- Changes things1Claude Code: ask: see these tools
- Only reads5Claude Code: allow: see these tools
1 check matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http stays https://threshold.rentals/api/mcpFindings
Matches of fixed checks, with the text they matched.
The server marks "check_availability" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
10 tools
Deletes or cancels 1Claude Code: deny
cancel_bookingTwo-step.No findings
Why it is in this group
- The name "cancel_booking" says "cancel": a word for removing or ending something.
- The server marks it destructive (destructiveHint: true).
Description, as the server wrote it 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.
Annotations the server declares
- title: Cancel a booking or request
- readOnlyHint: false
- destructiveHint: true
- idempotentHint: true
- openWorldHint: true
Can't be undone 3Claude Code: ask
ask_hostSend a question the property record and FAQ don't answer.No findings
Why it is in this group
- The description's first verb is "send": a word for sending, and what is sent cannot be taken back.
Description, as the server wrote it 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.
Annotations the server declares
- title: Ask the host a question
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
check_availabilityDay-by-day availability and indicative nightly prices for up to 180 days.1 finding
Why it is in this group
- The input addresses people (input.to): what it sends cannot be taken back.
- The server marks it read-only (readOnlyHint: true), but an annotation never lowers a class.
Findings
- Warn
The server marks "check_availability" read-only (readOnlyHint: true), and its own name, description or input give the class "irreversible".
What this check looks forMatched text
annotations: {"readOnlyHint":true,"destructiveHint":false,"openWorldHint":false}; The input addresses people (input.to): what it sends cannot be taken back.
Description, as the server wrote it 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.
Annotations the server declares
- title: Check a property's calendar
- readOnlyHint: true
- openWorldHint: false
- destructiveHint: false
send_messageSend a message to the host on the guest's behalf, e.g.No findings
Why it is in this group
- The name "send_message" says "send": a word for sending, and what is sent cannot be taken back.
Description, as the server wrote it 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.
Annotations the server declares
- title: Message the host
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
Changes things 1Claude Code: ask
request_bookingRequest a stay from a quote.No findings
Why it is in this group
- The name "request_booking" says "request": a word for a change.
Description, as the server wrote it 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.
Annotations the server declares
- title: Request to book
- readOnlyHint: false
- destructiveHint: false
- openWorldHint: true
Only reads 5Claude Code: allow
get_bookingStatus, amounts, refund schedule, guest ID verification link, and when arrival details will be sent.No findings
Why it is in this group
- The name "get_booking" says "get": a word for reading.
Description, as the server wrote it Status, amounts, refund schedule, guest ID verification link, and when arrival details will be sent. Maps to GET /v1/bookings/{id}.
Annotations the server declares
- title: Get booking status
- readOnlyHint: true
- openWorldHint: false
- destructiveHint: false
get_messagesThe 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).No findings
Why it is in this group
- The name "get_messages" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Read messages with the host
- readOnlyHint: true
- openWorldHint: true
- destructiveHint: false
get_propertyFull record for one property: beds by room, amenities with details, access and stairs, rules, host FAQ, policies, and verification status.No findings
Why it is in this group
- The name "get_property" says "get": a word for reading.
Description, as the server wrote it 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}.
Annotations the server declares
- title: Get property details
- readOnlyHint: true
- openWorldHint: false
- destructiveHint: false
get_quoteItemized, binding price for exact dates and party, after re-checking the host's live calendars.No findings
Why it is in this group
- The name "get_quote" says "get": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Get a binding price
- readOnlyHint: true
- idempotentHint: true
- openWorldHint: false
- destructiveHint: false
search_staysFind verified independent vacation rentals.No findings
Why it is in this group
- The name "search_stays" says "search": a word for reading.
Description, as the server wrote it 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.
Annotations the server declares
- title: Search vacation rentals
- readOnlyHint: true
- openWorldHint: false
- destructiveHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 0.1.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http stays https://threshold.rentals/api/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__stays__search_stays",
"mcp__stays__get_property",
"mcp__stays__get_quote",
"mcp__stays__get_booking",
"mcp__stays__get_messages"
],
"ask": [
"mcp__stays__check_availability",
"mcp__stays__ask_host",
"mcp__stays__send_message",
"mcp__stays__request_booking"
],
"deny": [
"mcp__stays__cancel_booking"
]
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as stays. Review it before you use it.