Server definition
- Hash
- sha256:5f71ed90ba5955fd90e106db4d69dd558f489179da965ac1c25c4ee4b9df7570
- What it is
- What a remote MCP server returned when asked what it offers: 10 tools
The blob, as servednamed by its sha256
{
"instructions": "Threshold lists independent vacation rentals whose hosts are verified by Threshold. Search and availability are cached; always create a quote before telling the guest a final price. Show the guest the quote's house_rules and refund_schedule before checkout, and only set house_rules_accepted after they agree. Never invent amenities or answers: if the property record and FAQ don't answer a question, say so or use ask_host.\n\nEach quote's booking_mode says how booking works. \"instant\": the booking is confirmed as soon as the guest pays (or immediately, if the host collects payment). \"host_confirms\": it's a request the host accepts or declines within confirm_within_minutes. How the guest pays is in each quote's payment object:\n- collected_by \"threshold\": request_booking returns a payment_url. Give it to the guest; they add a card on a secure Stripe page (you never handle card details). Only then does the request reach the host. With plan \"full\" the card is authorized now and charged when the host accepts (at once for instant book); with plan \"pay_later\" nothing is charged until charge_date. The dates are held for 60 minutes while the guest pays; after that the request lapses.\n- collected_by \"host\": nothing is charged through Threshold; once accepted, the host contacts the guest to arrange payment.\nTell the guest plainly which applies, and the cancellation refund schedule, before requesting.\nIf the request_booking response includes agent_payment and you have a wallet that issues Stripe shared payment tokens (such as Stripe's Link agent wallet), you can pay without sending the guest to a page: POST to agent_payment.url, answer the 402 payment challenge with a token for agent_payment.network_id and the exact amount after the guest approves it, and the request goes to the host. The card is only authorized until the host accepts. If you can't, give the guest payment_url.\nTo cancel, use cancel_booking: preview the refund first, confirm it with the guest, then cancel.\nTo talk to the host about a booking (questions, arrival time), use send_message, and get_messages to read replies.\nThreshold charges guests no service fee, and a listing's direct total is set to about what the guest would pay for it on Airbnb, Vrbo or Booking.com, or less. Some hosts pass part of the saving on to guests: then the search result or quote has compare_at, and you can tell the guest the estimated saving (compare_at.savings). Describe it as an estimate, as compare_at.basis does.",
"tools": [
{
"description": "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.",
"inputSchema": {
"properties": {
"property_id": {
"type": "string"
},
"question": {
"maxLength": 500,
"type": "string"
}
},
"required": [
"property_id",
"question"
],
"type": "object"
},
"name": "ask_host",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"booking_id": {
"type": "string"
},
"confirm": {
"type": "boolean"
},
"expected_refund_cents": {
"description": "Required when confirm is true: refund.amount from the confirm=false call.",
"type": "integer"
},
"guest_email": {
"format": "email",
"type": "string"
}
},
"required": [
"booking_id",
"confirm"
],
"type": "object"
},
"name": "cancel_booking",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"from": {
"format": "date",
"type": "string"
},
"property_id": {
"type": "string"
},
"to": {
"description": "Exclusive",
"format": "date",
"type": "string"
}
},
"required": [
"property_id",
"from",
"to"
],
"type": "object"
},
"name": "check_availability",
"outputSchema": null
},
{
"description": "Status, amounts, refund schedule, guest ID verification link, and when arrival details will be sent. Maps to GET /v1/bookings/{id}.",
"inputSchema": {
"properties": {
"booking_id": {
"type": "string"
}
},
"required": [
"booking_id"
],
"type": "object"
},
"name": "get_booking",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"booking_id": {
"type": "string"
},
"guest_email": {
"format": "email",
"type": "string"
}
},
"required": [
"booking_id"
],
"type": "object"
},
"name": "get_messages",
"outputSchema": null
},
{
"description": "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}.",
"inputSchema": {
"properties": {
"property_id": {
"type": "string"
}
},
"required": [
"property_id"
],
"type": "object"
},
"name": "get_property",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"adults": {
"minimum": 1,
"type": "integer"
},
"check_in": {
"format": "date",
"type": "string"
},
"check_out": {
"format": "date",
"type": "string"
},
"children": {
"default": 0,
"minimum": 0,
"type": "integer"
},
"infants": {
"default": 0,
"minimum": 0,
"type": "integer"
},
"pets": {
"default": 0,
"minimum": 0,
"type": "integer"
},
"property_id": {
"type": "string"
}
},
"required": [
"property_id",
"check_in",
"check_out",
"adults"
],
"type": "object"
},
"name": "get_quote",
"outputSchema": null
},
{
"description": "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 (and agent_payment when you can pay with a shared payment token instead): 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.",
"inputSchema": {
"properties": {
"email": {
"format": "email",
"type": "string"
},
"first_name": {
"type": "string"
},
"house_rules_accepted": {
"type": "boolean"
},
"last_name": {
"type": "string"
},
"phone": {
"type": "string"
},
"quote_id": {
"type": "string"
},
"special_requests": {
"maxLength": 500,
"type": "string"
}
},
"required": [
"quote_id",
"first_name",
"last_name",
"email",
"house_rules_accepted"
],
"type": "object"
},
"name": "request_booking",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"adults": {
"default": 2,
"minimum": 1,
"type": "integer"
},
"amenities": {
"description": "Amenity codes, e.g. hot_tub, wifi, ev_charger, dedicated_workspace, pool, fireplace_wood.",
"items": {
"type": "string"
},
"type": "array"
},
"check_in": {
"format": "date",
"type": "string"
},
"check_out": {
"format": "date",
"type": "string"
},
"children": {
"minimum": 0,
"type": "integer"
},
"infants": {
"minimum": 0,
"type": "integer"
},
"instant_only": {
"type": "boolean"
},
"limit": {
"default": 8,
"maximum": 20,
"type": "integer"
},
"max_total_usd": {
"description": "Maximum all-in total in dollars. Requires dates.",
"type": "number"
},
"min_bedrooms": {
"type": "integer"
},
"min_wifi_mbps": {
"type": "number"
},
"near_lat": {
"type": "number"
},
"near_lng": {
"type": "number"
},
"pets": {
"minimum": 0,
"type": "integer"
},
"place": {
"description": "Town and state/country, e.g. 'Asheville, NC'. Use near_lat/near_lng instead when you have coordinates.",
"type": "string"
},
"radius_km": {
"default": 25,
"type": "number"
},
"step_free_entrance": {
"type": "boolean"
}
},
"type": "object"
},
"name": "search_stays",
"outputSchema": null
},
{
"description": "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.",
"inputSchema": {
"properties": {
"body": {
"maxLength": 2000,
"type": "string"
},
"booking_id": {
"type": "string"
},
"guest_email": {
"format": "email",
"type": "string"
}
},
"required": [
"booking_id",
"body"
],
"type": "object"
},
"name": "send_message",
"outputSchema": null
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:5f71ed90ba5955fd90e106db4d69dd558f489179da965ac1c25c4ee4b9df7570 | sha256sum