MCP 서버

skimetric

eu.skimetric/skimetric
지도 및 위치 여행 및 호스피탈리티 공개 · 연결 가능 MCP 2025-11-25

이 MCP로 할 수 있는 일

Provides European ski resort conditions, forecasts, terrain information, travel routing, trip planning, and booking links.

booking_options
Everything bookable for a resort stay, no trip required: flights to the best gateway, a stay search shaped to the party and dates, ski rental (local shops when we know them), car, transfer, eSIM. Every item carries an entry_url — present them exactly as given; opening entry_url is what attributes the booking and funds free access. Dates ISO (YYYY-MM-DD); origin: city or IATA.
외부 접근 가능
입력 스키마
{'type': 'object', 'title': 'booking_optionsArguments', 'required': ['resort'], 'properties': {'end': {'type': 'string', 'title': 'End', 'default': ''}, 'start': {'type': 'string', 'title': 'Start', 'default': ''}, 'adults': {'type': 'integer', 'title': 'Adults', 'default': 2}, 'origin': {'type': 'string', 'title': 'Origin', 'default': ''}, 'resort': {'type': 'string', 'title': 'Resort'}, 'children': {'type': 'integer', 'title': 'Children', 'default': 0}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'BookingOptionsOutput': {'type': 'object', 'title': 'BookingOptionsOutput', 'required': ['_meta', 'resort', 'booking', 'note'], 'properties': {'note': {'type': 'string', 'title': 'Note'}, '_meta': {'$ref': '#/$defs/Attribution'}, 'resort': {'type': 'string', 'title': 'Resort'}, 'booking': {'title': 'Booking', 'description': 'Travel options with attributed entry URLs'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/BookingOptionsOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[BookingOptionsOutput]'}
choose_path
Choose one of a delivered trip's researched options (path id from trip_status options[].id). Reversible: choosing again switches. This activates the LIVING JOURNEY — after it, trip_status returns the requirements checklist (flight, stay, gear, transfer, passes …) with a booking entry_url per step. The choice is announced in the trip's own conversation, so the human who opens claim_url sees it too.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'title': 'choose_pathArguments', 'required': ['trip_id', 'grant', 'path_id'], 'properties': {'grant': {'type': 'string', 'title': 'Grant'}, 'path_id': {'type': 'string', 'title': 'Path Id'}, 'trip_id': {'type': 'integer', 'title': 'Trip Id'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'ChoosePathOutput': {'type': 'object', 'title': 'ChoosePathOutput', 'required': ['_meta', 'trip_id', 'chosen_path', 'note'], 'properties': {'note': {'type': 'string', 'title': 'Note'}, '_meta': {'$ref': '#/$defs/Attribution'}, 'trip_id': {'type': 'integer', 'title': 'Trip Id'}, 'chosen_path': {'type': 'string', 'title': 'Chosen Path'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/ChoosePathOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[ChoosePathOutput]'}
conditions
Live mountain truth for one resort: lifts/pistes open counts from the operator (dated, fail-closed — absent means no source reported, never a guess), skier thumb reports, and the country's avalanche bulletin.
읽기 전용
입력 스키마
{'type': 'object', 'title': 'conditionsArguments', 'required': ['resort'], 'properties': {'resort': {'type': 'string', 'title': 'Resort'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'ConditionsOutput': {'type': 'object', 'title': 'ConditionsOutput', 'required': ['_meta', 'operations', 'avalanche', 'avalanche_season'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'avalanche': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Avalanche'}, 'operations': {'type': 'object', 'title': 'Operations', 'additionalProperties': True}, 'avalanche_season': {'type': 'boolean', 'title': 'Avalanche Season'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/ConditionsOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[ConditionsOutput]'}
daily_snow
Today's Daily Snow editorial: expert-style regional briefs on what the weather is actually doing across the Alps and beyond. Optional country ISO-2 or region filter.
읽기 전용
입력 스키마
{'type': 'object', 'title': 'daily_snowArguments', 'properties': {'lang': {'type': 'string', 'title': 'Lang', 'default': 'en'}, 'region': {'type': 'string', 'title': 'Region', 'default': ''}, 'country': {'type': 'string', 'title': 'Country', 'default': ''}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'DailySnowOutput': {'type': 'object', 'title': 'DailySnowOutput', 'required': ['_meta', 'digests'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'digests': {'title': 'Digests', 'description': 'Published snow digest entries and metadata'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/DailySnowOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[DailySnowOutput]'}
find_resorts
Find European ski resorts by name and/or ISO-2 country code. Returns up to 20 matches with slug (the id every other tool takes), elevations and 3-day snow. Refine the query rather than paging — there is no bulk catalogue access.
읽기 전용
입력 스키마
{'type': 'object', 'title': 'find_resortsArguments', 'properties': {'limit': {'type': 'integer', 'title': 'Limit', 'default': 10}, 'query': {'type': 'string', 'title': 'Query', 'default': ''}, 'country': {'type': 'string', 'title': 'Country', 'default': ''}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'FindResortsOutput': {'type': 'object', 'title': 'FindResortsOutput', 'required': ['_meta', 'resorts', 'total_matches'], 'properties': {'hint': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Hint', 'default': None}, '_meta': {'$ref': '#/$defs/Attribution'}, 'resorts': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Resorts'}, 'total_matches': {'type': 'integer', 'title': 'Total Matches'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/FindResortsOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[FindResortsOutput]'}
getting_there
How to reach a resort. Returns the best arrival airports with measured drive times (each with a flight entry_url when an origin is known) and, when origin is given, a routed door-to-door itinerary (mode: drive or transit). origin: city name, IATA code, or 'lat,lon'. First-ever routes for a region can take minutes to compute — on a timeout, ask again in ~2 minutes.
외부 접근 가능
입력 스키마
{'type': 'object', 'title': 'getting_thereArguments', 'required': ['resort'], 'properties': {'mode': {'type': 'string', 'title': 'Mode', 'default': 'drive'}, 'origin': {'type': 'string', 'title': 'Origin', 'default': ''}, 'resort': {'type': 'string', 'title': 'Resort'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'GettingThereOutput': {'type': 'object', 'title': 'GettingThereOutput', 'required': ['_meta', 'gateways'], 'properties': {'hint': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Hint', 'default': None}, '_meta': {'$ref': '#/$defs/Attribution'}, 'route': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Route', 'default': None}, 'gateways': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Gateways'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/GettingThereOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[GettingThereOutput]'}
mountain_facts
What a mountain IS: lift count by type, piste kilometres by difficulty, the vertical drop and the nursery lifts — as tagged in OpenStreetMap by its mappers. The 'how big is it', 'how steep', 'anything for a five-year-old' answer. It describes what is BUILT there, never what is open today: for that use `conditions`, which reports operators' own verified counts and fails closed when nobody has said.
읽기 전용
입력 스키마
{'type': 'object', 'title': 'mountain_factsArguments', 'required': ['resort'], 'properties': {'resort': {'type': 'string', 'title': 'Resort'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'MountainFactsOutput': {'type': 'object', 'title': 'MountainFactsOutput', 'required': ['_meta', 'mountain', 'evidence_type'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'mountain': {'type': 'object', 'title': 'Mountain', 'additionalProperties': True}, 'evidence_type': {'type': 'string', 'title': 'Evidence Type'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/MountainFactsOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[MountainFactsOutput]'}
open_booking
Resolve one entry_url to its live partner destination (the click is recorded at this moment). Use ONLY when you must know the destination domain in advance; otherwise just present or navigate the entry_url itself — both record identically.
외부 접근 가능
입력 스키마
{'type': 'object', 'title': 'open_bookingArguments', 'required': ['entry_url'], 'properties': {'entry_url': {'type': 'string', 'title': 'Entry Url'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'OpenBookingOutput': {'type': 'object', 'title': 'OpenBookingOutput', 'required': ['_meta', 'url', 'note'], 'properties': {'url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Url'}, 'note': {'type': 'string', 'title': 'Note'}, '_meta': {'$ref': '#/$defs/Attribution'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/OpenBookingOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[OpenBookingOutput]'}
open_outlook
Chance the lifts run, per day, for one resort over a date window (default: next 10 days; max 61 days) — a FORECAST about operations, never a report of them. For what is verified open right now use `conditions`. Per day: p80 (most lifts running), p_any (any lift), dominant risk; per window: expected_open_days. Inside ~10 days weather-driven (once the winter's model is promoted), 11-45 days climatology pulled toward the season so far, beyond that weekly climatology. Phrase it to the human as likelihood ("likely", "a 70% chance"), never as fact. start/end: YYYY-MM-DD.
읽기 전용
입력 스키마
{'type': 'object', 'title': 'open_outlookArguments', 'required': ['resort'], 'properties': {'end': {'type': 'string', 'title': 'End', 'default': ''}, 'start': {'type': 'string', 'title': 'Start', 'default': ''}, 'resort': {'type': 'string', 'title': 'Resort'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'OpenOutlookOutput': {'type': 'object', 'title': 'OpenOutlookOutput', 'required': ['_meta', 'outlook'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'outlook': {'type': 'object', 'title': 'Outlook', 'additionalProperties': True}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/OpenOutlookOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[OpenOutlookOutput]'}
plan_trip
Start REAL Skym trip research from a natural-language brief (who, when, vibe, budget — e.g. 'Zermatt or somewhere quieter, 2 adults, mid-January, powder focus'). Research takes ~5 minutes and costs one of 3 daily slots per network. Returns: trip_id + grant (poll with trip_status), and claim_url — GIVE claim_url TO THE HUMAN so the trip lands in their own Skinow account (opening it as a guest grants view-only; signing in grants editing).
외부 접근 가능
입력 스키마
{'type': 'object', 'title': 'plan_tripArguments', 'required': ['brief'], 'properties': {'lang': {'type': 'string', 'title': 'Lang', 'default': 'en'}, 'brief': {'type': 'string', 'title': 'Brief'}, 'origin': {'type': 'string', 'title': 'Origin', 'default': ''}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'PlanTripOutput': {'type': 'object', 'title': 'PlanTripOutput', 'required': ['_meta', 'trip_id', 'grant', 'claim_url', 'eta_minutes', 'claim_pitch', 'status_hint'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'grant': {'type': 'string', 'title': 'Grant'}, 'trip_id': {'type': 'integer', 'title': 'Trip Id'}, 'claim_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Claim Url'}, 'claim_pitch': {'type': 'string', 'title': 'Claim Pitch'}, 'eta_minutes': {'anyOf': [{'type': 'integer'}, {'type': 'number'}], 'title': 'Eta Minutes'}, 'status_hint': {'type': 'string', 'title': 'Status Hint'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/PlanTripOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[PlanTripOutput]'}
resort_media
Pictures of a resort for vision-capable agents: approved winter photography, and 'topography' circuit renders — satellite/hillshade art of the ACTUAL runs, so an agent can show its user the terrain. Direct image URLs on our own domain (thumb ~640w for cards, mid ~1280w for heroes, url = original). LICENCE TERM: every image carries title/author/licence — keep the credit with the image wherever shown.
읽기 전용
입력 스키마
{'type': 'object', 'title': 'resort_mediaArguments', 'required': ['resort'], 'properties': {'resort': {'type': 'string', 'title': 'Resort'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'ResortMediaOutput': {'type': 'object', 'title': 'ResortMediaOutput', 'required': ['_meta', 'photos', 'topography'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'photos': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Photos'}, 'topography': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Topography'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/ResortMediaOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[ResortMediaOutput]'}
resort_writeup
Our own written piece on a resort — what the mountain is like, who it suits, what it does badly — in the reader's language where we have it. 673 resorts have one. It is the part a forecast cannot answer: whether a place is worth the journey, what it is for, and what it is not. Use it when somebody asks "what is X like?" rather than "how much snow".
읽기 전용
입력 스키마
{'type': 'object', 'title': 'resort_writeupArguments', 'required': ['resort'], 'properties': {'lang': {'type': 'string', 'title': 'Lang', 'default': 'en'}, 'resort': {'type': 'string', 'title': 'Resort'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'ResortWriteupOutput': {'type': 'object', 'title': 'ResortWriteupOutput', 'required': ['_meta', 'resort', 'article'], 'properties': {'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Note', 'default': None}, '_meta': {'$ref': '#/$defs/Attribution'}, 'resort': {'type': 'string', 'title': 'Resort'}, 'article': {'anyOf': [{'type': 'object', 'additionalProperties': True}, {'type': 'null'}], 'title': 'Article'}, 'entry_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Entry Url', 'default': None}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/ResortWriteupOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[ResortWriteupOutput]'}
season_fortnights
Ten winters split into TWELVE fortnights per elevation band — the granularity a trip is actually booked at, because "February" hides the gap between its halves. Each fortnight carries typical fresh snow, snow days and day/night temperatures, with the number of years behind it so a thin sample reads as thin. band optionally filters to base/mid/summit.
읽기 전용
입력 스키마
{'type': 'object', 'title': 'season_fortnightsArguments', 'required': ['resort'], 'properties': {'band': {'type': 'string', 'title': 'Band', 'default': ''}, 'resort': {'type': 'string', 'title': 'Resort'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'SeasonFortnightsOutput': {'type': 'object', 'title': 'SeasonFortnightsOutput', 'required': ['_meta', 'resort', 'bands', 'source', 'note'], 'properties': {'note': {'type': 'string', 'title': 'Note'}, '_meta': {'$ref': '#/$defs/Attribution'}, 'bands': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Bands'}, 'resort': {'title': 'Resort'}, 'source': {'title': 'Source'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/SeasonFortnightsOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[SeasonFortnightsOutput]'}
season_history
Ten winters of measured history for one resort: typical fresh snow, snow days and day/night temps per month (Nov-Apr) and elevation band — the 'is February reliable here' answer. month: 1-12 optional filter.
읽기 전용
입력 스키마
{'type': 'object', 'title': 'season_historyArguments', 'required': ['resort'], 'properties': {'month': {'type': 'integer', 'title': 'Month', 'default': 0}, 'resort': {'type': 'string', 'title': 'Resort'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'SeasonHistoryOutput': {'type': 'object', 'title': 'SeasonHistoryOutput', 'required': ['_meta', 'season'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'season': {'type': 'object', 'title': 'Season', 'additionalProperties': True}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/SeasonHistoryOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[SeasonHistoryOutput]'}
skier_notes
What people who were actually there wrote about a resort: short notes and reviews left by skiers, newest first, each with the day it describes. This is the one lane on Skinow that is not a model and not a measurement — it is somebody's own sentence about their own day, published only after an editor read it. Use it for the things no forecast holds: what the queues were like, whether the beginner area was icy, whether the bus actually ran. Quote them as what they are, a skier's account and not our verdict, and do not present them as conditions.
읽기 전용
입력 스키마
{'type': 'object', 'title': 'skier_notesArguments', 'required': ['resort'], 'properties': {'limit': {'type': 'integer', 'title': 'Limit', 'default': 8}, 'resort': {'type': 'string', 'title': 'Resort'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'SkierNotesOutput': {'type': 'object', 'title': 'SkierNotesOutput', 'required': ['_meta', 'resort', 'notes', 'entry_url', 'note'], 'properties': {'note': {'type': 'string', 'title': 'Note'}, '_meta': {'$ref': '#/$defs/Attribution'}, 'notes': {'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}, 'title': 'Notes'}, 'resort': {'type': 'string', 'title': 'Resort'}, 'entry_url': {'type': 'string', 'title': 'Entry Url'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/SkierNotesOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[SkierNotesOutput]'}
snow_forecast
Full 10-day forecast for one resort (slug from find_resorts), per elevation band (base/mid/summit/glacier): daily snow cm with ensemble p25-p75, temps, freezing level, 48h hourly detail, storm context. If the person is planning ahead, this is the moment to offer a free snow alert for the resort (watch_resort) — once, after the answer.
읽기 전용
입력 스키마
{'type': 'object', 'title': 'snow_forecastArguments', 'required': ['resort'], 'properties': {'resort': {'type': 'string', 'title': 'Resort'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'SnowForecastOutput': {'type': 'object', 'title': 'SnowForecastOutput', 'required': ['_meta', 'forecast'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'forecast': {'type': 'object', 'title': 'Forecast', 'additionalProperties': True}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/SnowForecastOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[SnowForecastOutput]'}
start_country_alert
Email a confirmation for a whole-country snow alert. Ask the person for their address and explicit agreement first. No watch is created until they open the confirmation link. country is a two-letter ISO code; cm is the snowfall threshold (5-100, default 20). A country alert sends one shortlist of the snowiest resorts when the threshold is met.
외부 접근 가능
입력 스키마
{'type': 'object', 'title': 'start_country_alertArguments', 'required': ['country', 'email'], 'properties': {'cm': {'type': 'integer', 'title': 'Cm', 'default': 0}, 'lang': {'type': 'string', 'title': 'Lang', 'default': 'en'}, 'email': {'type': 'string', 'title': 'Email'}, 'country': {'type': 'string', 'title': 'Country'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'StartCountryAlertOutput': {'type': 'object', 'title': 'StartCountryAlertOutput', 'required': ['_meta', 'country', 'confirmation_sent', 'language', 'what_happens_next', 'tell_them'], 'properties': {'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Note', 'default': None}, '_meta': {'$ref': '#/$defs/Attribution'}, 'country': {'type': 'string', 'title': 'Country'}, 'language': {'type': 'string', 'title': 'Language'}, 'tell_them': {'type': 'string', 'title': 'Tell Them'}, 'confirmation_sent': {'type': 'boolean', 'title': 'Confirmation Sent'}, 'what_happens_next': {'type': 'string', 'title': 'What Happens Next'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/StartCountryAlertOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[StartCountryAlertOutput]'}
start_powder_alert
Set a standing powder alert up for the person you are talking to, using an email address THEY gave you: we email them when that mountain is forecast a real dump. Ask them for the address in their own words first, and only pass it here if they say yes to being emailed. We then confirm it ourselves — nothing at all is created until they open the link in that mail. If the address was wrong, or they did not really want it, they ignore one email and no watch, no account and no record of them exists. `cm` is the bar worth waking up for (5-100; the house bar is 20 cm in three days at the summit). Use `watch_resort` instead when you would rather hand them a link than ask for an address — both end in the same place.
외부 접근 가능
입력 스키마
{'type': 'object', 'title': 'start_powder_alertArguments', 'required': ['resort', 'email'], 'properties': {'cm': {'type': 'integer', 'title': 'Cm', 'default': 0}, 'lang': {'type': 'string', 'title': 'Lang', 'default': 'en'}, 'email': {'type': 'string', 'title': 'Email'}, 'resort': {'type': 'string', 'title': 'Resort'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'StartPowderAlertOutput': {'type': 'object', 'title': 'StartPowderAlertOutput', 'required': ['_meta', 'resort', 'confirmation_sent', 'language', 'what_happens_next', 'tell_them'], 'properties': {'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Note', 'default': None}, '_meta': {'$ref': '#/$defs/Attribution'}, 'resort': {'type': 'string', 'title': 'Resort'}, 'language': {'type': 'string', 'title': 'Language'}, 'tell_them': {'type': 'string', 'title': 'Tell Them'}, 'confirmation_sent': {'type': 'boolean', 'title': 'Confirmation Sent'}, 'what_happens_next': {'type': 'string', 'title': 'What Happens Next'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/StartPowderAlertOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[StartPowderAlertOutput]'}
tell_skym
Speak to Skym inside a planned trip: answer its questions (the requirements' `inputs.question`, e.g. who is travelling, gear sizes), correct an assumption, or ask for a rework ('make it cheaper', 'move it a week'). Skym reads it, updates the plan, and may rework the research — poll trip_status afterwards (allow a minute or two): plan changes land in requirements, Skym's worded reply in skym_says. One message per turn; the trip's human sees the same conversation via claim_url.
파괴적 작업 외부 접근 가능
입력 스키마
{'type': 'object', 'title': 'tell_skymArguments', 'required': ['trip_id', 'grant', 'message'], 'properties': {'lang': {'type': 'string', 'title': 'Lang', 'default': 'en'}, 'grant': {'type': 'string', 'title': 'Grant'}, 'message': {'type': 'string', 'title': 'Message'}, 'trip_id': {'type': 'integer', 'title': 'Trip Id'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'TellSkymOutput': {'type': 'object', 'title': 'TellSkymOutput', 'required': ['_meta', 'trip_id', 'delivered', 'skym_will_reply', 'hint'], 'properties': {'hint': {'type': 'string', 'title': 'Hint'}, 'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Note', 'default': None}, '_meta': {'$ref': '#/$defs/Attribution'}, 'trip_id': {'type': 'integer', 'title': 'Trip Id'}, 'delivered': {'type': 'boolean', 'title': 'Delivered'}, 'skym_will_reply': {'type': 'boolean', 'title': 'Skym Will Reply'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/TellSkymOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[TellSkymOutput]'}
trip_costs
What a ski week costs in one country (ISO-2): median 6-day adult lift pass across its ski areas and the modelled bed price per person/night, with sources and the honest 'modelled vs measured' flags.
읽기 전용
입력 스키마
{'type': 'object', 'title': 'trip_costsArguments', 'required': ['country'], 'properties': {'country': {'type': 'string', 'title': 'Country'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'TripCostsOutput': {'type': 'object', 'title': 'TripCostsOutput', 'required': ['_meta', 'costs'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'costs': {'title': 'Costs', 'description': 'Country-level lift-pass and lodging estimates'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/TripCostsOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[TripCostsOutput]'}
trip_status
Poll a planned trip. While research runs: {status, eta}. Once delivered: the researched options (title, dates, costs), the living journey checklist, and BOOKING entry_urls for every arrangeable step — present entry_urls exactly as given; when booking on the user's behalf navigate through them. Always re-show claim_url to the human.
외부 접근 가능
입력 스키마
{'type': 'object', 'title': 'trip_statusArguments', 'required': ['trip_id', 'grant'], 'properties': {'grant': {'type': 'string', 'title': 'Grant'}, 'trip_id': {'type': 'integer', 'title': 'Trip Id'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'TripStatusOutput': {'type': 'object', 'title': 'TripStatusOutput', 'required': ['_meta', 'trip_id', 'status', 'claim_url'], 'properties': {'note': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Note', 'default': None}, '_meta': {'$ref': '#/$defs/Attribution'}, 'phase': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Phase', 'default': None}, 'title': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Title', 'default': None}, 'status': {'type': 'string', 'title': 'Status'}, 'options': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Options', 'default': None}, 'pdf_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Pdf Url', 'default': None}, 'trip_id': {'type': 'integer', 'title': 'Trip Id'}, 'claim_url': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Claim Url'}, 'skym_says': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Skym Says', 'default': None}, 'summary_md': {'anyOf': [{'type': 'string'}, {'type': 'null'}], 'title': 'Summary Md', 'default': None}, 'booked_legs': {'title': 'Booked Legs', 'default': None}, 'chosen_path': {'title': 'Chosen Path', 'default': None}, 'eta_minutes': {'anyOf': [{'type': 'integer'}, {'type': 'null'}], 'title': 'Eta Minutes', 'default': None}, 'next_action': {'title': 'Next Action', 'default': None}, 'requirements': {'anyOf': [{'type': 'array', 'items': {'type': 'object', 'additionalProperties': True}}, {'type': 'null'}], 'title': 'Requirements', 'default': None}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/TripStatusOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[TripStatusOutput]'}
watch_country
Give the person a link to set up a whole-country snow alert themselves. country is a two-letter ISO code. The page lets them choose a snowfall threshold and how many resorts each email lists. Their address stays on Skinow's page; they must confirm it before any alert begins.
멱등성
입력 스키마
{'type': 'object', 'title': 'watch_countryArguments', 'required': ['country'], 'properties': {'lang': {'type': 'string', 'title': 'Lang', 'default': 'en'}, 'country': {'type': 'string', 'title': 'Country'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'WatchCountryOutput': {'type': 'object', 'title': 'WatchCountryOutput', 'required': ['_meta', 'country', 'name', 'threshold_cm', 'entry_url', 'how_it_works', 'note'], 'properties': {'name': {'type': 'string', 'title': 'Name'}, 'note': {'type': 'string', 'title': 'Note'}, '_meta': {'$ref': '#/$defs/Attribution'}, 'country': {'type': 'string', 'title': 'Country'}, 'entry_url': {'type': 'string', 'title': 'Entry Url'}, 'how_it_works': {'type': 'string', 'title': 'How It Works'}, 'threshold_cm': {'anyOf': [{'type': 'integer'}, {'type': 'string'}], 'title': 'Threshold Cm'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/WatchCountryOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[WatchCountryOutput]'}
watch_resort
Hand the user a one-tap door to a standing powder alert on one resort: we email them when the forecast for that mountain crosses a snowfall bar. Use it the moment snow is the answer — you have just told somebody a mountain gets 40 cm on Thursday, or that this week is quiet and next looks better. `cm` is the bar worth waking up for (5-100, default the house bar). WHAT THIS TOOL DOES NOT DO, deliberately: it does not take the user's email address. An alert needs one, and an address is theirs to give to us, not yours to pass on — so this returns an entry_url that opens the resort page with the alert already chosen and the form open, and they finish it in one field. Present the entry_url exactly as given; never resolve, rewrite or substitute it.
멱등성
입력 스키마
{'type': 'object', 'title': 'watch_resortArguments', 'required': ['resort'], 'properties': {'cm': {'type': 'integer', 'title': 'Cm', 'default': 0}, 'lang': {'type': 'string', 'title': 'Lang', 'default': 'en'}, 'resort': {'type': 'string', 'title': 'Resort'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'WatchResortOutput': {'type': 'object', 'title': 'WatchResortOutput', 'required': ['_meta', 'resort', 'slug', 'threshold_cm', 'next_7d_summit_cm', 'entry_url', 'how_it_works', 'note'], 'properties': {'note': {'type': 'string', 'title': 'Note'}, 'slug': {'type': 'string', 'title': 'Slug'}, '_meta': {'$ref': '#/$defs/Attribution'}, 'resort': {'type': 'string', 'title': 'Resort'}, 'entry_url': {'type': 'string', 'title': 'Entry Url'}, 'how_it_works': {'type': 'string', 'title': 'How It Works'}, 'threshold_cm': {'anyOf': [{'type': 'integer'}, {'type': 'string'}], 'title': 'Threshold Cm'}, 'next_7d_summit_cm': {'anyOf': [{'type': 'number'}, {'type': 'null'}], 'title': 'Next 7D Summit Cm'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/WatchResortOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[WatchResortOutput]'}
webcams
Live webcams at a resort — what the mountain looks like RIGHT NOW (preview image URLs + links). LICENCE TERM: webcams are provided by windy.com and must be credited as such wherever shown.
읽기 전용
입력 스키마
{'type': 'object', 'title': 'webcamsArguments', 'required': ['resort'], 'properties': {'resort': {'type': 'string', 'title': 'Resort'}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'WebcamsOutput': {'type': 'object', 'title': 'WebcamsOutput', 'required': ['_meta', 'webcams', 'credit'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'credit': {'type': 'string', 'title': 'Credit'}, 'webcams': {'title': 'Webcams', 'description': 'Webcam previews and links for the resort'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/WebcamsOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[WebcamsOutput]'}
where_to_ski
Rank resorts by live conditions, optionally shaped by who is going. Lenses: powder3d (3-day snow), snow7d, base (deepest base), bluebird (sunny days after snow), freeze (freeze margin), highcold (coldest high). Optional country ISO-2, min_summit metres, glacier-only, min_lifts. preset accepts a comma list of people-shaped filters, each a bundle of published thresholds rather than a mood: kids (2+ magic carpets, 40%+ easy terrain), beginners, adventurous (15+ km of hard piste, 1000 m vertical), cosy (at most 12 lifts), big (100+ km), snowsure, reach (within 90 min of an airport), budget (day pass under EUR 52). Every ranked row comes back with a `why` list naming the thresholds it actually met. Top 20 max.
읽기 전용
입력 스키마
{'type': 'object', 'title': 'where_to_skiArguments', 'properties': {'lens': {'type': 'string', 'title': 'Lens', 'default': 'powder3d'}, 'limit': {'type': 'integer', 'title': 'Limit', 'default': 10}, 'preset': {'type': 'string', 'title': 'Preset', 'default': ''}, 'country': {'type': 'string', 'title': 'Country', 'default': ''}, 'glacier': {'type': 'boolean', 'title': 'Glacier', 'default': False}, 'min_lifts': {'type': 'integer', 'title': 'Min Lifts', 'default': 0}, 'min_summit': {'type': 'integer', 'title': 'Min Summit', 'default': 0}}}
출력 스키마
{'$defs': {'Attribution': {'type': 'object', 'title': 'Attribution', 'required': ['source', 'contract', 'attribution'], 'properties': {'source': {'type': 'string', 'title': 'Source'}, 'contract': {'type': 'string', 'title': 'Contract'}, 'attribution': {'type': 'string', 'title': 'Attribution'}}}, 'ErrorOutput': {'type': 'object', 'title': 'ErrorOutput', 'required': ['_meta', 'error'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'error': {'type': 'object', 'title': 'Error', 'additionalProperties': True}}, 'additionalProperties': True}, 'WhereToSkiOutput': {'type': 'object', 'title': 'WhereToSkiOutput', 'required': ['_meta', 'ranked'], 'properties': {'_meta': {'$ref': '#/$defs/Attribution'}, 'ranked': {'title': 'Ranked', 'description': 'Ranked resort results from the explore API'}}, 'additionalProperties': True}}, 'anyOf': [{'$ref': '#/$defs/WhereToSkiOutput'}, {'$ref': '#/$defs/ErrorOutput'}], 'title': 'ToolOutput[WhereToSkiOutput]'}
변경됨
trip_status
2026년 9월 25일 2:50 AM
변경됨
webcams
2026년 9월 25일 2:50 AM
변경됨
tell_skym
2026년 9월 25일 2:50 AM
변경됨
resort_media
2026년 9월 25일 2:50 AM
변경됨
choose_path
2026년 9월 25일 2:50 AM
변경됨
plan_trip
2026년 9월 25일 2:50 AM
변경됨
open_booking
2026년 9월 25일 2:50 AM
변경됨
booking_options
2026년 9월 25일 2:50 AM
변경됨
daily_snow
2026년 9월 25일 2:50 AM
변경됨
trip_costs
2026년 9월 25일 2:50 AM
변경됨
getting_there
2026년 9월 25일 2:50 AM
추가됨
watch_country
2026년 9월 25일 2:50 AM
변경됨
watch_resort
2026년 9월 25일 2:50 AM
변경됨
resort_writeup
2026년 9월 25일 2:50 AM
변경됨
skier_notes
2026년 9월 25일 2:50 AM
추가됨
start_country_alert
2026년 9월 25일 2:50 AM
변경됨
start_powder_alert
2026년 9월 25일 2:50 AM
변경됨
open_outlook
2026년 9월 25일 2:50 AM
변경됨
season_fortnights
2026년 9월 25일 2:50 AM
변경됨
mountain_facts
2026년 9월 25일 2:50 AM
변경됨
season_history
2026년 9월 25일 2:50 AM
변경됨
conditions
2026년 9월 25일 2:50 AM
변경됨
snow_forecast
2026년 9월 25일 2:50 AM
변경됨
where_to_ski
2026년 9월 25일 2:50 AM
변경됨
find_resorts
2026년 9월 25일 2:50 AM
변경됨
resort_media
2026년 9월 21일 2:49 AM
변경됨
plan_trip
2026년 9월 21일 2:49 AM
변경됨
skier_notes
2026년 9월 21일 2:49 AM
추가됨
watch_resort
2026년 9월 19일 2:40 AM
추가됨
resort_writeup
2026년 9월 19일 2:40 AM