GuestServices — machine surface
Naples Rentals fresh
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": "+12393143060",
"slug": "naples",
"geo": {
"center": {
"lat": 26.142,
"lng": -81.7948
},
"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": "qa",
"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": true
},
{
"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"
]
},
"ivr": {
"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": "fresh"
},
{
"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": "fresh"
},
{
"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": "fresh"
}
],
"suppliers_truncated": "preview shows 3 of 752 suppliers — GET /api/node/889-rent-naples returns all",
"freshness": "fresh",
"generated_at": "2026-08-15T20:50:57.268Z"
}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": "fresh",
"generated_at": "2026-08-15T20:50:57.268Z",
"freshness_max_age_days": 7,
"policy": "worst-of suppliers; a supplier older than freshness_max_age_days is stamped \"degraded\", never silently dropped"
}