Threshold
Search and book verified independent vacation rentals directly from hosts, with no guest fees.
¿Debería usar esto?
Calidad y seguridad
Basado en el análisis automatizado de las definiciones de herramientas y el cumplimiento del protocolo.
Costo de contexto
Este es el número aproximado de tokens que se consumen cada vez que las herramientas del servidor se cargan en el contexto de un modelo. Los recuentos más altos reducen la atención disponible para otras tareas.
Instalar
Instalación con un clic
Agrega esto a tu archivo `claude_desktop_config.json`:
{
"mcpServers": {
"stays": {
"url": "https://threshold.rentals/api/mcp"
}
}
}Puntos de conexión remotos
https://threshold.rentals/api/mcpstreamable-httpQué puede hacer
Inventario de herramientas
Herramientas (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.
Esquema de entrada
{
"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}.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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}.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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.
Esquema de entrada
{
"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"
]
}Comunidad
Evidencia