MCP Server

Lodging Decision

io.github.scenicstay/lodging-decision-mcp
Travel & Hospitality Public & reachable MCP 2025-11-25

What this MCP does

Ranks user-provided lodging candidates using price, location, amenities, workspace, safety, and other trip criteria.

lodging_decision
Lodging Decision
Ranks caller-supplied lodging candidates for a traveler/trip and returns a deterministic, evidence-backed recommendation with score breakdown, tradeoffs, risk flags, missing information, and confidence. SCOPE: Evaluates budget, location, amenities, workspace ergonomics, acoustic isolation, price sanity vs submarket baselines, keyless access friction, and Safety & Belonging (host review sentiment, privacy/surveillance boundary verification, neighborhood night security, and verified inclusive badges). Does not infer or profile demographics on travelers. This tool does not search inventory (you must supply candidate_listings), does not book or transact, and does not persist any data. It is deterministic given identical input. Always re-verify availability, price, and policy before booking.
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['traveler', 'trip', 'candidate_listings'], 'properties': {'trip': {'type': 'object', 'required': ['purpose', 'group_size', 'nights', 'budget'], 'properties': {'budget': {'type': 'object', 'required': ['currency', 'max_total'], 'properties': {'currency': {'type': 'string'}, 'max_total': {'type': 'number', 'exclusiveMinimum': 0}, 'max_nightly': {'type': 'number', 'minimum': 0}}}, 'nights': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'purpose': {'enum': ['leisure', 'business', 'remote-work', 'family', 'event', 'relocation', 'other'], 'type': 'string'}, 'group_size': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'work_constraints': {'type': 'array', 'items': {'type': 'string'}}, 'required_amenities': {'type': 'array', 'items': {'type': 'string'}}, 'preferred_amenities': {'type': 'array', 'items': {'type': 'string'}}, 'location_preferences': {'type': 'object', 'properties': {'near': {'type': 'array', 'items': {'type': 'string'}}, 'max_distance_km': {'type': 'number', 'minimum': 0}, 'preferred_areas': {'type': 'array', 'items': {'type': 'string'}}}}, 'accessibility_constraints': {'type': 'array', 'items': {'type': 'string'}}}}, 'traveler': {'type': 'object', 'properties': {'profile_id': {'type': 'string'}, 'preferences': {'type': 'array', 'items': {'type': 'string'}}, 'traveler_type': {'type': 'string'}, 'accessibility_needs': {'type': 'array', 'items': {'type': 'string'}}}}, 'candidate_listings': {'type': 'array', 'items': {'type': 'object', 'required': ['listing_id', 'name', 'currency', 'nightly_rate', 'max_guests', 'amenities'], 'properties': {'area': {'type': 'string'}, 'fees': {'type': 'object', 'properties': {'other': {'type': 'number', 'minimum': 0}, 'taxes': {'type': 'number', 'minimum': 0}, 'service': {'type': 'number', 'minimum': 0}, 'cleaning': {'type': 'number', 'minimum': 0}}}, 'name': {'type': 'string'}, 'nearby': {'type': 'array', 'items': {'type': 'string'}}, 'policy': {'type': 'object', 'properties': {'house_rules': {'type': 'array', 'items': {'type': 'string'}}, 'cancellation': {'enum': ['flexible', 'moderate', 'strict', 'unknown'], 'type': 'string'}, 'instant_book': {'type': 'boolean'}, 'minimum_nights': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}}}, 'rating': {'type': 'number', 'maximum': 5, 'minimum': 0}, 'currency': {'type': 'string'}, 'amenities': {'type': 'array', 'items': {'type': 'string'}}, 'listing_id': {'type': 'string'}, 'max_guests': {'type': 'integer', 'maximum': 9007199254740991, 'exclusiveMinimum': 0}, 'nightly_rate': {'type': 'number', 'minimum': 0}, 'review_count': {'type': 'integer', 'maximum': 9007199254740991, 'minimum': 0}, 'work_features': {'type': 'array', 'items': {'type': 'string'}}, 'access_details': {'type': 'object', 'properties': {'superhost': {'type': 'boolean'}, 'checkin_type': {'enum': ['keyless_smart_lock', 'keypad_lockbox', 'in_person_host'], 'type': 'string'}, 'guest_favorite': {'type': 'boolean'}, 'host_response_rate_pct': {'type': 'number', 'maximum': 100, 'minimum': 0}, 'host_response_time_minutes': {'type': 'number', 'minimum': 0}}}, 'market_context': {'type': 'object', 'properties': {'submarket_name': {'type': 'string'}, 'median_cleaning_fee': {'type': 'number', 'minimum': 0}, 'submarket_baseline_adr': {'type': 'number', 'minimum': 0}}}, 'review_signals': {'type': 'array', 'items': {'type': 'string'}}, 'quality_signals': {'type': 'array', 'items': {'type': 'string'}}, 'acoustic_profile': {'type': 'object', 'properties': {'exposure': {'enum': ['garden_courtyard', 'quiet_residential', 'mixed_arterial', 'busy_commercial'], 'type': 'string'}, 'structure': {'enum': ['detached_guesthouse', 'private_adu', 'top_floor_flat', 'shared_wall_apartment', 'ground_floor_street'], 'type': 'string'}, 'double_pane_windows': {'type': 'boolean'}, 'quiet_hours_enforced': {'type': 'boolean'}, 'noise_review_sentiment': {'enum': ['silent', 'quiet', 'moderate', 'noisy'], 'type': 'string'}}}, 'safety_belonging': {'type': 'object', 'properties': {'host_sentiment': {'enum': ['exceptional', 'welcoming', 'neutral', 'cautionary', 'concerning'], 'type': 'string'}, 'inclusive_badges': {'type': 'array', 'items': {'type': 'string'}}, 'privacy_integrity': {'type': 'object', 'properties': {'private_entrance': {'type': 'boolean'}, 'keyless_security_verified': {'type': 'boolean'}, 'undisclosed_cameras_reported': {'type': 'boolean'}, 'host_unannounced_entry_reported': {'type': 'boolean'}}}, 'neighborhood_safety': {'enum': ['well_lit_secure', 'standard_residential', 'cautionary_at_night', 'high_incident_area'], 'type': 'string'}, 'host_sentiment_signals': {'type': 'array', 'items': {'type': 'string'}}, 'neighborhood_safety_signals': {'type': 'array', 'items': {'type': 'string'}}}}, 'workspace_details': {'type': 'object', 'properties': {'desk_type': {'enum': ['standing_desk', 'ergonomic_desk', 'standard_desk', 'dining_table', 'laptop_tray', 'none'], 'type': 'string'}, 'chair_type': {'enum': ['ergonomic_office', 'task_chair', 'dining_chair', 'none'], 'type': 'string'}, 'dedicated_room': {'type': 'boolean'}, 'docking_station': {'type': 'boolean'}, 'external_monitor': {'type': 'boolean'}, 'ethernet_available': {'type': 'boolean'}, 'verified_wifi_mbps': {'type': 'number', 'minimum': 0}}}, 'accessibility_features': {'type': 'array', 'items': {'type': 'string'}}, 'distance_to_preference_km': {'type': 'number', 'minimum': 0}}}, 'maxItems': 50, 'minItems': 1}}}
Added
lodging_decision
Sept. 17, 2026, 12:52 p.m.