Threshold
Search and book verified independent vacation rentals directly from hosts, with no guest fees.
사용해야 할까요
품질 및 안전성
도구 정의와 프로토콜 준수에 대한 자동 분석을 기반으로 합니다.
컨텍스트 비용
이는 서버의 도구가 모델의 컨텍스트에 로드될 때마다 소비되는 대략적인 토큰 수입니다. 수치가 높을수록 다른 작업에 사용할 수 있는 주의가 줄어듭니다.
설치
원클릭 설치
`claude_desktop_config.json` 파일에 다음을 추가하세요:
{
"mcpServers": {
"stays": {
"url": "https://threshold.rentals/api/mcp"
}
}
}원격 엔드포인트
https://threshold.rentals/api/mcpstreamable-http할 수 있는 일
도구 목록
도구 (10)
🟢search_stays(place, near_lat, near_lng, radius_km, check_in, ...)
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.
입력 스키마
{
"type": "object",
"properties": {
"place": {
"type": "string",
"description": "Town and state/country, e.g. 'Asheville, NC'. Use near_lat/near_lng instead when you have coordinates."
},
"near_lat": {
"type": "number"
},
"near_lng": {
"type": "number"
},
"radius_km": {
"type": "number",
"default": 25
},
"check_in": {
"type": "string",
"format": "date"
},
"check_out": {
"type": "string",
"format": "date"
},
"adults": {
"type": "integer",
"minimum": 1,
"default": 2
},
"children": {
"type": "integer",
"minimum": 0
},
"infants": {
"type": "integer",
"minimum": 0
},
"pets": {
"type": "integer",
"minimum": 0
},
"min_bedrooms": {
"type": "integer"
},
"amenities": {
"type": "array",
"items": {
"type": "string"
},
"description": "Amenity codes, e.g. hot_tub, wifi, ev_charger, dedicated_workspace, pool, fireplace_wood."
},
"max_total_usd": {
"type": "number",
"description": "Maximum all-in total in dollars. Requires dates."
},
"instant_only": {
"type": "boolean"
},
"step_free_entrance": {
"type": "boolean"
},
"min_wifi_mbps": {
"type": "number"
},
"limit": {
"type": "integer",
"maximum": 20,
"default": 8
}
}
}🟢get_property(property_id)
Full record for one property: beds by room, amenities with details, access and stairs, rules, host FAQ, policies, and verification status. Maps to GET /v1/properties/{id}.
입력 스키마
{
"type": "object",
"properties": {
"property_id": {
"type": "string"
}
},
"required": [
"property_id"
]
}🟢check_availability(property_id, from, to)
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.
입력 스키마
{
"type": "object",
"properties": {
"property_id": {
"type": "string"
},
"from": {
"type": "string",
"format": "date"
},
"to": {
"type": "string",
"format": "date",
"description": "Exclusive"
}
},
"required": [
"property_id",
"from",
"to"
]
}🟢get_quote(property_id, check_in, check_out, adults, children, ...)
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.
입력 스키마
{
"type": "object",
"properties": {
"property_id": {
"type": "string"
},
"check_in": {
"type": "string",
"format": "date"
},
"check_out": {
"type": "string",
"format": "date"
},
"adults": {
"type": "integer",
"minimum": 1
},
"children": {
"type": "integer",
"minimum": 0,
"default": 0
},
"infants": {
"type": "integer",
"minimum": 0,
"default": 0
},
"pets": {
"type": "integer",
"minimum": 0,
"default": 0
}
},
"required": [
"property_id",
"check_in",
"check_out",
"adults"
]
}🟢get_booking(booking_id)
Status, amounts, refund schedule, guest ID verification link, and when arrival details will be sent. Maps to GET /v1/bookings/{id}.
입력 스키마
{
"type": "object",
"properties": {
"booking_id": {
"type": "string"
}
},
"required": [
"booking_id"
]
}🟡ask_host(property_id, question)
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.
입력 스키마
{
"type": "object",
"properties": {
"property_id": {
"type": "string"
},
"question": {
"type": "string",
"maxLength": 500
}
},
"required": [
"property_id",
"question"
]
}🟢get_messages(booking_id, guest_email)
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.
입력 스키마
{
"type": "object",
"properties": {
"booking_id": {
"type": "string"
},
"guest_email": {
"type": "string",
"format": "email"
}
},
"required": [
"booking_id"
]
}🟡send_message(booking_id, body, guest_email)
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.
입력 스키마
{
"type": "object",
"properties": {
"booking_id": {
"type": "string"
},
"body": {
"type": "string",
"maxLength": 2000
},
"guest_email": {
"type": "string",
"format": "email"
}
},
"required": [
"booking_id",
"body"
]
}🔴cancel_booking(booking_id, confirm, expected_refund_cents, guest_email)
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.
입력 스키마
{
"type": "object",
"properties": {
"booking_id": {
"type": "string"
},
"confirm": {
"type": "boolean"
},
"expected_refund_cents": {
"type": "integer",
"description": "Required when confirm is true: refund.amount from the confirm=false call."
},
"guest_email": {
"type": "string",
"format": "email"
}
},
"required": [
"booking_id",
"confirm"
]
}🟡request_booking(quote_id, first_name, last_name, email, phone, ...)
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.
입력 스키마
{
"type": "object",
"properties": {
"quote_id": {
"type": "string"
},
"first_name": {
"type": "string"
},
"last_name": {
"type": "string"
},
"email": {
"type": "string",
"format": "email"
},
"phone": {
"type": "string"
},
"house_rules_accepted": {
"type": "boolean"
},
"special_requests": {
"type": "string",
"maxLength": 500
}
},
"required": [
"quote_id",
"first_name",
"last_name",
"email",
"house_rules_accepted"
]
}커뮤니티
증거