{
  "data": {
    "tool": {
      "category": "weather",
      "endpoint": "https://www.snowsure.ai/mcp",
      "jsonUrl": "https://www.anchorterminal.com/api/v1/tools/snowsure-snow.json",
      "kind": "mcp",
      "listed": "indexed",
      "liveUrl": "https://www.anchorterminal.com/api/v1/live/snowsure-snow.json",
      "markdownUrl": "https://www.anchorterminal.com/tools/snowsure-snow.md",
      "mcpTools": {
        "check": {
          "checker": "anchor-check/1.0",
          "totalTokens": 17311,
          "counts": {
            "error": 0,
            "note": 0,
            "warn": 4
          },
          "findings": [
            {
              "rule": "TC11",
              "severity": "warn",
              "tool": "plan_ski_road_trip",
              "message": "1 parameter without a description: days",
              "fix": "Describe each one: format, units, an example, and what happens when it's left out."
            },
            {
              "rule": "TC14",
              "severity": "warn",
              "tool": "get_season_leaderboard",
              "message": "allowed values are in the description, not an enum: season",
              "fix": "Move them into enum."
            },
            {
              "rule": "TC14",
              "severity": "warn",
              "tool": "plan_ski_road_trip",
              "message": "allowed values are in the description, not an enum: region",
              "fix": "Move them into enum."
            },
            {
              "rule": "TC23",
              "severity": "warn",
              "message": "48 tools, about 16,249 tokens of definitions",
              "fix": "Split the server by job, or offer a smaller default toolset (a read-only set, or a search-then-call pattern)."
            }
          ]
        },
        "checkedAt": "2026-10-04T22:20:40Z",
        "count": 48,
        "schemaTokens": 17311,
        "status": "ok",
        "tools": [
          {
            "name": "ask_snowdata",
            "title": "Ask SnowSure",
            "description": "Text-only Q\u0026A grounded in SnowSure data (~1s). Use for open-ended questions, terrain %, expert-run counts, advice, AND specifically: El Niño / ENSO / 2026-27 winter outlook (or call get_elnino_signal / get_elnino_rankings), head-to-head resort comparisons (annual snowfall, vertical drop, base/summit elevation, skiable area — \"which has more snowfall, Niseko or Whistler\"), season-opening norms (\"which resort typically opens earliest\", \"usually open by Thanksgiving\"), glacier / year-round skiing, and factual resort \u0026 geography trivia (what country/state/island a resort is in, named runs like Corbet's Couloir, records like the highest chairlift). NEVER use for photo/gallery/picture requests (→ get_resort_photos) or resort guide cards (→ get_resort_info). Does NOT render UI cards.",
            "inputSchema": {
              "properties": {
                "format": {
                  "description": "Response shape: markdown (default) or json",
                  "enum": [
                    "markdown",
                    "json"
                  ],
                  "type": "string"
                },
                "hemisphere": {
                  "description": "Optional hemisphere hint when not resort-scoped",
                  "enum": [
                    "nh",
                    "sh"
                  ],
                  "type": "string"
                },
                "locale": {
                  "description": "Response language (default: en)",
                  "enum": [
                    "en",
                    "es",
                    "fr",
                    "de",
                    "it",
                    "ja"
                  ],
                  "type": "string"
                },
                "partnerId": {
                  "description": "Client hint for tailored guidance: claude, chatgpt, cursor, perplexity",
                  "type": "string"
                },
                "question": {
                  "description": "Natural-language question about snow or a resort",
                  "type": "string"
                },
                "resortSlug": {
                  "description": "Optional resort slug to scope the answer (e.g. jackson-hole)",
                  "type": "string"
                }
              },
              "required": [
                "question"
              ],
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "answer": {
                  "type": "string"
                },
                "answerSource": {
                  "type": "string"
                },
                "confidence": {
                  "type": "string"
                },
                "evidence": {
                  "items": {
                    "additionalProperties": false,
                    "properties": {
                      "id": {
                        "type": "string"
                      },
                      "kind": {
                        "type": "string"
                      },
                      "summary": {
                        "type": "string"
                      },
                      "title": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "kind",
                      "id",
                      "title",
                      "summary"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "generatedAt": {
                  "type": "string"
                },
                "intent": {
                  "type": "string"
                },
                "markdown": {
                  "description": "Human-readable markdown summary (required for ChatGPT Instant mode).",
                  "type": "string"
                },
                "queryId": {
                  "type": "string"
                },
                "sourceLabel": {
                  "type": "string"
                }
              },
              "required": [
                "markdown"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Ask SnowSure"
            }
          },
          {
            "name": "get_snow_report",
            "title": "Global snow report",
            "description": "Get the global snow report with top-ranked resorts by snow conditions. Returns resorts sorted by SnowSure score, forecast, or recent snowfall. Use this for \"where has the best snow?\" or \"top ski resorts right now\" queries.",
            "inputSchema": {
              "properties": {
                "limit": {
                  "description": "Number of resorts to return (default: 10, max: 50)",
                  "type": "number"
                },
                "region": {
                  "description": "Filter by region",
                  "enum": [
                    "europe",
                    "north-america",
                    "asia",
                    "oceania",
                    "south-america",
                    "africa"
                  ],
                  "type": "string"
                },
                "sort": {
                  "description": "Sort order: snowsure (AI rating), forecast (14-day snow), recent (24h snowfall), depth (current base)",
                  "enum": [
                    "snowsure",
                    "forecast",
                    "recent",
                    "depth"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary (required for ChatGPT Instant mode).",
                  "type": "string"
                },
                "resorts": {
                  "items": {
                    "additionalProperties": true,
                    "properties": {
                      "baseDepthCm": {
                        "type": "number"
                      },
                      "country": {
                        "type": "string"
                      },
                      "forecast14dCm": {
                        "type": "number"
                      },
                      "forecast7dCm": {
                        "type": "number"
                      },
                      "forecastHorizonDays": {
                        "type": "number"
                      },
                      "imageUrl": {
                        "type": "string"
                      },
                      "isOpen": {
                        "type": "boolean"
                      },
                      "name": {
                        "type": "string"
                      },
                      "newSnow24hCm": {
                        "type": "number"
                      },
                      "rank": {
                        "type": "number"
                      },
                      "region": {
                        "type": "string"
                      },
                      "slug": {
                        "type": "string"
                      },
                      "snowSureRating": {
                        "type": "string"
                      },
                      "snowSureScore": {
                        "type": "number"
                      },
                      "url": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "rank",
                      "name",
                      "slug",
                      "country",
                      "isOpen",
                      "url"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "subtitle": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "updatedAt": {
                  "description": "Oldest data time among the listed resorts (ISO-8601); null when none carries one. Never request time.",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "markdown",
                "title",
                "updatedAt",
                "resorts"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Global snow report"
            }
          },
          {
            "name": "get_powder_reels",
            "title": "Powder Reels storm timelapses",
            "description": "Powder Reels — SnowSure archived storm timelapses with verified accumulation data burned into the frames (\"Proof of Powder\"). Use for \"how much did it snow at X last night\", \"show me the storm at Alta\", \"biggest powder days this season\", or any request for storm footage / timelapse / receipts. Returns reels newest-first with watch links.",
            "inputSchema": {
              "properties": {
                "date": {
                  "description": "Optional storm date (YYYY-MM-DD) — requires resort",
                  "type": "string"
                },
                "limit": {
                  "description": "Number of reels to return (default: 5, max: 20)",
                  "type": "number"
                },
                "resort": {
                  "description": "Optional resort slug or name to filter, e.g. \"alta\" or \"Portillo\".",
                  "type": "string"
                },
                "slug": {
                  "description": "Same as `resort`: pass either one.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Powder Reels storm timelapses"
            }
          },
          {
            "name": "get_resort_info",
            "title": "Resort guide card",
            "description": "INTERACTIVE RESORT GUIDE CARD (Resort Info sidebar UI) — elevation, vertical, lifts, runs, skiable acres, average snowfall, season dates, ski passes, editorial description, hero/gallery carousel. REQUIRED when the user asks for: resort guide, mountain profile, resort info, lifts/runs/vertical/skiable area, season dates, ski passes, or \"tell me about the mountain\" (non-weather). Answers single-resort stat questions: base/summit elevation, vertical drop, skiable area, average annual snowfall. Examples: \"Aspen Mountain resort guide\", \"how many lifts at Jackson Hole\", \"what is the base elevation at Arapahoe Basin\". For X-vs-Y stat questions use compare_resorts. Do NOT use get_resort (that shows the snow conditions card).",
            "inputSchema": {
              "properties": {
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary (required for ChatGPT Instant mode).",
                  "type": "string"
                },
                "resort": {
                  "additionalProperties": true,
                  "description": "Structured resort payload for inline widget rendering.",
                  "type": "object"
                }
              },
              "required": [
                "markdown"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Resort guide card"
            }
          },
          {
            "name": "get_resort_photos",
            "title": "Resort photo gallery",
            "description": "INTERACTIVE PHOTO GALLERY CAROUSEL — official SnowSure resort photos (hero + Sanity gallery). REQUIRED for: photos, pictures, images, gallery, \"show me photos of Vail/Aspen\". Never use web search or inline images — call this tool. Do NOT use get_destination, get_resort_info, or ask_snowdata for photo requests.",
            "inputSchema": {
              "properties": {
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary (required for ChatGPT Instant mode).",
                  "type": "string"
                },
                "resort": {
                  "additionalProperties": true,
                  "description": "Structured resort payload for inline widget rendering.",
                  "type": "object"
                }
              },
              "required": [
                "markdown"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Resort photo gallery"
            }
          },
          {
            "name": "get_resort",
            "title": "Live snow \u0026 forecast",
            "description": "Single-resort data with a REQUIRED card parameter that picks the interactive UI. card=guide → resort info card (elevation, lifts, season dates). card=photos → photo gallery carousel. card=snow → snow conditions card (score, base depth, forecast). card=full → detailed markdown only, no card. \"Resort guide\" → card=guide. \"Photos/gallery\" → card=photos. \"Conditions/forecast\" / \"is it open right now, base depth, lifts open of total\" → card=snow (open status, base depth, and lifts open of total). Prefer get_resort_info / get_resort_photos when available (same cards).",
            "inputSchema": {
              "properties": {
                "card": {
                  "description": "UI card type: guide (resort info), photos (gallery carousel), snow (conditions), full (text only)",
                  "enum": [
                    "snow",
                    "guide",
                    "photos",
                    "full"
                  ],
                  "type": "string"
                },
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                }
              },
              "required": [
                "card"
              ],
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary (required for ChatGPT Instant mode).",
                  "type": "string"
                },
                "resort": {
                  "additionalProperties": true,
                  "description": "Structured resort payload for inline widget rendering.",
                  "type": "object"
                }
              },
              "required": [
                "markdown"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Live snow \u0026 forecast"
            }
          },
          {
            "name": "search_resorts",
            "title": "Search resorts",
            "description": "Search for ski resorts by name, country, or region. Returns matching resorts with basic conditions. Use for \"find resorts in [location]\" or \"search [name]\" queries.",
            "inputSchema": {
              "properties": {
                "country": {
                  "description": "Filter by exact country name (e.g., \"Japan\", \"Switzerland\", \"United States\")",
                  "type": "string"
                },
                "limit": {
                  "description": "Maximum results to return (default: 20)",
                  "type": "number"
                },
                "query": {
                  "description": "Search query - can be resort name, country, or partial match",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Search resorts"
            }
          },
          {
            "name": "find_best_powder",
            "title": "Find fresh powder",
            "description": "Find resorts with the freshest powder snow right now. Returns resorts sorted by 24-hour snowfall. Use for \"where is it snowing?\" or \"fresh powder\" queries.",
            "inputSchema": {
              "properties": {
                "limit": {
                  "description": "Number of results (default: 10)",
                  "type": "number"
                },
                "minSnowfall": {
                  "description": "Minimum 24h snowfall in cm to include (default: 5)",
                  "type": "number"
                },
                "region": {
                  "description": "Filter by region",
                  "enum": [
                    "europe",
                    "north-america",
                    "asia",
                    "oceania",
                    "south-america",
                    "africa"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary (required for ChatGPT Instant mode).",
                  "type": "string"
                },
                "resorts": {
                  "items": {
                    "additionalProperties": true,
                    "properties": {
                      "baseDepthCm": {
                        "type": "number"
                      },
                      "country": {
                        "type": "string"
                      },
                      "forecast14dCm": {
                        "type": "number"
                      },
                      "forecast7dCm": {
                        "type": "number"
                      },
                      "forecastHorizonDays": {
                        "type": "number"
                      },
                      "imageUrl": {
                        "type": "string"
                      },
                      "isOpen": {
                        "type": "boolean"
                      },
                      "name": {
                        "type": "string"
                      },
                      "newSnow24hCm": {
                        "type": "number"
                      },
                      "rank": {
                        "type": "number"
                      },
                      "region": {
                        "type": "string"
                      },
                      "slug": {
                        "type": "string"
                      },
                      "snowSureRating": {
                        "type": "string"
                      },
                      "snowSureScore": {
                        "type": "number"
                      },
                      "url": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "rank",
                      "name",
                      "slug",
                      "country",
                      "isOpen",
                      "url"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "subtitle": {
                  "type": "string"
                },
                "title": {
                  "type": "string"
                },
                "updatedAt": {
                  "description": "Oldest data time among the listed resorts (ISO-8601); null when none carries one. Never request time.",
                  "type": [
                    "string",
                    "null"
                  ]
                }
              },
              "required": [
                "markdown",
                "title",
                "updatedAt",
                "resorts"
              ],
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Find fresh powder"
            }
          },
          {
            "name": "find_powder_trips",
            "title": "Find bookable powder trips",
            "description": "Powder trips you can BOOK: ranks resorts by their 14-day forecast (best chance of fresh snow in the bookable window) and returns handpicked luxury ski hotels at each — \"where to go AND where to stay\". Use for \"where should I book for powder\", \"best powder trip this month\", \"book a ski trip with good snow coming\". Optional vibe filter (lux | hip) shows only hotels handpicked into that tier; SnowSure shows Lux and Hip stays only. Each hotel carries an attribution-tagged booking link; booking completes on LUXSKI.",
            "inputSchema": {
              "properties": {
                "limit": {
                  "description": "Number of destinations (default: 5)",
                  "type": "number"
                },
                "pass": {
                  "description": "Only resorts on this multi-resort pass, by SnowSure pass id: ikon-pass, epic-pass, indy-pass, mountain-collective, …",
                  "type": "string"
                },
                "region": {
                  "description": "Filter destinations by region",
                  "enum": [
                    "europe",
                    "north-america",
                    "asia",
                    "oceania",
                    "south-america",
                    "africa"
                  ],
                  "type": "string"
                },
                "vibe": {
                  "description": "Only show handpicked hotels in this tier: lux or hip",
                  "enum": [
                    "lux",
                    "hip"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": true,
              "title": "Find bookable powder trips"
            }
          },
          {
            "name": "compare_forecasts",
            "title": "Compare forecast models",
            "description": "Compare snow forecasts across 7 weather models (ECMWF, GFS, GEM, JMA, ICON, Météo-France, Met Norway) for a resort. Shows model agreement and uncertainty. Use for forecast reliability queries. The model table and days 8–14 need SnowSure Pro, or a favourite resort when signed in; otherwise this returns the seven-day blend alone.",
            "inputSchema": {
              "properties": {
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Compare forecast models"
            }
          },
          {
            "name": "get_weather_forecast",
            "title": "Resort weather forecast",
            "description": "Get detailed day-by-day weather forecast for a resort including temperature, snowfall, wind, and conditions for each of the next 7 days — 14 with SnowSure Pro, or for a favourite resort when signed in.",
            "inputSchema": {
              "properties": {
                "days": {
                  "description": "Number of days to forecast (default: 7, max: 14)",
                  "type": "number"
                },
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Resort weather forecast"
            }
          },
          {
            "name": "find_resorts_by_criteria",
            "title": "Filter resorts by criteria",
            "description": "Find resorts matching specific criteria like minimum snow depth, elevation range, number of runs, or SnowSure rating. Advanced filtering for trip planning.",
            "inputSchema": {
              "properties": {
                "country": {
                  "description": "Filter by country",
                  "type": "string"
                },
                "limit": {
                  "description": "Max results (default: 20)",
                  "type": "number"
                },
                "minDepth": {
                  "description": "Minimum snow depth in cm",
                  "type": "number"
                },
                "minElevation": {
                  "description": "Minimum summit elevation in meters",
                  "type": "number"
                },
                "minRuns": {
                  "description": "Minimum number of ski runs",
                  "type": "number"
                },
                "minScore": {
                  "description": "Minimum SnowSure score (0-100)",
                  "type": "number"
                },
                "region": {
                  "description": "Filter by region",
                  "enum": [
                    "europe",
                    "north-america",
                    "asia",
                    "oceania",
                    "south-america",
                    "africa"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Filter resorts by criteria"
            }
          },
          {
            "name": "get_southern_hemisphere_report",
            "title": "Southern Hemisphere report",
            "description": "Get snow conditions for Southern Hemisphere ski resorts (Australia, New Zealand, Argentina, Chile) currently in season. Answers \"is Perisher / Portillo / Valle Nevado open right now and what are the current conditions\", \"is the Australian ski season underway\", and \"which Southern Hemisphere region — the Andes, Australia, or NZ — has the best snow right now\". Use for June–October SH ski queries. Prefers operator-verified data when available. Do NOT use for a specific opening DATE — use get_season_openings instead. Note that the SH is not the only place to ski in the northern summer: a handful of NH glaciers run summer or year-round operations (Zermatt/Matterhorn Ski Paradise skis all year; Passo dello Stelvio, Stryn and Galdhøpiggen run deep into autumn; Hintertux, Saas-Fee, Tignes, Les Deux Alpes and Timberline have dated summer windows that close). For those, call get_resort on the named glacier — summer windows are tracked per resort and a glacier being famous for summer skiing does not mean it is open today.",
            "inputSchema": {
              "properties": {
                "country": {
                  "description": "Optional country filter",
                  "enum": [
                    "Australia",
                    "New Zealand",
                    "Argentina",
                    "Chile"
                  ],
                  "type": "string"
                },
                "limit": {
                  "description": "Max resorts (default: 10)",
                  "type": "number"
                },
                "sort": {
                  "description": "Sort: snowsure (AI score), recent (24h snow), depth (base depth)",
                  "enum": [
                    "snowsure",
                    "recent",
                    "depth"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Southern Hemisphere report"
            }
          },
          {
            "name": "get_season_openings",
            "title": "Season opening calendar",
            "description": "Resorts whose season OPENING DATE is a specific day — answers \"what opens today?\", \"opening this week\", or \"which resorts start their season on June 27?\". Returns only resorts scheduled or confirmed to open on that date, NOT all currently-open resorts. Prefer over get_southern_hemisphere_report for opening-day questions. This tool is date-scoped, so it is the wrong shape for two neighbouring questions: for a RANKED retrospective (\"which resorts opened earliest for the 2025-26 season, top 6 by verified opening date\"), use get_insights with category=season_calendar; for historical norms (\"which resort typically opens earliest each season\", \"is X usually open by Thanksgiving\"), use ask_snowdata.",
            "inputSchema": {
              "properties": {
                "country": {
                  "description": "Filter by country, e.g. Chile or New Zealand",
                  "type": "string"
                },
                "date": {
                  "description": "Opening date YYYY-MM-DD. Defaults to today (UTC).",
                  "type": "string"
                },
                "hemisphere": {
                  "description": "Northern or Southern Hemisphere filter",
                  "enum": [
                    "nh",
                    "sh"
                  ],
                  "type": "string"
                },
                "region": {
                  "description": "Filter by region",
                  "enum": [
                    "europe",
                    "north-america",
                    "asia",
                    "oceania",
                    "south-america",
                    "africa",
                    "alps",
                    "rockies",
                    "japan"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Season opening calendar"
            }
          },
          {
            "name": "get_season_leaderboard",
            "title": "Season leaderboard by place",
            "description": "Rank resorts by how a season actually went, scoped to a place. This is the tool for \"which \u003cplace\u003e resort had the most \u003cmetric\u003e last season\" — the single most common retrospective question agents ask. Scope by state or province (Maine, Montana, Wyoming, British Columbia, Hokkaido, Nagano, Valais, Tyrol), by country (Switzerland, Japan, Canada), or by region (north-america, europe, asia, oceania, south-america, or a colloquial range: alps, andes, rockies, scandinavia). Metrics: snow_days, total_cm, powder_days, bluebird_days, max_storm (biggest single 24h snowfall, with the date it fell), peak_depth, longest_dry_spell. Covers 30 seasons back to 1996, so it answers historical and multi-season questions too, not just last season. Season accepts 2025, \"2025-26\", 2026, or \"last\" and resolves them all to the same season. Backed by ERA5 reanalysis across the full season window, so figures cover the entire season rather than only the days SnowSure has been live. Use get_snow_history for ONE resort's own history, get_monthly_snow for typical month-by-month climatology, and get_snow_report or find_best_powder for conditions RIGHT NOW.",
            "inputSchema": {
              "additionalProperties": false,
              "description": "All fields optional. Defaults: metric=total_cm, hemisphere=nh, season=latest, limit=10, worldwide.",
              "properties": {
                "country": {
                  "description": "Country name, e.g. Switzerland or Japan.",
                  "type": "string"
                },
                "hemisphere": {
                  "description": "Northern (nh, default) or southern (sh) hemisphere season.",
                  "enum": [
                    "nh",
                    "sh"
                  ],
                  "type": "string"
                },
                "limit": {
                  "description": "How many resorts to return (default 10, max 50).",
                  "type": "number"
                },
                "metric": {
                  "description": "What to rank by. max_storm = biggest single 24-hour snowfall of the season.",
                  "enum": [
                    "snow_days",
                    "total_cm",
                    "powder_days",
                    "bluebird_days",
                    "max_storm",
                    "peak_depth",
                    "longest_dry_spell"
                  ],
                  "type": "string"
                },
                "region": {
                  "description": "north-america, europe, asia, oceania, south-america, or a colloquial range: alps, andes, rockies, scandinavia.",
                  "type": "string"
                },
                "season": {
                  "description": "Season to rank. Accepts a year (2025), a label (\"2025-26\"), the ending year (2026), or \"last\"/\"latest\". Northern-hemisphere seasons are keyed on their starting year.",
                  "type": "string"
                },
                "state": {
                  "description": "State, province or equivalent: Maine, Montana, British Columbia, Hokkaido, Valais, Tyrol.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Season leaderboard by place"
            }
          },
          {
            "name": "get_snow_history",
            "title": "Resort snow history",
            "description": "One resort's own snowfall history: season totals, comparison to its 5-year and 30-year averages, and best months to visit. Scoped to a SINGLE resort — for \"which resort in \u003cstate/country/region\u003e led \u003cmetric\u003e last season\", use get_season_leaderboard instead.",
            "inputSchema": {
              "properties": {
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Resort snow history"
            }
          },
          {
            "name": "get_monthly_snow",
            "title": "Typical snow by month",
            "description": "Typical snow for a resort MONTH BY MONTH, from ~30 years of ERA5 reanalysis — average snowfall, snow days, base and peak depth, and biggest storm, plus per-season totals. Use for date-choosing questions: 'what is February usually like at Vail', 'when should I go', 'is January or March better'. This is HISTORY, not a forecast and not a prediction — for the next 14 days use get_weather_forecast, and for right now use get_resort. Months with too little history are withheld rather than shown thin; every month returned carries yearsTracked so you can cite the evidence.",
            "inputSchema": {
              "properties": {
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Typical snow by month"
            }
          },
          {
            "name": "get_trip_window",
            "title": "Trip window odds",
            "description": "Historical odds for a SPECIFIC trip window at one resort — 'Whistler on March 27', 'Vail Jan 10–17'. From ~30 years of ERA5 monthly history it blends the window's months (weighted by days) into: the snow-day probability (the headline — for a short window how OFTEN it snows beats how MUCH falls in a season), window-scaled expected snowfall and typical base depth, the same window across the last 5 individual seasons, and the best nearby month (±1) by snow-day odds. Window max 31 days; dates are YYYY-MM-DD. This is HISTORY, not a forecast and not a prediction — for the next 14 days use get_weather_forecast, and for a whole-month question use get_monthly_snow. Windows with under 5 tracked seasons return insufficient rather than thin odds.",
            "inputSchema": {
              "properties": {
                "end": {
                  "description": "Window end date, YYYY-MM-DD (defaults to start for a single day)",
                  "type": "string"
                },
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                },
                "start": {
                  "description": "Window start date, YYYY-MM-DD",
                  "type": "string"
                }
              },
              "required": [
                "start"
              ],
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Trip window odds"
            }
          },
          {
            "name": "get_elnino_signal",
            "title": "El Niño resort signal",
            "description": "Resort-level El Niño / ENSO outlook from SnowSure's 30-year fleet dataset (559 ranked resorts). Returns rank, tier, strong/all-event signal, analog winters ('97-98, '15-16, '23-24), forecast paragraph, methodology note, and in-season scorecard when live. Use for ANY El Niño, ENSO, or 2026-27 winter-outlook question about a named resort. A pattern, not a promise — n=3 disclosed; D/E tiers are timing plays.",
            "inputSchema": {
              "properties": {
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "El Niño resort signal"
            }
          },
          {
            "name": "get_elnino_rankings",
            "title": "El Niño rankings",
            "description": "Ranked El Niño ski resorts from SnowSure's 30-year fleet table. Filter by region (south-america, north-america, europe, asia, oceania) or tier (A prime / B favored / C ENSO-proof / D late bloomer / E timing play). Use for 'best El Niño resorts in Europe', 'where will it snow most in 2026-27', 'is El Niño good for the Alps'.",
            "inputSchema": {
              "properties": {
                "limit": {
                  "description": "How many resorts to return (default 10, max 50).",
                  "type": "number"
                },
                "region": {
                  "description": "Optional region: south-america, north-america, europe, asia, oceania, or colloquial (andes, alps, japan, rockies).",
                  "type": "string"
                },
                "tier": {
                  "description": "Optional tier letter or label: A/prime, B/favored, C/enso-proof, D/late bloomer, E/timing.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "El Niño rankings"
            }
          },
          {
            "name": "plan_ski_trip",
            "title": "Plan a ski trip",
            "description": "Get ski trip recommendations based on dates, preferences, and conditions. Suggests best resorts for a given time period.",
            "inputSchema": {
              "additionalProperties": false,
              "description": "All fields are optional. Provide region and dates when possible for sharper recommendations.",
              "properties": {
                "dates": {
                  "description": "When you plan to travel — month name or date range, e.g. \"February\" or \"Jan 15-22\".",
                  "type": "string"
                },
                "level": {
                  "description": "Skier or snowboarder ability level.",
                  "enum": [
                    "beginner",
                    "intermediate",
                    "advanced",
                    "expert"
                  ],
                  "type": "string"
                },
                "priority": {
                  "description": "Optional main trip priority (single value). Omit for best overall SnowSure score ranking.",
                  "enum": [
                    "powder",
                    "groomed",
                    "terrain-variety",
                    "short-lift-lines",
                    "apres-ski",
                    "family-friendly",
                    "budget"
                  ],
                  "type": "string"
                },
                "region": {
                  "description": "Preferred ski region. Defaults to worldwide (any).",
                  "enum": [
                    "europe",
                    "north-america",
                    "asia",
                    "oceania",
                    "south-america",
                    "africa",
                    "any"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Plan a ski trip"
            }
          },
          {
            "name": "get_webcam_status",
            "title": "Resort webcams",
            "description": "Get live webcam links and status for a resort to see current on-mountain conditions visually — answers \"show me the webcam / live cam at \u003cresort\u003e\", \"current conditions on camera\", and named-cam lookups.",
            "inputSchema": {
              "properties": {
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Resort webcams"
            }
          },
          {
            "name": "get_regional_summary",
            "title": "Regional snow summary",
            "description": "Get a summary of snow conditions across an entire region or country with statistics and top resorts.",
            "inputSchema": {
              "additionalProperties": false,
              "description": "Provide region or country (at least one). Region is preferred for multi-country areas.",
              "properties": {
                "country": {
                  "description": "Exact country name when region is too broad, e.g. \"Switzerland\" or \"Japan\".",
                  "type": "string"
                },
                "region": {
                  "description": "Geographic region to summarize, e.g. alps or japan.",
                  "enum": [
                    "europe",
                    "north-america",
                    "asia",
                    "oceania",
                    "south-america",
                    "africa",
                    "alps",
                    "rockies",
                    "japan"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Regional snow summary"
            }
          },
          {
            "name": "list_insight_categories",
            "title": "List insight categories",
            "description": "List SnowSure insight categories (live conditions, current season, last season, forecast trust, patterns, SnowSure index, ground truth). Use before get_insights to choose a category filter. Lighter than raw leaderboards — retrospective and verification-backed cards.",
            "inputSchema": {
              "additionalProperties": false,
              "description": "No arguments required.",
              "properties": {},
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "List insight categories"
            }
          },
          {
            "name": "get_insights",
            "title": "SnowSure insights",
            "description": "Get categorized SnowSure intelligence insights (not just snow totals). The last_season category is the one to reach for on retrospective questions — how a finished season compared to its 5yr norm, who led it, where the models were trustworthy. Also covers model accuracy by region, longest dry spell, and trend pulse. Insights are hemisphere-scoped narrative cards; when the question names a specific state, province, country or region and wants a ranked list, use get_season_leaderboard instead. Filter by category or insightType=intelligence to skip simple leaderboards.",
            "inputSchema": {
              "additionalProperties": false,
              "description": "All fields optional. Call list_insight_categories first, then pass one category id here.",
              "properties": {
                "category": {
                  "description": "Single insight category id from list_insight_categories. Omit to return all categories.",
                  "enum": [
                    "live_conditions",
                    "current_season",
                    "last_season",
                    "forecast_trust",
                    "patterns",
                    "snowsure_index",
                    "ground_truth",
                    "season_calendar"
                  ],
                  "type": "string"
                },
                "hemisphere": {
                  "description": "Northern (nh) or southern (sh) hemisphere. Defaults to nh.",
                  "enum": [
                    "nh",
                    "sh"
                  ],
                  "type": "string"
                },
                "insightType": {
                  "description": "data = leaderboards only; intelligence = analysis cards (recommended).",
                  "enum": [
                    "data",
                    "intelligence"
                  ],
                  "type": "string"
                },
                "scope": {
                  "description": "snapshot = one hemisphere; global = both hemispheres.",
                  "enum": [
                    "snapshot",
                    "global"
                  ],
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "SnowSure insights"
            }
          },
          {
            "name": "get_ml_trends",
            "title": "ML/AI trends",
            "description": "Fetch SnowSure-unique ML/AI trend datasets from the public REST API. Use for powder-day leaders, bluebird-day leaders, bluebird predictions, improving/stable/declining score pulse, per-model accuracy weights, daily SnowSure score component history, ML extended outlook (days 8–14), global forecast trust, and powder/bluebird event logs. Start with dataset=catalog. Its leaderboards read CURRENT-season counters and are global — they take no season and no country/state filter. For a past season, or for any ranking scoped to a state, province, country or region (\"most snow days in Maine last season\", \"rank BC resorts by season snowfall\"), use get_season_leaderboard instead. Prefer get_insights for narrative intelligence cards; use this for raw rankings and time series.",
            "inputSchema": {
              "additionalProperties": false,
              "description": "dataset is required. slug required for score_components; resort optional for snow_events.",
              "properties": {
                "dataset": {
                  "description": "Trend dataset to fetch. catalog lists all endpoints; powder_days / bluebird_days = season leaderboards; score_components needs slug.",
                  "enum": [
                    "catalog",
                    "powder_days",
                    "bluebird_days",
                    "bluebird_predictions",
                    "trend_summary",
                    "model_accuracy",
                    "score_components",
                    "vs_last_year",
                    "season_stats",
                    "forecast_disagreement",
                    "extended_outlook",
                    "forecast_trust",
                    "snow_events"
                  ],
                  "type": "string"
                },
                "days": {
                  "description": "Lookback days for score_components (default 30, max 365).",
                  "type": "number"
                },
                "eventType": {
                  "description": "Filter snow_events by event type.",
                  "enum": [
                    "powder_day",
                    "bluebird_day"
                  ],
                  "type": "string"
                },
                "limit": {
                  "description": "Max rows for leaderboards or snow_events (default 25, max 100).",
                  "type": "number"
                },
                "minCm": {
                  "description": "Minimum ML days 8–14 snow (cm) when dataset=extended_outlook leaderboard (default 0).",
                  "type": "number"
                },
                "minSpread": {
                  "description": "Minimum 14d model spread (cm) when dataset=forecast_disagreement (default 5).",
                  "type": "number"
                },
                "openOnly": {
                  "description": "When dataset=extended_outlook, filter to open resorts only (default true).",
                  "type": "boolean"
                },
                "resort": {
                  "description": "Resort slug filter when dataset=snow_events.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug — required for score_components, vs_last_year, and season_stats; optional for extended_outlook (per-resort).",
                  "type": "string"
                },
                "stats": {
                  "description": "When dataset=snow_events, return season aggregates instead of events.",
                  "type": "boolean"
                }
              },
              "required": [
                "dataset"
              ],
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "ML/AI trends"
            }
          },
          {
            "name": "get_destination",
            "title": "Destination hub",
            "description": "Multi-mountain destination hub (Niseko, Chamonix, Aspen Snowmass umbrella) with a table of member ski areas. Use ONLY when the user names the hub itself — NOT for photo gallery (→ get_resort_photos on a specific mountain slug) and NOT for resort guide cards (→ get_resort_info).",
            "inputSchema": {
              "properties": {
                "limit": {
                  "description": "Max member resorts to return (default 12)",
                  "type": "number"
                },
                "slug": {
                  "description": "Destination slug (e.g. niseko, chamonix, hakuba, aspen-snowmass) or alias like \"hakuba valley\"",
                  "type": "string"
                }
              },
              "required": [
                "slug"
              ],
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Destination hub"
            }
          },
          {
            "name": "list_saved_resorts",
            "title": "List saved resorts",
            "description": "List the signed-in user's saved resorts. Requires a SnowSure user access token (OAuth); without one it returns an authorization-required error telling the agent how to connect.",
            "inputSchema": {
              "properties": {},
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "List saved resorts"
            }
          },
          {
            "name": "save_resort",
            "title": "Save a resort",
            "description": "Save a resort to the signed-in user's favorites. Requires a SnowSure user access token (OAuth). The slug must be a real SnowSure resort.",
            "inputSchema": {
              "properties": {
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": false,
              "title": "Save a resort"
            }
          },
          {
            "name": "remove_saved_resort",
            "title": "Remove a saved resort",
            "description": "Remove a resort from the signed-in user's saved list. Requires a SnowSure user access token (OAuth).",
            "inputSchema": {
              "properties": {
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": true,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": false,
              "title": "Remove a saved resort"
            }
          },
          {
            "name": "subscribe_alerts",
            "title": "Subscribe to snow alerts",
            "description": "Subscribe the signed-in user to snow alerts. Requires a SnowSure user access token (OAuth). type: 'powder' (OBSERVED fresh snow \u003e= thresholdCm in 24h), 'forecast' (the 14-day FORECAST clears thresholdCm within windowDays), 'trip' (a Powder Trip — a storm inside 14 days with a curated stay to book — at a resort you name, or on a pass via scope 'pass:ikon-pass' / 'pass:epic-pass' / 'pass:mountain-collective'; scope 'any' is not accepted for trips), 'opening' (resort opens for the season), or 'bluebird' (powder day then clear skies).",
            "inputSchema": {
              "properties": {
                "channel": {
                  "description": "Delivery channel (default email)",
                  "enum": [
                    "email",
                    "push"
                  ],
                  "type": "string"
                },
                "scope": {
                  "description": "Resort slug, or 'any' for all resorts (default 'any'); for type 'trip' also 'pass:\u003cpass-id\u003e' (pass:ikon-pass, pass:epic-pass, pass:mountain-collective)",
                  "type": "string"
                },
                "thresholdCm": {
                  "description": "Snow threshold in cm — fresh-snow for powder (default 15), 14-day forecast total for forecast (default 30)",
                  "type": "number"
                },
                "type": {
                  "description": "Alert type",
                  "enum": [
                    "powder",
                    "opening",
                    "bluebird",
                    "forecast",
                    "trip",
                    "chance"
                  ],
                  "type": "string"
                },
                "windowDays": {
                  "description": "forecast alerts only: scan the next N days of forecast (1–14, default 14)",
                  "type": "number"
                }
              },
              "required": [
                "type"
              ],
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": false,
              "openWorldHint": false,
              "readOnlyHint": false,
              "title": "Subscribe to snow alerts"
            }
          },
          {
            "name": "list_alerts",
            "title": "List alert subscriptions",
            "description": "List the signed-in user's alert subscriptions. Requires a SnowSure user access token (OAuth).",
            "inputSchema": {
              "properties": {},
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "List alert subscriptions"
            }
          },
          {
            "name": "unsubscribe_alerts",
            "title": "Unsubscribe from alerts",
            "description": "Remove one of the signed-in user's alert subscriptions by id (from list_alerts). Requires a SnowSure user access token (OAuth).",
            "inputSchema": {
              "properties": {
                "id": {
                  "description": "Subscription id to remove",
                  "type": "string"
                }
              },
              "required": [
                "id"
              ],
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": true,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": false,
              "title": "Unsubscribe from alerts"
            }
          },
          {
            "name": "book_lodging",
            "title": "Find lodging \u0026 booking link",
            "description": "Lodging near a resort via LUXSKI for the signed-in user. With a specific `hotelName` + checkIn + checkOut it PREBOOKS a live rate and returns a LUXSKI checkout URL to complete payment (we hold the rate + attribute the booking; we never charge). Without those it returns availability + a booking link. Requires a SnowSure user access token (OAuth). Payment always completes on LUXSKI.",
            "inputSchema": {
              "properties": {
                "checkIn": {
                  "description": "Check-in date (YYYY-MM-DD)",
                  "type": "string"
                },
                "checkOut": {
                  "description": "Check-out date (YYYY-MM-DD)",
                  "type": "string"
                },
                "guests": {
                  "description": "Number of adults, optional",
                  "type": "number"
                },
                "hotelName": {
                  "description": "Specific hotel to prebook (from find_powder_trips / search). With dates → returns a checkout URL.",
                  "type": "string"
                },
                "powderEventId": {
                  "description": "Optional powder-event id to attribute the booking to",
                  "type": "string"
                },
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": true,
              "readOnlyHint": false,
              "title": "Find lodging \u0026 booking link"
            }
          },
          {
            "name": "get_pass",
            "title": "Ski pass details",
            "description": "Details for a multi-resort ski pass (Epic, Ikon, Mountain Collective, …): operator, season pricing tiers, destination count, regions, and the buy link.",
            "inputSchema": {
              "properties": {
                "passId": {
                  "description": "Pass id, e.g. epic-pass, ikon-pass, mountain-collective",
                  "type": "string"
                }
              },
              "required": [
                "passId"
              ],
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Ski pass details"
            }
          },
          {
            "name": "find_pass_resorts",
            "title": "Resorts on a ski pass",
            "description": "List the resorts on a ski pass, optionally filtered to a region — answers \"is \u003cresort\u003e on the Ikon Pass\" and \"what resorts does the Epic Pass include\". Returns names + SnowSure slugs you can pass to get_resort.",
            "inputSchema": {
              "properties": {
                "passId": {
                  "description": "Pass id, e.g. ikon-pass",
                  "type": "string"
                },
                "region": {
                  "description": "Optional region filter (matches the pass’s region labels)",
                  "type": "string"
                }
              },
              "required": [
                "passId"
              ],
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Resorts on a ski pass"
            }
          },
          {
            "name": "compare_passes",
            "title": "Compare ski passes",
            "description": "Compare ski passes on price, resort coverage, and value — the tool for \"which season pass includes \u003cresort\u003e — Epic or Ikon?\" (pass resortSlugs=[\u003cresort\u003e]). Optionally pass resortSlugs you plan to ski and tripDays to see which pass covers them and whether it beats buying window lift tickets.",
            "inputSchema": {
              "properties": {
                "dailyTicketUsd": {
                  "description": "Override the assumed window ticket rate (default $185)",
                  "type": "number"
                },
                "passIds": {
                  "description": "Passes to compare (default: all). e.g. [\"epic-pass\",\"ikon-pass\"]",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "resortSlugs": {
                  "description": "Resorts you plan to ski — used for coverage scoring",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "tripDays": {
                  "description": "Total days you plan to ski (for the value calc)",
                  "type": "number"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Compare ski passes"
            }
          },
          {
            "name": "compare_resorts",
            "title": "Compare resorts",
            "description": "Compare 2–4 resorts side by side across snow, terrain, and live conditions — every value comes from the SnowSure conditions resolver/contract. Use for head-to-head stat questions phrased as either/or: \"which gets more average annual snowfall, X or Y\", \"which has the greater vertical drop / higher base or summit elevation / bigger skiable area, X or Y\", \"which typically opens earlier, X or Y\". Optionally restrict to specific dimensions.",
            "inputSchema": {
              "properties": {
                "dimensions": {
                  "description": "Optional subset of: score, status, depth, snowfall24h, forecast14d, lifts, runs, snowQuality, base, summit, terrainBeginner, terrainIntermediate, terrainAdvanced, vertical, longestRun",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                },
                "slugs": {
                  "description": "2–4 resort slugs to compare, e.g. [\"verbier\",\"val-disere\"]",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "required": [
                "slugs"
              ],
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Compare resorts"
            }
          },
          {
            "name": "get_my_snow_report",
            "title": "My personalized snow report",
            "description": "Personalized snow report for the signed-in user's saved resorts — live conditions for each, ranked best-first (open resorts with the freshest snow on top). Requires a SnowSure user access token (OAuth).",
            "inputSchema": {
              "properties": {},
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "My personalized snow report"
            }
          },
          {
            "name": "get_storm_watch",
            "title": "Storm Watch",
            "description": "Storm Watch: named multi-day storm systems the models are flagging days ahead, grouped as one event across every resort in the path and ranked biggest first. Use for \"is a storm coming\", \"what's the next big system\", \"where will it dump this week\". Each event carries its window, the forecast total per resort, and a confidence tier (watching / likely / locked). FORECAST, NOT OBSERVATION — nothing here has fallen yet; use get_snow_report or find_best_powder for snow that already has. Returns no events when nothing is being watched, which is the normal state outside a storm cycle.",
            "inputSchema": {
              "properties": {
                "limit": {
                  "description": "Maximum events to return (default 10, max 25).",
                  "type": "number"
                },
                "region": {
                  "description": "Restrict to one scan region: north-america, europe, japan, south-america, oceania. Omit for every region.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Storm Watch"
            }
          },
          {
            "name": "get_avalanche",
            "title": "Avalanche bulletin",
            "description": "Current avalanche danger bulletin for a resort's forecast zone (US, Canada, Switzerland in v1), relayed from the official warning service with the issuer + link. Returns 'no bulletin' when there's no forecast service for the area or it's off-season. NOT a substitute for the official bulletin or avalanche training.",
            "inputSchema": {
              "properties": {
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Avalanche bulletin"
            }
          },
          {
            "name": "get_snow_quality",
            "title": "Snow quality",
            "description": "What the surface actually skis like at a resort — Dry powder, Soft, Packed, Crust, Spring, Wet, Wind-affected or No snow — from SnowSure's SLF SNOWPACK simulation at three elevations, with the reason and how confident it is. This is the question snowfall totals cannot answer: 30 cm that fell dry and 30 cm that fell warm and refroze are the same number and a different day. MODELED, not measured, and it describes the surface only — it is not an avalanche assessment (use get_avalanche). Returns 'not available' where the simulation has not been verified for that region yet.",
            "inputSchema": {
              "properties": {
                "band": {
                  "description": "Elevation band for the layer detail. Defaults to mid, which is also the band the headline label is read from.",
                  "enum": [
                    "base",
                    "mid",
                    "summit"
                  ],
                  "type": "string"
                },
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Snow quality"
            }
          },
          {
            "name": "get_operating_risk",
            "title": "Lift-operation risk",
            "description": "Will the lifts run? A 48-hour operating-risk estimate from the Open-Meteo forecast — wind-hold (gusts), visibility, cold (wind-chill), and heavy-snow control delays. Modeled guidance, NOT the resort's own operating decision — always check live lift status.",
            "inputSchema": {
              "properties": {
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Lift-operation risk"
            }
          },
          {
            "name": "get_road_access",
            "title": "Road \u0026 chain control",
            "description": "Driving access for a resort — answers \"do I need chains to get to \u003cresort\u003e\" and \"is the road to \u003cresort\u003e open\": a SnowSure drive call, feeder-city Saturday drive times on the PGRI pilot, plus chain-control / mountain-pass / road-surface conditions on nearby highways (California via Caltrans, Washington via WSDOT, Oregon via ODOT TripCheck, Montana via MDT 511, Wyoming via WYDOT 511, Colorado via CDOT, Utah via UDOT, British Columbia via DriveBC, Ontario via Ontario 511, New England via Compass C2C, Virginia via VDOT 511, New Zealand via NZTA). Returns 'no road data' outside the covered area. Links to the official DOT map; the resort's road status is authoritative.",
            "inputSchema": {
              "properties": {
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Road \u0026 chain control"
            }
          },
          {
            "name": "get_road_cameras",
            "title": "Road cameras",
            "description": "Live roadside DOT/CCTV camera stills on the highways near a resort — shows what the drive actually looks like right now (California via Caltrans, Washington via WSDOT, Mount Rainier NP via NPS, Oregon via ODOT TripCheck, Montana via MDT 511, Wyoming via WYDOT 511, Utah via UDOT, British Columbia via DriveBC, Maryland via CHART/iMAP, New England via Compass C2C, Virginia via VDOT 511, New Zealand via NZTA, Alpine Europe via NAPSPAN). Distinct from resort webcams. Returns 'no road cameras' outside the covered area; each camera includes a live image URL.",
            "inputSchema": {
              "properties": {
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Road cameras"
            }
          },
          {
            "name": "get_road_weather",
            "title": "Roadside weather",
            "description": "Measured roadside weather (RWIS) on the highways near a resort — surface + air temperature, visibility, wind, precipitation (Colorado via CDOT, Washington via WSDOT, Oregon via ODOT TripCheck RWIS, Montana via MDT 511, Wyoming via WYDOT 511, Utah via UDOT, New England via Compass C2C). Sensor data on the actual road, distinct from the modeled get_operating_risk. Returns 'no road weather' outside the covered area.",
            "inputSchema": {
              "properties": {
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Roadside weather"
            }
          },
          {
            "name": "plan_ski_road_trip",
            "title": "Plan a ski road trip",
            "description": "Plan a multi-stop ski road trip: picks the top-scoring resorts in a region, orders them into a drivable route (nearest-neighbour, minimal backtracking), allocates your days across stops, estimates each driving leg, and folds in live conditions plus chain-control where covered. Args: region (required), days, optional pass.",
            "inputSchema": {
              "properties": {
                "days": {
                  "maximum": 21,
                  "minimum": 2,
                  "type": "integer"
                },
                "pass": {
                  "description": "Optional ski pass to limit stops (e.g. epic, ikon)",
                  "type": "string"
                },
                "region": {
                  "description": "europe | north-america | asia | oceania | south-america | alps | rockies | japan | any",
                  "type": "string"
                }
              },
              "required": [
                "region"
              ],
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Plan a ski road trip"
            }
          },
          {
            "name": "find_flights_to_powder",
            "title": "Flights to the powder",
            "description": "Complete the trip: from a resort, find the nearest gateway airport(s) and get flight-search links from your home airport. The \"get there\" leg of the funnel — pair with find_best_powder / find_powder_trips (find fresh snow) → this → book_lodging (stay). Args: resort (slug, required — use search_resorts to resolve a name), optional origin (your home-airport IATA like DEN, or a city name).",
            "inputSchema": {
              "properties": {
                "origin": {
                  "description": "Your departure airport IATA (e.g. DEN, LHR) or a city name. Optional — omit for an origin-less flight search.",
                  "type": "string"
                },
                "resort": {
                  "description": "Same as `slug`: the resort slug or name. Pass either one.",
                  "type": "string"
                },
                "slug": {
                  "description": "Resort slug or name, e.g. \"portillo\" or \"Portillo\". Required unless `resort` is given.",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "outputSchema": {
              "additionalProperties": true,
              "properties": {
                "markdown": {
                  "description": "Human-readable markdown summary of the tool result (may be omitted when structuredContent carries a typed payload; content[0].text always has the prose).",
                  "type": "string"
                }
              },
              "type": "object"
            },
            "annotations": {
              "destructiveHint": false,
              "idempotentHint": true,
              "openWorldHint": false,
              "readOnlyHint": true,
              "title": "Flights to the powder"
            }
          }
        ]
      },
      "name": "SnowSure — Snow \u0026 Ski",
      "note": "Indexed from the official MCP registry: facts and our own checks, not reviewed, so no score, grade or rank.",
      "packages": [
        {
          "registryType": "npm",
          "identifier": "snowsure-mcp-server",
          "version": "3.7.0",
          "transport": "stdio"
        }
      ],
      "pageJsonUrl": "https://www.anchorterminal.com/tools/snowsure-snow.json",
      "popularity": {
        "npmWeekly": 23
      },
      "registryName": "ai.snowsure/snow",
      "remotes": [
        {
          "type": "streamable-http",
          "url": "https://www.snowsure.ai/mcp"
        }
      ],
      "repository": "https://github.com/mikeslone/snowsure-web",
      "reviewed": false,
      "slug": "snowsure-snow",
      "source": "the official MCP registry",
      "sourceUrl": "https://registry.modelcontextprotocol.io/v0.1/servers?search=ai.snowsure/snow",
      "summary": "Live ski snow, multi-model forecasts, powder rankings \u0026 a grounded Answer Engine for 500+ resorts.",
      "updatedAt": "2026-07-03T10:28:38Z",
      "url": "https://www.anchorterminal.com/tools/snowsure-snow",
      "vendor": "snowsure.ai",
      "vendorUrl": "https://www.snowsure.ai",
      "version": "1.0.4",
      "websiteUrl": "https://www.snowsure.ai",
      "where": "both",
      "why": [
        "vendor"
      ]
    }
  },
  "kind": "anchor.page",
  "links": {
    "api": "https://www.anchorterminal.com/api/v1/index.json",
    "html": "https://www.anchorterminal.com/tools/snowsure-snow",
    "json": "https://www.anchorterminal.com/tools/snowsure-snow.json",
    "llms": "https://www.anchorterminal.com/llms.txt",
    "markdown": "https://www.anchorterminal.com/tools/snowsure-snow.md",
    "slim": "https://www.anchorterminal.com/tools/snowsure-snow.min.md"
  },
  "markdown": "# SnowSure — Snow \u0026 Ski\n\n\u003e Indexed, not reviewed: facts from the official MCP registry and our own checks. No score, grade or rank, and not in the rankings until the panel reviews it. How the index works: https://www.anchorterminal.com/indexed/\n\n- Kind: MCP server, by snowsure.ai (https://www.snowsure.ai)\n- Category: Weather \u0026 climate data (https://www.anchorterminal.com/categories/weather.md)\n- Listed because: It's published in the registry under snowsure.ai, a namespace the registry only gives to whoever proves they control that domain.\n- What the official MCP registry says: Live ski snow, multi-model forecasts, powder rankings \u0026 a grounded Answer Engine for 500+ resorts.\n\n## Facts\n\n- MCP registry: `ai.snowsure/snow` 1.0.4\n- Endpoint: https://www.snowsure.ai/mcp (streamable HTTP)\n- Package: npm `snowsure-mcp-server` (stdio)\n- Source: https://github.com/mikeslone/snowsure-web\n- Website: https://www.snowsure.ai\n- npm downloads a week: 23\n- Registry entry updated: 2026-07-03\n\n## Tools\n\n- Tools it lists (48, about 17,311 tokens of context, `tools/list` without credentials over MCP 2025-11-25, checked 2026-10-04 22:20 UTC):\n  - `ask_snowdata` (read-only): Text-only Q\u0026A grounded in SnowSure data (~1s). Use for open-ended questions, terrain %, expert-run counts, advice, AND specifically: El Niño / ENSO / 2026-27…\n  - `get_snow_report` (read-only): Get the global snow report with top-ranked resorts by snow conditions. Returns resorts sorted by SnowSure score, forecast, or recent snowfall. Use this for…\n  - `get_powder_reels` (read-only): Powder Reels — SnowSure archived storm timelapses with verified accumulation data burned into the frames (\"Proof of Powder\"). Use for \"how much did it snow at…\n  - `get_resort_info` (read-only): INTERACTIVE RESORT GUIDE CARD (Resort Info sidebar UI) — elevation, vertical, lifts, runs, skiable acres, average snowfall, season dates, ski passes, editorial…\n  - `get_resort_photos` (read-only): INTERACTIVE PHOTO GALLERY CAROUSEL — official SnowSure resort photos (hero + Sanity gallery). REQUIRED for: photos, pictures, images, gallery, \"show me photos…\n  - `get_resort` (read-only): Single-resort data with a REQUIRED card parameter that picks the interactive UI. card=guide → resort info card (elevation, lifts, season dates). card=photos →…\n  - `search_resorts` (read-only): Search for ski resorts by name, country, or region. Returns matching resorts with basic conditions. Use for \"find resorts in [location]\" or \"search [name]\"…\n  - `find_best_powder` (read-only): Find resorts with the freshest powder snow right now. Returns resorts sorted by 24-hour snowfall. Use for \"where is it snowing?\" or \"fresh powder\" queries.\n  - `find_powder_trips` (read-only): Powder trips you can BOOK: ranks resorts by their 14-day forecast (best chance of fresh snow in the bookable window) and returns handpicked luxury ski hotels…\n  - `compare_forecasts` (read-only): Compare snow forecasts across 7 weather models (ECMWF, GFS, GEM, JMA, ICON, Météo-France, Met Norway) for a resort. Shows model agreement and uncertainty. Use…\n  - `get_weather_forecast` (read-only): Get detailed day-by-day weather forecast for a resort including temperature, snowfall, wind, and conditions for each of the next 7 days — 14 with SnowSure Pro,…\n  - `find_resorts_by_criteria` (read-only): Find resorts matching specific criteria like minimum snow depth, elevation range, number of runs, or SnowSure rating. Advanced filtering for trip planning.\n  - `get_southern_hemisphere_report` (read-only): Get snow conditions for Southern Hemisphere ski resorts (Australia, New Zealand, Argentina, Chile) currently in season. Answers \"is Perisher / Portillo / Valle…\n  - `get_season_openings` (read-only): Resorts whose season OPENING DATE is a specific day — answers \"what opens today?\", \"opening this week\", or \"which resorts start their season on June 27?\".…\n  - `get_season_leaderboard` (read-only): Rank resorts by how a season actually went, scoped to a place. This is the tool for \"which \u003cplace\u003e resort had the most \u003cmetric\u003e last season\" — the single most…\n  - `get_snow_history` (read-only): One resort's own snowfall history: season totals, comparison to its 5-year and 30-year averages, and best months to visit. Scoped to a SINGLE resort — for…\n  - `get_monthly_snow` (read-only): Typical snow for a resort MONTH BY MONTH, from ~30 years of ERA5 reanalysis — average snowfall, snow days, base and peak depth, and biggest storm, plus…\n  - `get_trip_window` (read-only): Historical odds for a SPECIFIC trip window at one resort — 'Whistler on March 27', 'Vail Jan 10–17'. From ~30 years of ERA5 monthly history it blends the…\n  - `get_elnino_signal` (read-only): Resort-level El Niño / ENSO outlook from SnowSure's 30-year fleet dataset (559 ranked resorts). Returns rank, tier, strong/all-event signal, analog winters…\n  - `get_elnino_rankings` (read-only): Ranked El Niño ski resorts from SnowSure's 30-year fleet table. Filter by region (south-america, north-america, europe, asia, oceania) or tier (A prime / B…\n  - `plan_ski_trip` (read-only): Get ski trip recommendations based on dates, preferences, and conditions. Suggests best resorts for a given time period.\n  - `get_webcam_status` (read-only): Get live webcam links and status for a resort to see current on-mountain conditions visually — answers \"show me the webcam / live cam at \u003cresort\u003e\", \"current…\n  - `get_regional_summary` (read-only): Get a summary of snow conditions across an entire region or country with statistics and top resorts.\n  - `list_insight_categories` (read-only): List SnowSure insight categories (live conditions, current season, last season, forecast trust, patterns, SnowSure index, ground truth). Use before…\n  - `get_insights` (read-only): Get categorized SnowSure intelligence insights (not just snow totals). The last_season category is the one to reach for on retrospective questions — how a…\n  - `get_ml_trends` (read-only): Fetch SnowSure-unique ML/AI trend datasets from the public REST API. Use for powder-day leaders, bluebird-day leaders, bluebird predictions,…\n  - `get_destination` (read-only): Multi-mountain destination hub (Niseko, Chamonix, Aspen Snowmass umbrella) with a table of member ski areas. Use ONLY when the user names the hub itself — NOT…\n  - `list_saved_resorts` (read-only): List the signed-in user's saved resorts. Requires a SnowSure user access token (OAuth); without one it returns an authorization-required error telling the…\n  - `save_resort` (writes): Save a resort to the signed-in user's favorites. Requires a SnowSure user access token (OAuth). The slug must be a real SnowSure resort.\n  - `remove_saved_resort` (writes): Remove a resort from the signed-in user's saved list. Requires a SnowSure user access token (OAuth).\n  - `subscribe_alerts` (writes): Subscribe the signed-in user to snow alerts. Requires a SnowSure user access token (OAuth). type: 'powder' (OBSERVED fresh snow \u003e= thresholdCm in 24h),…\n  - `list_alerts` (read-only): List the signed-in user's alert subscriptions. Requires a SnowSure user access token (OAuth).\n  - `unsubscribe_alerts` (writes): Remove one of the signed-in user's alert subscriptions by id (from list_alerts). Requires a SnowSure user access token (OAuth).\n  - `book_lodging` (writes): Lodging near a resort via LUXSKI for the signed-in user. With a specific `hotelName` + checkIn + checkOut it PREBOOKS a live rate and returns a LUXSKI checkout…\n  - `get_pass` (read-only): Details for a multi-resort ski pass (Epic, Ikon, Mountain Collective, …): operator, season pricing tiers, destination count, regions, and the buy link.\n  - `find_pass_resorts` (read-only): List the resorts on a ski pass, optionally filtered to a region — answers \"is \u003cresort\u003e on the Ikon Pass\" and \"what resorts does the Epic Pass include\". Returns…\n  - `compare_passes` (read-only): Compare ski passes on price, resort coverage, and value — the tool for \"which season pass includes \u003cresort\u003e — Epic or Ikon?\" (pass resortSlugs=[\u003cresort\u003e]).…\n  - `compare_resorts` (read-only): Compare 2–4 resorts side by side across snow, terrain, and live conditions — every value comes from the SnowSure conditions resolver/contract. Use for…\n  - `get_my_snow_report` (read-only): Personalized snow report for the signed-in user's saved resorts — live conditions for each, ranked best-first (open resorts with the freshest snow on top).…\n  - `get_storm_watch` (read-only): Storm Watch: named multi-day storm systems the models are flagging days ahead, grouped as one event across every resort in the path and ranked biggest first.…\n  - `get_avalanche` (read-only): Current avalanche danger bulletin for a resort's forecast zone (US, Canada, Switzerland in v1), relayed from the official warning service with the issuer +…\n  - `get_snow_quality` (read-only): What the surface actually skis like at a resort — Dry powder, Soft, Packed, Crust, Spring, Wet, Wind-affected or No snow — from SnowSure's SLF SNOWPACK…\n  - `get_operating_risk` (read-only): Will the lifts run? A 48-hour operating-risk estimate from the Open-Meteo forecast — wind-hold (gusts), visibility, cold (wind-chill), and heavy-snow control…\n  - `get_road_access` (read-only): Driving access for a resort — answers \"do I need chains to get to \u003cresort\u003e\" and \"is the road to \u003cresort\u003e open\": a SnowSure drive call, feeder-city Saturday…\n  - `get_road_cameras` (read-only): Live roadside DOT/CCTV camera stills on the highways near a resort — shows what the drive actually looks like right now (California via Caltrans, Washington…\n  - `get_road_weather` (read-only): Measured roadside weather (RWIS) on the highways near a resort — surface + air temperature, visibility, wind, precipitation (Colorado via CDOT, Washington via…\n  - `plan_ski_road_trip` (read-only): Plan a multi-stop ski road trip: picks the top-scoring resorts in a region, orders them into a drivable route (nearest-neighbour, minimal backtracking),…\n  - `find_flights_to_powder` (read-only): Complete the trip: from a resort, find the nearest gateway airport(s) and get flight-search links from your home airport. The \"get there\" leg of the funnel —…\n- How its tools read to an agent (0 errors, 4 warnings, 0 notes, about 17,311 tokens; rules at https://www.anchorterminal.com/check.md; not part of the score):\n  - warn TC11 plan_ski_road_trip: 1 parameter without a description: days\n  - warn TC14 get_season_leaderboard: allowed values are in the description, not an enum: season\n  - warn TC14 plan_ski_road_trip: allowed values are in the description, not an enum: region\n  - warn TC23 server: 48 tools, about 16,249 tokens of definitions\n\n- JSON: https://www.anchorterminal.com/api/v1/tools/snowsure-snow.json\n- Being indexed says nothing about quality, and nobody can pay for it. Ask for a review: https://www.anchorterminal.com/builders/#claiming\n",
  "meta": {
    "attribution": "Anchor Terminal (https://www.anchorterminal.com)",
    "docs": "https://www.anchorterminal.com/docs/",
    "generatedAt": "2026-10-05",
    "license": "CC-BY-4.0",
    "method": "https://www.anchorterminal.com/benchmark/",
    "methodology": "0.3",
    "openapi": "https://www.anchorterminal.com/openapi.json",
    "preview": false,
    "run": "2026-10-01",
    "runLabel": "October 2026 research run"
  },
  "page": {
    "breadcrumbs": [
      {
        "name": "Home",
        "url": "https://www.anchorterminal.com/"
      },
      {
        "name": "Terminal",
        "url": "https://www.anchorterminal.com/tools/"
      },
      {
        "name": "Indexed",
        "url": "https://www.anchorterminal.com/indexed/"
      },
      {
        "name": "SnowSure — Snow \u0026 Ski",
        "url": ""
      }
    ],
    "description": "SnowSure — Snow \u0026 Ski, an MCP server by snowsure.ai, listed from the official MCP registry. Indexed, not reviewed: facts and our own checks, no score or ranking. Live ski snow, multi-model forecasts, powder rankings \u0026 a grounded Answer Engine for 500+ resorts.",
    "facts": [
      "not reviewed",
      "not ranked",
      "facts only"
    ],
    "h1": "SnowSure — Snow \u0026 Ski",
    "image": "https://www.anchorterminal.com/assets/og/indexed.png",
    "path": "/tools/snowsure-snow",
    "published": "",
    "section": "indexed",
    "title": "SnowSure — Snow \u0026 Ski, indexed from the official MCP registry",
    "toc": null,
    "updated": "2026-10-05",
    "url": "https://www.anchorterminal.com/tools/snowsure-snow"
  },
  "tokens": {
    "markdown": 2900,
    "slim": 2830
  },
  "version": 1
}
