Server definition
- Hash
- sha256:dc99a9644b079e8d1b2c28e7be695cd50580d1d43b267350458b813c27b84b59
- What it is
- What a remote MCP server returned when asked what it offers: 20 tools
The blob, as servednamed by its sha256
{
"instructions": null,
"tools": [
{
"description": "\n Check live stay price for a previously recommended hotel.\n\n REQUIREMENT:\n - update_stay_dates must already have been called\n ",
"inputSchema": {
"properties": {
"hotel_code_or_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Hotel Code Or Name"
},
"hotel_index": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Hotel Index"
},
"session_id": {
"title": "Session Id",
"type": "string"
}
},
"required": [
"session_id"
],
"title": "check_stay_priceArguments",
"type": "object"
},
"name": "check_stay_price",
"outputSchema": {
"additionalProperties": true,
"title": "check_stay_priceDictOutput",
"type": "object"
}
},
{
"description": "\n Clear the entire session.\n ",
"inputSchema": {
"properties": {
"session_id": {
"title": "Session Id",
"type": "string"
}
},
"required": [
"session_id"
],
"title": "clear_sessionArguments",
"type": "object"
},
"name": "clear_session",
"outputSchema": {
"additionalProperties": true,
"title": "clear_sessionDictOutput",
"type": "object"
}
},
{
"description": "\n Lightweight fallback extraction from raw text.\n\n This is mainly for debugging and fallback use.\n It is NOT the preferred production path.\n Preferred production path:\n - external model understands raw text\n - external model outputs standard UserProfile fields\n - call update_user_profile_from_model(...)\n ",
"inputSchema": {
"properties": {
"text": {
"title": "Text",
"type": "string"
}
},
"required": [
"text"
],
"title": "extract_user_profile_from_textArguments",
"type": "object"
},
"name": "extract_user_profile_from_text",
"outputSchema": {
"additionalProperties": true,
"title": "extract_user_profile_from_textDictOutput",
"type": "object"
}
},
{
"description": "\n Get available hotel offers for the current session dates.\n\n REQUIREMENT:\n - update_stay_dates should already be set\n - hotel should come from previous search results\n ",
"inputSchema": {
"properties": {
"hotel_code_or_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Hotel Code Or Name"
},
"hotel_index": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Hotel Index"
},
"limit": {
"default": 3,
"title": "Limit",
"type": "integer"
},
"preferred_room_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Preferred Room Name"
},
"session_id": {
"title": "Session Id",
"type": "string"
}
},
"required": [
"session_id"
],
"title": "get_booking_offersArguments",
"type": "object"
},
"name": "get_booking_offers",
"outputSchema": {
"additionalProperties": true,
"title": "get_booking_offersDictOutput",
"type": "object"
}
},
{
"description": "\n Get detailed information for a hotel.\n\n Use this after search_hotels when the user asks for more details\n about a recommended option.\n ",
"inputSchema": {
"properties": {
"hotel_code_or_name": {
"title": "Hotel Code Or Name",
"type": "string"
},
"session_id": {
"title": "Session Id",
"type": "string"
}
},
"required": [
"session_id",
"hotel_code_or_name"
],
"title": "get_hotel_detailsArguments",
"type": "object"
},
"name": "get_hotel_details",
"outputSchema": {
"additionalProperties": true,
"title": "get_hotel_detailsDictOutput",
"type": "object"
}
},
{
"description": "\n Get a compact summary of the current session state.\n ",
"inputSchema": {
"properties": {
"session_id": {
"title": "Session Id",
"type": "string"
}
},
"required": [
"session_id"
],
"title": "get_session_stateArguments",
"type": "object"
},
"name": "get_session_state",
"outputSchema": {
"additionalProperties": true,
"title": "get_session_stateDictOutput",
"type": "object"
}
},
{
"description": "\n Return the strict standard schema for user_profile.\n\n IMPORTANT:\n - Only these standard UserProfile fields are allowed.\n - No alias mapping is supported.\n - city is NOT a profile field.\n - checkin_date / checkout_date are NOT profile fields.\n - Numeric budget constraints usually belong to search_hotels price_min/price_max.\n\n Use this tool when the external model is unsure what fields are allowed.\n ",
"inputSchema": {
"properties": {},
"title": "get_user_profile_schemaArguments",
"type": "object"
},
"name": "get_user_profile_schema",
"outputSchema": {
"additionalProperties": true,
"title": "get_user_profile_schemaDictOutput",
"type": "object"
}
},
{
"description": "\n Health check for the MCP server.\n ",
"inputSchema": {
"properties": {},
"title": "health_checkArguments",
"type": "object"
},
"name": "health_check",
"outputSchema": {
"additionalProperties": true,
"title": "health_checkDictOutput",
"type": "object"
}
},
{
"description": "\n Store raw user message into session context.\n\n IMPORTANT:\n This tool is no longer the main profile extraction path.\n\n RECOMMENDED USE:\n - store raw user text for context\n - let the external model decide profile fields\n - then call update_user_profile_from_model(...)\n\n DEFAULT BEHAVIOR:\n - append raw text into user_info\n - do not aggressively infer profile fields\n\n OPTIONAL:\n - if use_fallback_extraction=True, run a lightweight fallback extractor\n ",
"inputSchema": {
"properties": {
"merge": {
"default": true,
"title": "Merge",
"type": "boolean"
},
"message": {
"title": "Message",
"type": "string"
},
"session_id": {
"title": "Session Id",
"type": "string"
},
"use_fallback_extraction": {
"default": false,
"title": "Use Fallback Extraction",
"type": "boolean"
}
},
"required": [
"session_id",
"message"
],
"title": "ingest_user_messageArguments",
"type": "object"
},
"name": "ingest_user_message",
"outputSchema": {
"additionalProperties": true,
"title": "ingest_user_messageDictOutput",
"type": "object"
}
},
{
"description": "\n List all in-memory session summaries.\n Useful for debugging only.\n ",
"inputSchema": {
"properties": {},
"title": "list_sessionsArguments",
"type": "object"
},
"name": "list_sessions",
"outputSchema": {
"additionalProperties": true,
"title": "list_sessionsDictOutput",
"type": "object"
}
},
{
"description": "\n Parse stay dates without using session state.\n\n user_profile here is optional and only accepts standard profile fields.\n city is not required here.\n ",
"inputSchema": {
"properties": {
"checkin_str": {
"title": "Checkin Str",
"type": "string"
},
"checkout_str": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Checkout Str"
},
"nights": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Nights"
},
"user_profile": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "User Profile"
}
},
"required": [
"checkin_str"
],
"title": "normalize_stay_datesArguments",
"type": "object"
},
"name": "normalize_stay_dates",
"outputSchema": {
"additionalProperties": true,
"title": "normalize_stay_datesDictOutput",
"type": "object"
}
},
{
"description": "\n Search activities in a city.\n\n If city is omitted, use session.city from prior hotel search.\n ",
"inputSchema": {
"properties": {
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "City"
},
"limit": {
"default": 3,
"title": "Limit",
"type": "integer"
},
"session_id": {
"title": "Session Id",
"type": "string"
}
},
"required": [
"session_id"
],
"title": "search_activities_in_cityArguments",
"type": "object"
},
"name": "search_activities_in_city",
"outputSchema": {
"additionalProperties": true,
"title": "search_activities_in_cityDictOutput",
"type": "object"
}
},
{
"description": "\n Search airline-related content.\n ",
"inputSchema": {
"properties": {
"airline_tag": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Airline Tag"
},
"limit": {
"default": 3,
"title": "Limit",
"type": "integer"
},
"session_id": {
"title": "Session Id",
"type": "string"
}
},
"required": [
"session_id"
],
"title": "search_flight_contentArguments",
"type": "object"
},
"name": "search_flight_content",
"outputSchema": {
"additionalProperties": true,
"title": "search_flight_contentDictOutput",
"type": "object"
}
},
{
"description": "\n Search homestays in a city.\n\n If city is omitted, use session.city from prior hotel search.\n ",
"inputSchema": {
"properties": {
"city": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "City"
},
"limit": {
"default": 3,
"title": "Limit",
"type": "integer"
},
"session_id": {
"title": "Session Id",
"type": "string"
}
},
"required": [
"session_id"
],
"title": "search_homestays_in_cityArguments",
"type": "object"
},
"name": "search_homestays_in_city",
"outputSchema": {
"additionalProperties": true,
"title": "search_homestays_in_cityDictOutput",
"type": "object"
}
},
{
"description": "\n Search and recommend hotels.\n\n USE THIS TOOL FOR:\n - city-based hotel search\n - main search intent\n - direct numeric search constraints such as price_min / price_max\n - explicit room or amenity filters\n\n IMPORTANT:\n - city MUST be passed here, not inside user_profile\n - user_profile is for stable preferences, not for search location\n - if dates are known, call update_stay_dates first\n - if profile preferences are known, call update_user_profile_from_model first\n\n RECOMMENDED ORDER:\n 1. start_session\n 2. update_user_profile_from_model (optional)\n 3. update_stay_dates (optional)\n 4. search_hotels(city=..., ...)\n ",
"inputSchema": {
"properties": {
"amenities": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Amenities"
},
"city": {
"title": "City",
"type": "string"
},
"exclude_hotel_codes": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Exclude Hotel Codes"
},
"hotel_class_stars": {
"anyOf": [
{
"enum": [
3,
4,
5
],
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Hotel Class Stars"
},
"limit": {
"default": 3,
"title": "Limit",
"type": "integer"
},
"main_interest": {
"title": "Main Interest",
"type": "string"
},
"non_refundable": {
"anyOf": [
{
"type": "boolean"
},
{
"type": "null"
}
],
"default": null,
"title": "Non Refundable"
},
"price_max": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Price Max"
},
"price_min": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Price Min"
},
"rating_min": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Rating Min"
},
"required_name_terms": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Required Name Terms"
},
"room_type": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Room Type"
},
"session_id": {
"title": "Session Id",
"type": "string"
},
"suitable": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Suitable"
},
"surroundings": {
"anyOf": [
{
"items": {
"type": "string"
},
"type": "array"
},
{
"type": "null"
}
],
"default": null,
"title": "Surroundings"
},
"user_specific": {
"default": "",
"title": "User Specific",
"type": "string"
}
},
"required": [
"session_id",
"city",
"main_interest"
],
"title": "search_hotelsArguments",
"type": "object"
},
"name": "search_hotels",
"outputSchema": {
"additionalProperties": true,
"title": "search_hotelsDictOutput",
"type": "object"
}
},
{
"description": "\n Search restaurants near a hotel.\n ",
"inputSchema": {
"properties": {
"hotel_code_or_name": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Hotel Code Or Name"
},
"hotel_index": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Hotel Index"
},
"hotel_lat": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Hotel Lat"
},
"hotel_lon": {
"anyOf": [
{
"type": "number"
},
{
"type": "null"
}
],
"default": null,
"title": "Hotel Lon"
},
"session_id": {
"title": "Session Id",
"type": "string"
}
},
"required": [
"session_id"
],
"title": "search_restaurants_near_hotelArguments",
"type": "object"
},
"name": "search_restaurants_near_hotel",
"outputSchema": {
"additionalProperties": true,
"title": "search_restaurants_near_hotelDictOutput",
"type": "object"
}
},
{
"description": "\n Create or replace a session.\n\n PURPOSE:\n - Initialize conversation state\n - Optionally store stable user profile fields\n\n DO:\n - pass stable or semi-stable profile information in user_profile\n - pass preferred_language if known\n - call this before other hotel-related tools\n\n DO NOT:\n - do NOT put city inside user_profile\n - do NOT put checkin_date or checkout_date inside user_profile\n - do NOT put search filters inside user_profile\n\n CORRECT WORKFLOW:\n 1. start_session(...)\n 2. update_user_profile_from_model(...) # optional\n 3. update_stay_dates(...) # optional\n 4. search_hotels(city=..., ...)\n\n WRONG:\n user_profile = {\n \"city\": \"New York\",\n \"checkin_date\": \"2023-04-01\",\n \"checkout_date\": \"2023-04-05\"\n }\n\n RIGHT:\n start_session(user_profile={\"preferred_language\": \"en\"})\n update_stay_dates(checkin_str=\"2023-04-01\", checkout_str=\"2023-04-05\")\n search_hotels(city=\"New York\", ...)\n ",
"inputSchema": {
"properties": {
"metadata": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "Metadata"
},
"preferred_language": {
"default": "en",
"title": "Preferred Language",
"type": "string"
},
"session_id": {
"title": "Session Id",
"type": "string"
},
"user_id": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "User Id"
},
"user_profile": {
"anyOf": [
{
"additionalProperties": true,
"type": "object"
},
{
"type": "null"
}
],
"default": null,
"title": "User Profile"
}
},
"required": [
"session_id"
],
"title": "start_sessionArguments",
"type": "object"
},
"name": "start_session",
"outputSchema": {
"additionalProperties": true,
"title": "start_sessionDictOutput",
"type": "object"
}
},
{
"description": "\n Update session stay dates.\n\n USE THIS TOOL FOR:\n - check-in date\n - check-out date\n - nights-based date calculation\n\n DO NOT:\n - do NOT put dates inside user_profile\n - do NOT try to pass dates through start_session user_profile\n ",
"inputSchema": {
"properties": {
"checkin_str": {
"title": "Checkin Str",
"type": "string"
},
"checkout_str": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"title": "Checkout Str"
},
"nights": {
"anyOf": [
{
"type": "integer"
},
{
"type": "null"
}
],
"default": null,
"title": "Nights"
},
"session_id": {
"title": "Session Id",
"type": "string"
}
},
"required": [
"session_id",
"checkin_str"
],
"title": "update_stay_datesArguments",
"type": "object"
},
"name": "update_stay_dates",
"outputSchema": {
"additionalProperties": true,
"title": "update_stay_datesDictOutput",
"type": "object"
}
},
{
"description": "\n Update session.user_profile using standard UserProfile fields only.\n\n USE THIS WHEN:\n - the caller already has structured profile fields\n\n DO NOT PUT HERE:\n - city\n - checkin_date\n - checkout_date\n - raw numeric search constraints that belong in search_hotels\n\n Preferred profile fields include:\n - price_range\n - budget_flexibility\n - relationships\n - travel_purpose\n - hotel_style\n - facilities_like\n - surroundings_like\n ",
"inputSchema": {
"properties": {
"merge": {
"default": true,
"title": "Merge",
"type": "boolean"
},
"session_id": {
"title": "Session Id",
"type": "string"
},
"user_profile": {
"additionalProperties": true,
"title": "User Profile",
"type": "object"
}
},
"required": [
"session_id",
"user_profile"
],
"title": "update_user_profileArguments",
"type": "object"
},
"name": "update_user_profile",
"outputSchema": {
"additionalProperties": true,
"title": "update_user_profileDictOutput",
"type": "object"
}
},
{
"description": "\n Preferred path for profile extraction.\n\n The external model should:\n - read the user's natural language message\n - decide which STANDARD UserProfile fields are supported by evidence\n - send ONLY those fields here\n\n HARD RULES:\n - only standard UserProfile fields are allowed\n - do NOT invent new fields\n - do NOT put city here\n - do NOT put checkin_date or checkout_date here\n - omit uncertain fields instead of guessing\n - numeric budget constraints usually belong to search_hotels price_min/price_max\n\n GOOD EXAMPLE:\n {\n \"relationships\": \"solo\",\n \"travel_purpose\": \"leisure\",\n \"hotel_style\": \"luxury\",\n \"facilities_like\": \"breakfast, gym\",\n \"surroundings_like\": \"downtown\"\n }\n\n BAD EXAMPLE:\n {\n \"city\": \"New York\",\n \"checkin_date\": \"2023-04-01\",\n \"checkout_date\": \"2023-04-05\",\n \"budget\": 100\n }\n ",
"inputSchema": {
"properties": {
"extracted_user_profile": {
"additionalProperties": true,
"title": "Extracted User Profile",
"type": "object"
},
"merge": {
"default": true,
"title": "Merge",
"type": "boolean"
},
"session_id": {
"title": "Session Id",
"type": "string"
}
},
"required": [
"session_id",
"extracted_user_profile"
],
"title": "update_user_profile_from_modelArguments",
"type": "object"
},
"name": "update_user_profile_from_model",
"outputSchema": {
"additionalProperties": true,
"title": "update_user_profile_from_modelDictOutput",
"type": "object"
}
}
]
}Verify it yourself
curl -s https://api.teppi.xyz/v1/evidence/sha256:dc99a9644b079e8d1b2c28e7be695cd50580d1d43b267350458b813c27b84b59 | sha256sum