GuestServices — machine surface
Naples Rentals degraded
Are you human? Switch to the human viewnode 889-rent-naples · template v0.2.0 · everything below is rendered from the one source-of-truth payload (GET /api/node/889-rent-naples) — same data the human lander and the IVR consume.
Payload preview
{
"node": {
"node_id": "889-rent-naples",
"category_path": "tourism/fl/naples/rentals",
"template_version": "0.2.0",
"number": "+12398801207",
"slug": "naples",
"geo": {
"center": {
"lat": 26.142,
"lng": -81.7948
},
"qualifier": "FL USA",
"zoom": 12,
"tiles": "/tiles/swfl-z14-v20260815.pmtiles",
"bbox": {
"west": -81.88,
"south": 26.02,
"east": -81.66,
"north": 26.34
},
"view": {
"west": -81.84,
"south": 26.05,
"east": -81.73,
"north": 26.28
}
},
"status": "live",
"public_urls": {
"human": "https://naples.guestservices.team/",
"machine": "https://naples.bot.guestservices.team/",
"quality": "https://naples.guestservices.team/quality/889-rent-naples"
}
},
"template": {
"template": "tourism/fl/naples/rentals",
"version": "0.2.0",
"supply": {
"fields": [
{
"name": "business_name",
"type": "string",
"required": true
},
{
"name": "phone",
"type": "phone",
"required": true
},
{
"name": "website",
"type": "url"
},
{
"name": "hours",
"type": "hours"
},
{
"name": "address",
"type": "address"
},
{
"name": "service_area",
"type": "string"
},
{
"name": "location",
"type": "geo"
},
{
"name": "service_area_geo",
"type": "geo"
},
{
"name": "service_area_radius_km",
"type": "int",
"min": 1,
"max": 200
},
{
"name": "tags",
"type": "list",
"required": true,
"taxonomy": "concierge/v1",
"allowed": [
"boat_rental",
"jet_ski",
"kayak",
"paddleboard",
"fishing_charter",
"boat_tour",
"beach_gear",
"parasailing",
"golf_cart",
"bicycle",
"ebike",
"scooter",
"car_rental",
"airport_transfer",
"baby_gear",
"babysitting",
"pet_sitting",
"private_chef",
"catering",
"grocery_delivery",
"vacation_rental",
"house_cleaning",
"linen_service",
"handyman",
"massage",
"hair_styling",
"fitness_trainer",
"photographer",
"event_rental",
"guided_tour"
]
},
{
"name": "rental_types",
"type": "list",
"allowed": [
"home",
"condo",
"boat",
"jetski",
"golf_cart",
"ebike",
"bicycle",
"kayak",
"other"
]
},
{
"name": "rate_min",
"type": "money"
},
{
"name": "rate_max",
"type": "money"
},
{
"name": "rate_unit",
"type": "string",
"allowed": [
"hour",
"day",
"week",
"month"
]
},
{
"name": "min_stay",
"type": "string"
},
{
"name": "online_booking",
"type": "bool"
},
{
"name": "delivery_available",
"type": "bool"
},
{
"name": "pet_friendly",
"type": "bool"
},
{
"name": "waterfront",
"type": "bool"
}
],
"freshness_max_age_days": 7
},
"demand": {
"fields": [
{
"name": "want",
"type": "string",
"required": true
},
{
"name": "when",
"type": "daterange",
"required": [
"web",
"machine"
]
},
{
"name": "party_size",
"type": "int",
"min": 1,
"max": 500
},
{
"name": "budget",
"type": "money",
"min": 0,
"max": 1000000
},
{
"name": "callback_number",
"type": "phone",
"required": [
"web",
"voice"
]
}
],
"classify_from": [
"want"
]
},
"routing": {
"strategy": "round_robin",
"log_unfilled": true,
"handoff": [
"transfer_call",
"sms_referral"
]
},
"timezone": "America/New_York",
"ivr": {
"intake_sets": {
"c2": {
"default": {
"field": "time_and_length",
"en": "About what time — and for how long?",
"es": "¿Más o menos a qué hora, y por cuánto tiempo?"
},
"default_time_given": {
"field": "length",
"en": "And for how long?",
"es": "¿Y por cuánto tiempo?"
},
"stay": {
"field": "nights",
"en": "For how many nights?",
"es": "¿Por cuántas noches?"
}
},
"nouns": {
"bicycle": {
"tag": "bicycle",
"en": "bikes",
"es": "bicicletas",
"gender": "f"
},
"ebike": {
"tag": "ebike",
"en": "e-bikes",
"es": "bicicletas eléctricas",
"gender": "f"
},
"scooter": {
"tag": "scooter",
"en": "scooters",
"es": "scooters",
"gender": "m"
},
"kayak": {
"tag": "kayak",
"en": "kayaks",
"es": "kayaks",
"gender": "m"
},
"paddleboard": {
"tag": "paddleboard",
"en": "paddleboards",
"es": "tablas de paddle",
"gender": "f"
},
"beach_chairs": {
"tag": "beach_gear",
"match": [
"beach chair",
"chair"
],
"en": "beach chairs",
"es": "sillas de playa",
"gender": "f"
},
"umbrellas": {
"tag": "beach_gear",
"match": [
"beach umbrella",
"umbrella"
],
"en": "umbrellas",
"es": "sombrillas",
"gender": "f"
}
},
"sets": {
"boat": {
"tags": [
"boat_rental"
],
"c2": "default",
"questions": [
{
"field": "captain_or_self_drive",
"en": "Would you like a captain, or to drive it yourselves?",
"es": "¿Prefiere ir con capitán, o manejar por su cuenta?"
},
{
"field": "party_size",
"en": "How many people, kids included?",
"es": "¿Cuántas personas serían, contando a los niños?"
}
]
},
"charter": {
"tags": [
"fishing_charter",
"boat_tour",
"parasailing"
],
"c2": "default",
"questions": [
{
"field": "party_size",
"en": "How many people, kids included?",
"es": "¿Cuántas personas serían, contando a los niños?"
}
]
},
"jet_ski": {
"tags": [
"jet_ski"
],
"c2": "default",
"questions": [
{
"field": "quantity",
"en": "How many jet skis do you need?",
"es": "¿Cuántas motos acuáticas necesita?"
},
{
"field": "drivers_18_plus",
"en": "And will every driver be eighteen or older?",
"es": "¿Y todos los que van a manejar tienen dieciocho años o más?"
}
]
},
"cart": {
"tags": [
"golf_cart"
],
"c2": "default",
"questions": [
{
"field": "quantity",
"en": "How many golf carts do you need?",
"es": "¿Cuántos carritos de golf necesita?"
},
{
"field": "seats",
"en": "How many people should it seat?",
"es": "¿Para cuántas personas sería el carrito?"
}
]
},
"bikes": {
"tags": [
"bicycle",
"ebike",
"scooter"
],
"c2": "default",
"questions": [
{
"field": "quantity",
"en": "How many do you need?",
"es": "¿Qué cantidad necesita?",
"noun": {
"en": [
"How many",
"do you need?"
],
"es_m": [
"¿Cuántos",
"necesita?"
],
"es_f": [
"¿Cuántas",
"necesita?"
]
}
},
{
"field": "kids_sizes",
"only_nouns": [
"bicycle"
],
"en": "All adult sizes, or any kids' bikes?",
"es": "¿Todas para adultos, o alguna para niños?"
}
]
},
"gear": {
"tags": [
"kayak",
"paddleboard",
"beach_gear"
],
"except": [
"cabana"
],
"c2": "default",
"questions": [
{
"field": "quantity",
"en": "How many do you need?",
"es": "¿Qué cantidad necesita?",
"noun": {
"en": [
"How many",
"do you need?"
],
"es_m": [
"¿Cuántos",
"necesita?"
],
"es_f": [
"¿Cuántas",
"necesita?"
]
}
},
{
"field": "delivery_or_pickup",
"en": "Would you like delivery, or to pick it up?",
"es": "¿Prefiere entrega, o pasar a recoger?"
}
]
},
"stay": {
"tags": [
"vacation_rental"
],
"c2": "stay",
"questions": [
{
"field": "party_size",
"en": "For how many people?",
"es": "¿Para cuántas personas?"
},
{
"field": "pets",
"en": "Any pets coming along?",
"es": "¿Viajan con mascotas?"
}
]
},
"other": {
"fallback": true,
"c2": "default",
"questions": [
{
"field": "party_size",
"en": "How many people?",
"es": "¿Para cuántas personas?"
}
]
}
}
},
"greeting": "Hi, you've reached Guest Services. I can help you find anything from a beach house to a golf cart. What are you looking to rent?\n"
}
},
"suppliers": [
{
"id": 414,
"business_name": "Naples Boat Rentals by On The Pontoon Boat",
"attrs": {
"hours": "Monday: 8:00 AM – 5:00 PM; Tuesday: 8:00 AM – 5:00 PM; Wednesday: 8:00 AM – 5:00 PM; Thursday: 8:00 AM – 5:00 PM; Friday: 8:00 AM – 5:00 PM; Saturday: 8:00 AM – 5:00 PM; Sunday: 8:00 AM – 5:00 PM",
"tags": [
"boat_rental"
]
},
"scraped_at": "2026-08-13T00:00:00+00:00",
"freshness": "degraded"
},
{
"id": 415,
"business_name": "Naples Bay Resort Boat Rentals",
"attrs": {
"hours": "Monday: 8:00 AM – 4:30 PM; Tuesday: 8:00 AM – 4:30 PM; Wednesday: 8:00 AM – 4:30 PM; Thursday: 8:00 AM – 4:30 PM; Friday: 8:00 AM – 4:30 PM; Saturday: 8:00 AM – 4:30 PM; Sunday: 8:00 AM – 4:30 PM",
"tags": [
"boat_rental",
"jet_ski"
]
},
"scraped_at": "2026-08-13T00:00:00+00:00",
"freshness": "degraded"
},
{
"id": 416,
"business_name": "Bayfront Boat Rentals",
"attrs": {
"hours": "Monday: 8:00 AM – 5:00 PM; Tuesday: 8:00 AM – 5:00 PM; Wednesday: 8:00 AM – 5:00 PM; Thursday: 8:00 AM – 5:00 PM; Friday: 8:00 AM – 5:00 PM; Saturday: 8:00 AM – 5:00 PM; Sunday: 8:00 AM – 5:00 PM",
"tags": [
"boat_rental",
"jet_ski",
"kayak",
"paddleboard"
]
},
"scraped_at": "2026-08-13T00:00:00+00:00",
"freshness": "degraded"
}
],
"suppliers_truncated": "preview shows 3 of 752 suppliers — GET /api/node/889-rent-naples returns all",
"freshness": "degraded",
"generated_at": "2026-10-15T01:49:20.727Z"
}Free API endpoints
GET /api/node/889-rent-naples — full CONTRACTS §2 payload
curl -s https://naples.bot.guestservices.team/api/node/889-rent-naples
POST /api/intent — submit demand (required fields: want, when, callback_number)
curl -s -X POST https://naples.bot.guestservices.team/api/intent \
-H 'content-type: application/json' \
-d '{"node_id":"889-rent-naples","channel":"web","fields":{"want":"a boat rental","when":"2026-03-14..2026-03-18","callback_number":"+12395550123"}}'Missing required demand fields are rejected with the list of what is missing. Every accepted intent lands in the ledger (intent → routing → outcome), including unfilled demand.
Paid x402 door (agent gate)
GET https://gate.guestservices.team/agent/889-rent-naples — browse, $0.001: redacted directory proof, same shape as /api/node
POST https://gate.guestservices.team/agent/889-rent-naples/intent — connect, $0.05: body {"fields": {…demand fields…}}, channel "machine", returns the ONE matched supplier
# unpaid → honest HTTP 402 with an x402 PaymentRequired body quoting the route's price curl -si https://gate.guestservices.team/agent/889-rent-naples
Config: network eip155:84532 (Base Sepolia), asset USDC 0x036CbD53842c5426634e7929541eC2318f3dCF7e, facilitator https://x402.org/facilitator. Per-route pricing: browse $0.001 = maxAmountRequired: "1000", connect $0.05 = "50000" (6-decimal atomic units; env-tunable via X402_PRICE_BROWSE/X402_PRICE_CONNECT — the 402 body is authoritative). The unpaid 402 response quotes the exact price for that route.
Freshness
{
"freshness": "degraded",
"generated_at": "2026-10-15T01:49:20.727Z",
"freshness_max_age_days": 7,
"policy": "worst-of suppliers; a supplier older than freshness_max_age_days is stamped \"degraded\", never silently dropped"
}