Skip to main content
Glama

Route conditions

get_route_conditions
Read-onlyIdempotent

Returns up to five days of public route conditions, anchored to the route high point, with catalog gain, source provenance, and timestamps. An optional activity input selects one of the route's activities listed by search_objectives. Days can carry the avalanche center, bulletin state and forecast link (danger ratings are not served), forecast uncertainty, the corn harvest window, and rock conditions where the forecast page shows them for the activity, and the document carries the route's permit entry and trailhead road access. With the markdown format, these sections appear in structuredContent only. For what the whole trip looks like, get_trip_brief returns the forecast page sections in one call. Informational only.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
slugYesPublic objective slug returned by search_objectives.
formatNoText representation; structured data is included in either format.json
activityNoOptional activity mode for the route forecast. Accepted values are the route's activities entries from search_objectives. When omitted, the route's default visible activity is used.
route_idYesRoute identifier returned by search_objectives.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • changedOutput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "accuracyRegionId": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "airQualityTrend": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "backfilledFrom": {
      -            "type": "string"
      -          },
      -          "firstDate": {
      -            "type": "string"
      -          },
      -          "lastDate": {
      -            "type": "string"
      -          },
      -          "latestValue": {
      -            "type": "number"
      -          },
      -          "scale": {
      -            "enum": [
      -              "us_aqi",
      -              "aqhi"
      -            ]
      -          }
      -        },
      -        "required": [
      -          "scale",
      -          "firstDate",
      -          "lastDate",
      -          "latestValue"
      -        ],
      -        "type": "object"
      -      },
      -      "days": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "airQuality": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "aqi": {
      -                  "type": "number"
      -                },
      -                "category": {
      -                  "type": "string"
      -                },
      -                "scale": {
      -                  "enum": [
      -                    "us_aqi",
      -                    "aqhi"
      -                  ]
      -                },
      -                "sourceName": {
      -                  "type": "string"
      -                },
      -                "warning": {
      -                  "type": "boolean"
      -                }
      -              },
      -              "required": [
      -                "aqi",
      -                "category",
      -                "scale",
      -                "sourceName",
      -                "warning"
      -              ],
      -              "type": "object"
      -            },
      -            "avalancheBasis": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "centerName": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "included": {
      -                  "type": "boolean"
      -                },
      -                "reason": {
      -                  "enum": [
      -                    "off_season",
      -                    "no_zone",
      -                    "not_yet_issued",
      -                    "expired",
      -                    "unavailable",
      -                    null
      -                  ]
      -                }
      -              },
      -              "required": [
      -                "included",
      -                "reason",
      -                "centerName"
      -              ],
      -              "type": "object"
      -            },
      -            "avalancheDanger": {
      -              "enum": [
      -                "low",
      -                "moderate",
      -                "considerable",
      -                "high",
      -                "extreme",
      -                "no_data"
      -              ]
      -            },
      -            "cornHarvestWindow": {
      -              "anyOf": [
      -                {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "status": {
      -                      "type": "string"
      -                    },
      -                    "window": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": false,
      -                          "properties": {
      -                            "end": {
      -                              "type": "string"
      -                            },
      -                            "start": {
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "start",
      -                            "end"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    }
      -                  },
      -                  "required": [
      -                    "status",
      -                    "window"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "date": {
      -              "type": "string"
      -            },
      -            "moonIllumination": {
      -              "type": "number"
      -            },
      -            "moonPhase": {
      -              "enum": [
      -                "new",
      -                "waxing_crescent",
      -                "first_quarter",
      -                "waxing_gibbous",
      -                "full",
      -                "waning_gibbous",
      -                "last_quarter",
      -                "waning_crescent"
      -              ]
      -            },
      -            "overallRating": {
      -              "enum": [
      -                "excellent",
      -                "good",
      -                "marginal",
      -                "poor",
      -                "dangerous",
      -                null
      -              ]
      -            },
      -            "precipChancePercent": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            },
      -            "provenance": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "weather": {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "fetchedAt": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "sourceName": {
      -                      "type": "string"
      -                    },
      -                    "url": {
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "sourceName"
      -                  ],
      -                  "type": "object"
      -                }
      -              },
      -              "required": [
      -                "weather"
      -              ],
      -              "type": "object"
      -            },
      -            "referencePoint": {
      -              "const": "route-high-point"
      -            },
      -            "snowpackCondition": {
      -              "enum": [
      -                "powder",
      -                "packed_powder",
      -                "wind_crust",
      -                "sun_crust",
      -                "corn",
      -                "ice",
      -                "wet_heavy",
      -                "bare"
      -              ]
      -            },
      -            "summitTempHighF": {
      -              "type": "number"
      -            },
      -            "summitTempLowF": {
      -              "type": "number"
      -            },
      -            "sunrise": {
      -              "type": "string"
      -            },
      -            "sunriseAt": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "sunset": {
      -              "type": "string"
      -            },
      -            "sunsetAt": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "windAvgMph": {
      -              "type": "number"
      -            },
      -            "windDirection": {
      -              "type": "string"
      -            },
      -            "windMaxMph": {
      -              "type": "number"
      -            }
      -          },
      -          "required": [
      -            "date",
      -            "overallRating",
      -            "summitTempLowF",
      -            "summitTempHighF",
      -            "windMaxMph",
      -            "windDirection",
      -            "precipChancePercent",
      -            "provenance",
      -            "sunrise",
      -            "sunset",
      -            "sunriseAt",
      -            "sunsetAt",
      -            "moonPhase",
      -            "moonIllumination",
      -            "snowpackCondition",
      -            "referencePoint",
      -            "windAvgMph"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 5,
      -        "type": "array"
      -      },
      -      "disclaimer": {
      -        "type": "string"
      -      },
      -      "disclaimerText": {
      -        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      -      },
      -      "lockedOutlook": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "lockedDayCount": {
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "maxHorizonDays": {
      -            "const": 15
      -          },
      -          "note": {
      -            "const": "This response covers days 1 to 5. Later days are published on climbcast.io."
      -          },
      -          "throughDate": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "lockedDayCount",
      -          "throughDate",
      -          "maxHorizonDays",
      -          "note"
      -        ],
      -        "type": "object"
      -      },
      -      "objective": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "name": {
      -            "type": "string"
      -          },
      -          "slug": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "slug",
      -          "name"
      -        ],
      -        "type": "object"
      -      },
      -      "route": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "activityMode": {
      -            "enum": [
      -              "mountaineering",
      -              "skimo_splitboard",
      -              "rock_climbing"
      -            ]
      -          },
      -          "catalogGainFt": {
      -            "type": "number"
      -          },
      -          "highPointElevationFt": {
      -            "type": "number"
      -          },
      -          "id": {
      -            "type": "string"
      -          },
      -          "name": {
      -            "type": "string"
      -          },
      -          "supportedActivities": {
      -            "items": {
      -              "enum": [
      -                "mountaineering",
      -                "skimo_splitboard",
      -                "rock_climbing"
      -              ]
      -            },
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "name",
      -          "catalogGainFt",
      -          "activityMode",
      -          "supportedActivities"
      -        ],
      -        "type": "object"
      -      },
      -      "source": {
      -        "const": "ClimbCast"
      -      },
      -      "sourceUrl": {
      -        "type": "string"
      -      },
      -      "sources": {
      -        "items": {
      -          "$ref": "#/$defs/source"
      -        },
      -        "type": "array"
      -      },
      -      "timeZone": {
      -        "type": "string"
      -      },
      -      "updatedAt": {
      -        "type": "string"
      -      },
      -      "utcOffsetSeconds": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "source",
      -      "sourceUrl",
      -      "disclaimer",
      -      "objective",
      -      "accuracyRegionId",
      -      "updatedAt",
      -      "sources",
      -      "disclaimerText",
      -      "route",
      -      "days"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "disclaimerText": {
      -        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "status": {
      -        "const": "not_found"
      -      },
      -      "suggestions": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "name": {
      -              "type": "string"
      -            },
      -            "slug": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "slug",
      -            "name"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 3,
      -        "type": "array"
      -      },
      -      "try": {
      -        "const": "search_objectives"
      -      }
      -    },
      -    "required": [
      -      "status",
      -      "message",
      -      "try",
      -      "suggestions",
      -      "disclaimerText"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "disclaimerText": {
      -        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      -      },
      -      "error": {
      -        "const": "invalid_input"
      -      },
      -      "fields": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "allowed": {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "field": {
      -              "type": "string"
      -            },
      -            "problem": {
      -              "enum": [
      -                "required",
      -                "type",
      -                "enum",
      -                "length",
      -                "pattern",
      -                "range",
      -                "format",
      -                "not_in_window",
      -                "unexpected"
      -              ]
      -            }
      -          },
      -          "required": [
      -            "field",
      -            "problem"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "requestId": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "message",
      -      "requestId",
      -      "disclaimerText",
      -      "fields"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "disclaimerText": {
      -        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      -      },
      -      "error": {
      -        "enum": [
      -          "MCP_BUSY",
      -          "MCP_RESPONSE_TOO_LARGE",
      -          "MCP_VOICE_GATE_FAILED",
      -          "MCP_TOOL_FAILED",
      -          "rate_limited",
      -          "processing_limit",
      -          "response_limit"
      -        ]
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "requestId": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "message",
      -      "requestId",
      -      "disclaimerText"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "access": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "appliesTo": {
      +            "enum": [
      +              "route",
      +              "objective"
      +            ]
      +          },
      +          "lastReviewed": {
      +            "type": "string"
      +          },
      +          "managingUnit": {
      +            "type": "string"
      +          },
      +          "notes": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "overnightParking": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "details": {
      +                "type": "string"
      +              },
      +              "lastReviewed": {
      +                "type": "string"
      +              },
      +              "officialUrl": {
      +                "type": "string"
      +              },
      +              "overnightAllowed": {
      +                "type": "boolean"
      +              },
      +              "overnightAllowedLabel": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "overnightAllowed",
      +              "overnightAllowedLabel",
      +              "details",
      +              "officialUrl",
      +              "lastReviewed"
      +            ],
      +            "type": "object"
      +          },
      +          "parkingPasses": {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "acceptedAlternativeLabels": {
      +                  "items": {
      +                    "type": "string"
      +                  },
      +                  "type": "array"
      +                },
      +                "acceptedAlternatives": {
      +                  "items": {
      +                    "enum": [
      +                      "northwest_forest_pass",
      +                      "discover_pass",
      +                      "sno_park",
      +                      "america_the_beautiful",
      +                      "national_park_entrance",
      +                      "vehicle_day_use",
      +                      "bc_parks_day_use",
      +                      "none",
      +                      "other"
      +                    ]
      +                  },
      +                  "type": "array"
      +                },
      +                "appliesWhen": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "aboveElevationFt": {
      +                      "type": "number"
      +                    },
      +                    "dayUseOnly": {
      +                      "const": true
      +                    },
      +                    "glacierTravel": {
      +                      "type": "boolean"
      +                    },
      +                    "groupSizeAtLeast": {
      +                      "type": "number"
      +                    },
      +                    "note": {
      +                      "type": "string"
      +                    },
      +                    "overnightOnly": {
      +                      "const": true
      +                    },
      +                    "seasonEndMonth": {
      +                      "type": "number"
      +                    },
      +                    "seasonStartMonth": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [],
      +                  "type": "object"
      +                },
      +                "fees": {
      +                  "items": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "amount": {
      +                        "type": "number"
      +                      },
      +                      "currency": {
      +                        "enum": [
      +                          "USD",
      +                          "CAD"
      +                        ]
      +                      },
      +                      "note": {
      +                        "type": "string"
      +                      },
      +                      "unit": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "amount",
      +                      "currency",
      +                      "unit"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "lastReviewed": {
      +                  "type": "string"
      +                },
      +                "officialUrl": {
      +                  "type": "string"
      +                },
      +                "pass": {
      +                  "enum": [
      +                    "northwest_forest_pass",
      +                    "discover_pass",
      +                    "sno_park",
      +                    "america_the_beautiful",
      +                    "national_park_entrance",
      +                    "vehicle_day_use",
      +                    "bc_parks_day_use",
      +                    "none",
      +                    "other"
      +                  ]
      +                },
      +                "passLabel": {
      +                  "type": "string"
      +                },
      +                "required": {
      +                  "enum": [
      +                    "yes",
      +                    "no",
      +                    "seasonal",
      +                    "self-issue",
      +                    "conditional"
      +                  ]
      +                },
      +                "requiredLabel": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "pass",
      +                "passLabel",
      +                "required",
      +                "requiredLabel",
      +                "fees",
      +                "officialUrl",
      +                "lastReviewed"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "permits": {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "appliesWhen": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "aboveElevationFt": {
      +                      "type": "number"
      +                    },
      +                    "dayUseOnly": {
      +                      "const": true
      +                    },
      +                    "glacierTravel": {
      +                      "type": "boolean"
      +                    },
      +                    "groupSizeAtLeast": {
      +                      "type": "number"
      +                    },
      +                    "note": {
      +                      "type": "string"
      +                    },
      +                    "overnightOnly": {
      +                      "const": true
      +                    },
      +                    "seasonEndMonth": {
      +                      "type": "number"
      +                    },
      +                    "seasonStartMonth": {
      +                      "type": "number"
      +                    }
      +                  },
      +                  "required": [],
      +                  "type": "object"
      +                },
      +                "feeFreeDaysNote": {
      +                  "type": "string"
      +                },
      +                "fees": {
      +                  "items": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "amount": {
      +                        "type": "number"
      +                      },
      +                      "currency": {
      +                        "enum": [
      +                          "USD",
      +                          "CAD"
      +                        ]
      +                      },
      +                      "note": {
      +                        "type": "string"
      +                      },
      +                      "unit": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "amount",
      +                      "currency",
      +                      "unit"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "issueMethod": {
      +                  "items": {
      +                    "enum": [
      +                      "online_prepay",
      +                      "online_reservation",
      +                      "ranger_station",
      +                      "ticket_window",
      +                      "self_issue_trailhead",
      +                      "lottery",
      +                      "none"
      +                    ]
      +                  },
      +                  "type": "array"
      +                },
      +                "issueMethodLabels": {
      +                  "items": {
      +                    "type": "string"
      +                  },
      +                  "type": "array"
      +                },
      +                "kind": {
      +                  "enum": [
      +                    "climbing",
      +                    "wilderness_overnight",
      +                    "wilderness_day",
      +                    "monument_climbing",
      +                    "timed_entry",
      +                    "cave",
      +                    "other"
      +                  ]
      +                },
      +                "kindLabel": {
      +                  "type": "string"
      +                },
      +                "lastReviewed": {
      +                  "type": "string"
      +                },
      +                "officialUrl": {
      +                  "type": "string"
      +                },
      +                "payUrl": {
      +                  "type": "string"
      +                },
      +                "quota": {
      +                  "type": "string"
      +                },
      +                "required": {
      +                  "enum": [
      +                    "yes",
      +                    "no",
      +                    "seasonal",
      +                    "self-issue",
      +                    "conditional"
      +                  ]
      +                },
      +                "requiredLabel": {
      +                  "type": "string"
      +                },
      +                "validityNote": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "kind",
      +                "kindLabel",
      +                "required",
      +                "requiredLabel",
      +                "fees",
      +                "issueMethod",
      +                "issueMethodLabels",
      +                "officialUrl",
      +                "lastReviewed"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "verifyBeforeTripNote": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "appliesTo",
      +          "permits",
      +          "parkingPasses",
      +          "notes",
      +          "lastReviewed"
      +        ],
      +        "type": "object"
      +      },
      +      "accuracyRegionId": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "airQualityTrend": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "backfilledFrom": {
      +            "type": "string"
      +          },
      +          "firstDate": {
      +            "type": "string"
      +          },
      +          "lastDate": {
      +            "type": "string"
      +          },
      +          "latestValue": {
      +            "type": "number"
      +          },
      +          "scale": {
      +            "enum": [
      +              "us_aqi",
      +              "aqhi"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "scale",
      +          "firstDate",
      +          "lastDate",
      +          "latestValue"
      +        ],
      +        "type": "object"
      +      },
      +      "days": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "airQuality": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "aqi": {
      +                  "type": "number"
      +                },
      +                "category": {
      +                  "type": "string"
      +                },
      +                "scale": {
      +                  "enum": [
      +                    "us_aqi",
      +                    "aqhi"
      +                  ]
      +                },
      +                "sourceName": {
      +                  "type": "string"
      +                },
      +                "warning": {
      +                  "type": "boolean"
      +                }
      +              },
      +              "required": [
      +                "aqi",
      +                "category",
      +                "scale",
      +                "sourceName",
      +                "warning"
      +              ],
      +              "type": "object"
      +            },
      +            "avalanche": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "bulletinState": {
      +                  "enum": [
      +                    "no_zone",
      +                    "off_season",
      +                    "no_rating",
      +                    "between_issuances",
      +                    "not_yet_issued",
      +                    "unavailable",
      +                    "active"
      +                  ]
      +                },
      +                "bulletinUrl": {
      +                  "type": "string"
      +                },
      +                "center": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "name": {
      +                      "oneOf": [
      +                        {
      +                          "type": "string"
      +                        },
      +                        {
      +                          "additionalProperties": false,
      +                          "properties": {
      +                            "attribution": {
      +                              "type": "string"
      +                            },
      +                            "issuedAt": {
      +                              "type": [
      +                                "string",
      +                                "null"
      +                              ]
      +                            },
      +                            "kind": {
      +                              "const": "third_party_quote"
      +                            },
      +                            "text": {
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "kind",
      +                            "text",
      +                            "attribution",
      +                            "issuedAt"
      +                          ],
      +                          "type": "object"
      +                        }
      +                      ]
      +                    },
      +                    "url": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "name"
      +                  ],
      +                  "type": "object"
      +                },
      +                "isCurrent": {
      +                  "type": "boolean"
      +                }
      +              },
      +              "required": [
      +                "bulletinState",
      +                "isCurrent"
      +              ],
      +              "type": "object"
      +            },
      +            "avalancheBasis": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "centerName": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "included": {
      +                  "type": "boolean"
      +                },
      +                "reason": {
      +                  "enum": [
      +                    "off_season",
      +                    "no_zone",
      +                    "not_yet_issued",
      +                    "expired",
      +                    "unavailable",
      +                    null
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "included",
      +                "reason",
      +                "centerName"
      +              ],
      +              "type": "object"
      +            },
      +            "avalancheDanger": {
      +              "enum": [
      +                "low",
      +                "moderate",
      +                "considerable",
      +                "high",
      +                "extreme",
      +                "no_data"
      +              ]
      +            },
      +            "cornHarvestWindow": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "confidence": {
      +                      "enum": [
      +                        "high",
      +                        "medium",
      +                        "low",
      +                        "uncertain"
      +                      ]
      +                    },
      +                    "endAt": {
      +                      "type": "string"
      +                    },
      +                    "reason": {
      +                      "type": "string"
      +                    },
      +                    "refreeze": {
      +                      "enum": [
      +                        "passed",
      +                        "marginal",
      +                        "failed",
      +                        "not_evaluated"
      +                      ]
      +                    },
      +                    "startAt": {
      +                      "type": "string"
      +                    },
      +                    "status": {
      +                      "type": "string"
      +                    },
      +                    "window": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": false,
      +                          "properties": {
      +                            "end": {
      +                              "type": "string"
      +                            },
      +                            "start": {
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "start",
      +                            "end"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    }
      +                  },
      +                  "required": [
      +                    "status",
      +                    "window"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "date": {
      +              "type": "string"
      +            },
      +            "moonIllumination": {
      +              "type": "number"
      +            },
      +            "moonPhase": {
      +              "enum": [
      +                "new",
      +                "waxing_crescent",
      +                "first_quarter",
      +                "waxing_gibbous",
      +                "full",
      +                "waning_gibbous",
      +                "last_quarter",
      +                "waning_crescent"
      +              ]
      +            },
      +            "overallRating": {
      +              "enum": [
      +                "excellent",
      +                "good",
      +                "marginal",
      +                "poor",
      +                "dangerous",
      +                null
      +              ]
      +            },
      +            "precipChancePercent": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "provenance": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "weather": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "fetchedAt": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "sourceName": {
      +                      "type": "string"
      +                    },
      +                    "url": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "sourceName"
      +                  ],
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "weather"
      +              ],
      +              "type": "object"
      +            },
      +            "referencePoint": {
      +              "const": "route-high-point"
      +            },
      +            "rockConditions": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "cragTempF": {
      +                  "type": "number"
      +                },
      +                "humidityPercent": {
      +                  "type": "number"
      +                },
      +                "rockStatus": {
      +                  "enum": [
      +                    "dry",
      +                    "likely_dry",
      +                    "damp",
      +                    "wet",
      +                    "unknown"
      +                  ]
      +                },
      +                "rockStatusDescription": {
      +                  "type": "string"
      +                },
      +                "sendingWindowEnd": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "sendingWindowEndAt": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "sendingWindowNote": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "sendingWindowStart": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "sendingWindowStartAt": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "rockStatus",
      +                "rockStatusDescription",
      +                "cragTempF",
      +                "humidityPercent",
      +                "sendingWindowStart",
      +                "sendingWindowEnd",
      +                "sendingWindowStartAt",
      +                "sendingWindowEndAt",
      +                "sendingWindowNote"
      +              ],
      +              "type": "object"
      +            },
      +            "snowpackCondition": {
      +              "enum": [
      +                "powder",
      +                "packed_powder",
      +                "wind_crust",
      +                "sun_crust",
      +                "corn",
      +                "ice",
      +                "wet_heavy",
      +                "bare"
      +              ]
      +            },
      +            "summitTempHighF": {
      +              "type": "number"
      +            },
      +            "summitTempLowF": {
      +              "type": "number"
      +            },
      +            "sunrise": {
      +              "type": "string"
      +            },
      +            "sunriseAt": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "sunset": {
      +              "type": "string"
      +            },
      +            "sunsetAt": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "uncertainty": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "climatology": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "normalMedian": {
      +                      "type": "number"
      +                    },
      +                    "percentile": {
      +                      "type": "number"
      +                    },
      +                    "sampleSize": {
      +                      "type": "number"
      +                    },
      +                    "summary": {
      +                      "type": "string"
      +                    },
      +                    "unit": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "percentile",
      +                    "summary",
      +                    "sampleSize",
      +                    "normalMedian",
      +                    "unit"
      +                  ],
      +                  "type": "object"
      +                },
      +                "climatologyPercentiles": {
      +                  "items": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "normalMedian": {
      +                        "type": "number"
      +                      },
      +                      "percentile": {
      +                        "type": "number"
      +                      },
      +                      "sampleSize": {
      +                        "type": "number"
      +                      },
      +                      "summary": {
      +                        "type": "string"
      +                      },
      +                      "unit": {
      +                        "type": "string"
      +                      },
      +                      "variable": {
      +                        "enum": [
      +                          "summitHighTempF",
      +                          "freezingLevelFt",
      +                          "precipInWetDay"
      +                        ]
      +                      }
      +                    },
      +                    "required": [
      +                      "variable",
      +                      "percentile",
      +                      "summary",
      +                      "sampleSize",
      +                      "normalMedian",
      +                      "unit"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "confidence": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "level": {
      +                      "enum": [
      +                        "high",
      +                        "medium",
      +                        "low"
      +                      ]
      +                    },
      +                    "reason": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "level",
      +                    "reason"
      +                  ],
      +                  "type": "object"
      +                },
      +                "modelSpread": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "fields": {
      +                      "items": {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "label": {
      +                            "type": "string"
      +                          },
      +                          "rangeText": {
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "label",
      +                          "rangeText"
      +                        ],
      +                        "type": "object"
      +                      },
      +                      "type": "array"
      +                    },
      +                    "level": {
      +                      "enum": [
      +                        "tight",
      +                        "moderate",
      +                        "wide"
      +                      ]
      +                    },
      +                    "summary": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "level",
      +                    "summary",
      +                    "fields"
      +                  ],
      +                  "type": "object"
      +                }
      +              },
      +              "required": [],
      +              "type": "object"
      +            },
      +            "windAvgMph": {
      +              "type": "number"
      +            },
      +            "windDirection": {
      +              "type": "string"
      +            },
      +            "windMaxMph": {
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "date",
      +            "overallRating",
      +            "summitTempLowF",
      +            "summitTempHighF",
      +            "windMaxMph",
      +            "windDirection",
      +            "precipChancePercent",
      +            "provenance",
      +            "sunrise",
      +            "sunset",
      +            "sunriseAt",
      +            "sunsetAt",
      +            "moonPhase",
      +            "moonIllumination",
      +            "snowpackCondition",
      +            "referencePoint",
      +            "windAvgMph"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 5,
      +        "type": "array"
      +      },
      +      "disclaimer": {
      +        "type": "string"
      +      },
      +      "disclaimerText": {
      +        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +      },
      +      "lockedOutlook": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "lockedDayCount": {
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "maxHorizonDays": {
      +            "const": 15
      +          },
      +          "note": {
      +            "const": "This response covers days 1 to 5. Later days are published on climbcast.io."
      +          },
      +          "throughDate": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "lockedDayCount",
      +          "throughDate",
      +          "maxHorizonDays",
      +          "note"
      +        ],
      +        "type": "object"
      +      },
      +      "objective": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "name": {
      +            "type": "string"
      +          },
      +          "slug": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "slug",
      +          "name"
      +        ],
      +        "type": "object"
      +      },
      +      "permit": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "appliesTo": {
      +            "enum": [
      +              "route",
      +              "objective"
      +            ]
      +          },
      +          "fee": {
      +            "type": "string"
      +          },
      +          "notes": {
      +            "type": "string"
      +          },
      +          "required": {
      +            "enum": [
      +              "yes",
      +              "no",
      +              "seasonal",
      +              "self-issue",
      +              "unknown"
      +            ]
      +          },
      +          "url": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "required",
      +          "notes",
      +          "appliesTo"
      +        ],
      +        "type": "object"
      +      },
      +      "route": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "activityMode": {
      +            "enum": [
      +              "mountaineering",
      +              "skimo_splitboard",
      +              "rock_climbing"
      +            ]
      +          },
      +          "catalogGainFt": {
      +            "type": "number"
      +          },
      +          "highPointElevationFt": {
      +            "type": "number"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "supportedActivities": {
      +            "items": {
      +              "enum": [
      +                "mountaineering",
      +                "skimo_splitboard",
      +                "rock_climbing"
      +              ]
      +            },
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "name",
      +          "catalogGainFt",
      +          "activityMode",
      +          "supportedActivities"
      +        ],
      +        "type": "object"
      +      },
      +      "source": {
      +        "const": "ClimbCast"
      +      },
      +      "sourceUrl": {
      +        "type": "string"
      +      },
      +      "sources": {
      +        "items": {
      +          "$ref": "#/$defs/source"
      +        },
      +        "type": "array"
      +      },
      +      "timeZone": {
      +        "type": "string"
      +      },
      +      "trailheadAccess": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "drivingNotes": {
      +            "items": {
      +              "type": "string"
      +            },
      +            "type": "array"
      +          },
      +          "fetchedAt": {
      +            "type": "string"
      +          },
      +          "passes": {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "dataFetchedAt": {
      +                  "type": "string"
      +                },
      +                "highway": {
      +                  "oneOf": [
      +                    {
      +                      "type": "string"
      +                    },
      +                    {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "attribution": {
      +                          "type": "string"
      +                        },
      +                        "issuedAt": {
      +                          "type": [
      +                            "string",
      +                            "null"
      +                          ]
      +                        },
      +                        "kind": {
      +                          "const": "third_party_quote"
      +                        },
      +                        "text": {
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "kind",
      +                        "text",
      +                        "attribution",
      +                        "issuedAt"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  ]
      +                },
      +                "passName": {
      +                  "oneOf": [
      +                    {
      +                      "type": "string"
      +                    },
      +                    {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "attribution": {
      +                          "type": "string"
      +                        },
      +                        "issuedAt": {
      +                          "type": [
      +                            "string",
      +                            "null"
      +                          ]
      +                        },
      +                        "kind": {
      +                          "const": "third_party_quote"
      +                        },
      +                        "text": {
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "kind",
      +                        "text",
      +                        "attribution",
      +                        "issuedAt"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  ]
      +                },
      +                "restrictedAreas": {
      +                  "items": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "name": {
      +                        "oneOf": [
      +                          {
      +                            "type": "string"
      +                          },
      +                          {
      +                            "additionalProperties": false,
      +                            "properties": {
      +                              "attribution": {
      +                                "type": "string"
      +                              },
      +                              "issuedAt": {
      +                                "type": [
      +                                  "string",
      +                                  "null"
      +                                ]
      +                              },
      +                              "kind": {
      +                                "const": "third_party_quote"
      +                              },
      +                              "text": {
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "kind",
      +                              "text",
      +                              "attribution",
      +                              "issuedAt"
      +                            ],
      +                            "type": "object"
      +                          }
      +                        ]
      +                      },
      +                      "status": {
      +                        "enum": [
      +                          "open",
      +                          "closed",
      +                          "unknown"
      +                        ]
      +                      }
      +                    },
      +                    "required": [
      +                      "name",
      +                      "status"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  "type": "array"
      +                },
      +                "restrictions": {
      +                  "items": {
      +                    "oneOf": [
      +                      {
      +                        "type": "string"
      +                      },
      +                      {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "attribution": {
      +                            "type": "string"
      +                          },
      +                          "issuedAt": {
      +                            "type": [
      +                              "string",
      +                              "null"
      +                            ]
      +                          },
      +                          "kind": {
      +                            "const": "third_party_quote"
      +                          },
      +                          "text": {
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "kind",
      +                          "text",
      +                          "attribution",
      +                          "issuedAt"
      +                        ],
      +                        "type": "object"
      +                      }
      +                    ]
      +                  },
      +                  "type": "array"
      +                },
      +                "roadCondition": {
      +                  "oneOf": [
      +                    {
      +                      "type": "string"
      +                    },
      +                    {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "attribution": {
      +                          "type": "string"
      +                        },
      +                        "issuedAt": {
      +                          "type": [
      +                            "string",
      +                            "null"
      +                          ]
      +                        },
      +                        "kind": {
      +                          "const": "third_party_quote"
      +                        },
      +                        "text": {
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "kind",
      +                        "text",
      +                        "attribution",
      +                        "issuedAt"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  ]
      +                },
      +                "source": {
      +                  "enum": [
      +                    "WSDOT",
      +                    "ODOT",
      +                    "DriveBC",
      +                    "Parks Canada"
      +                  ]
      +                },
      +                "sourceUrl": {
      +                  "type": "string"
      +                },
      +                "stale": {
      +                  "type": "boolean"
      +                },
      +                "temperatureF": {
      +                  "type": [
      +                    "number",
      +                    "null"
      +                  ]
      +                },
      +                "upstreamIssuedAt": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "passName",
      +                "highway",
      +                "roadCondition",
      +                "restrictions",
      +                "temperatureF",
      +                "source",
      +                "sourceUrl",
      +                "stale"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          },
      +          "source": {
      +            "type": "string"
      +          },
      +          "winterPermits": {
      +            "items": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "passName": {
      +                  "oneOf": [
      +                    {
      +                      "type": "string"
      +                    },
      +                    {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "attribution": {
      +                          "type": "string"
      +                        },
      +                        "issuedAt": {
      +                          "type": [
      +                            "string",
      +                            "null"
      +                          ]
      +                        },
      +                        "kind": {
      +                          "const": "third_party_quote"
      +                        },
      +                        "text": {
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "kind",
      +                        "text",
      +                        "attribution",
      +                        "issuedAt"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  ]
      +                },
      +                "restrictions": {
      +                  "items": {
      +                    "oneOf": [
      +                      {
      +                        "type": "string"
      +                      },
      +                      {
      +                        "additionalProperties": false,
      +                        "properties": {
      +                          "attribution": {
      +                            "type": "string"
      +                          },
      +                          "issuedAt": {
      +                            "type": [
      +                              "string",
      +                              "null"
      +                            ]
      +                          },
      +                          "kind": {
      +                            "const": "third_party_quote"
      +                          },
      +                          "text": {
      +                            "type": "string"
      +                          }
      +                        },
      +                        "required": [
      +                          "kind",
      +                          "text",
      +                          "attribution",
      +                          "issuedAt"
      +                        ],
      +                        "type": "object"
      +                      }
      +                    ]
      +                  },
      +                  "type": "array"
      +                },
      +                "roadCondition": {
      +                  "oneOf": [
      +                    {
      +                      "type": "string"
      +                    },
      +                    {
      +                      "additionalProperties": false,
      +                      "properties": {
      +                        "attribution": {
      +                          "type": "string"
      +                        },
      +                        "issuedAt": {
      +                          "type": [
      +                            "string",
      +                            "null"
      +                          ]
      +                        },
      +                        "kind": {
      +                          "const": "third_party_quote"
      +                        },
      +                        "text": {
      +                          "type": "string"
      +                        }
      +                      },
      +                      "required": [
      +                        "kind",
      +                        "text",
      +                        "attribution",
      +                        "issuedAt"
      +                      ],
      +                      "type": "object"
      +                    }
      +                  ]
      +                },
      +                "source": {
      +                  "const": "Parks Canada Rogers Pass Winter Permit System"
      +                },
      +                "sourceUrl": {
      +                  "type": "string"
      +                }
      +              },
      +              "required": [
      +                "passName",
      +                "roadCondition",
      +                "restrictions",
      +                "source",
      +                "sourceUrl"
      +              ],
      +              "type": "object"
      +            },
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "source",
      +          "passes",
      +          "winterPermits",
      +          "drivingNotes",
      +          "fetchedAt"
      +        ],
      +        "type": "object"
      +      },
      +      "updatedAt": {
      +        "type": "string"
      +      },
      +      "utcOffsetSeconds": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "source",
      +      "sourceUrl",
      +      "disclaimer",
      +      "objective",
      +      "accuracyRegionId",
      +      "updatedAt",
      +      "sources",
      +      "disclaimerText",
      +      "route",
      +      "days"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "disclaimerText": {
      +        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "status": {
      +        "const": "not_found"
      +      },
      +      "suggestions": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "name": {
      +              "type": "string"
      +            },
      +            "slug": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "slug",
      +            "name"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 3,
      +        "type": "array"
      +      },
      +      "try": {
      +        "const": "search_objectives"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "message",
      +      "try",
      +      "suggestions",
      +      "disclaimerText"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "disclaimerText": {
      +        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +      },
      +      "error": {
      +        "const": "invalid_input"
      +      },
      +      "fields": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "allowed": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "field": {
      +              "type": "string"
      +            },
      +            "problem": {
      +              "enum": [
      +                "required",
      +                "type",
      +                "enum",
      +                "length",
      +                "pattern",
      +                "range",
      +                "format",
      +                "not_in_window",
      +                "unexpected"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "field",
      +            "problem"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "requestId": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "message",
      +      "requestId",
      +      "disclaimerText",
      +      "fields"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "disclaimerText": {
      +        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +      },
      +      "error": {
      +        "enum": [
      +          "MCP_BUSY",
      +          "MCP_RESPONSE_TOO_LARGE",
      +          "MCP_VOICE_GATE_FAILED",
      +          "MCP_TOOL_FAILED",
      +          "MCP_OUTPUT_INVALID",
      +          "rate_limited",
      +          "processing_limit",
      +          "response_limit"
      +        ]
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "requestId": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "message",
      +      "requestId",
      +      "disclaimerText"
      +    ],
      +    "type": "object"
      +  }
      +]
  2. Changed2 schema fields changed
    • changedOutput schema / $defs / source / properties / stations / anyOf
      Previous value: -[
      -  {
      -    "items": {
      -      "$ref": "#/$defs/source"
      -    },
      -    "type": "array"
      -  },
      -  {
      -    "type": "null"
      -  }
      -]New value: +[
      +  {
      +    "items": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "name": {
      +          "type": "string"
      +        },
      +        "seasonalStatus": {
      +          "enum": [
      +            "active",
      +            "dormant"
      +          ]
      +        },
      +        "status": {
      +          "enum": [
      +            "fresh",
      +            "stale",
      +            "long_stale",
      +            "down",
      +            null
      +          ]
      +        }
      +      },
      +      "required": [
      +        "name",
      +        "status"
      +      ],
      +      "type": "object"
      +    },
      +    "type": "array"
      +  },
      +  {
      +    "type": "null"
      +  }
      +]
    • changedOutput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "accuracyRegionId": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      },
      -      "airQualityTrend": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "backfilledFrom": {
      -            "type": "string"
      -          },
      -          "firstDate": {
      -            "type": "string"
      -          },
      -          "lastDate": {
      -            "type": "string"
      -          },
      -          "latestValue": {
      -            "type": "number"
      -          },
      -          "scale": {
      -            "enum": [
      -              "us_aqi",
      -              "aqhi"
      -            ]
      -          }
      -        },
      -        "required": [
      -          "scale",
      -          "firstDate",
      -          "lastDate",
      -          "latestValue"
      -        ],
      -        "type": "object"
      -      },
      -      "days": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "airQuality": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "aqi": {
      -                  "type": "number"
      -                },
      -                "category": {
      -                  "type": "string"
      -                },
      -                "scale": {
      -                  "enum": [
      -                    "us_aqi",
      -                    "aqhi"
      -                  ]
      -                },
      -                "sourceName": {
      -                  "type": "string"
      -                },
      -                "warning": {
      -                  "type": "boolean"
      -                }
      -              },
      -              "required": [
      -                "aqi",
      -                "category",
      -                "scale",
      -                "sourceName",
      -                "warning"
      -              ],
      -              "type": "object"
      -            },
      -            "avalancheBasis": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "centerName": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "included": {
      -                  "type": "boolean"
      -                },
      -                "reason": {
      -                  "enum": [
      -                    "off_season",
      -                    "no_zone",
      -                    "not_yet_issued",
      -                    "expired",
      -                    "unavailable",
      -                    null
      -                  ]
      -                }
      -              },
      -              "required": [
      -                "included",
      -                "reason",
      -                "centerName"
      -              ],
      -              "type": "object"
      -            },
      -            "avalancheDanger": {
      -              "enum": [
      -                "low",
      -                "moderate",
      -                "considerable",
      -                "high",
      -                "extreme",
      -                "no_data"
      -              ]
      -            },
      -            "cornHarvestWindow": {
      -              "anyOf": [
      -                {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "status": {
      -                      "type": "string"
      -                    },
      -                    "window": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": false,
      -                          "properties": {
      -                            "end": {
      -                              "type": "string"
      -                            },
      -                            "start": {
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "start",
      -                            "end"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    }
      -                  },
      -                  "required": [
      -                    "status",
      -                    "window"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "date": {
      -              "type": "string"
      -            },
      -            "moonIllumination": {
      -              "type": "number"
      -            },
      -            "moonPhase": {
      -              "enum": [
      -                "new",
      -                "waxing_crescent",
      -                "first_quarter",
      -                "waxing_gibbous",
      -                "full",
      -                "waning_gibbous",
      -                "last_quarter",
      -                "waning_crescent"
      -              ]
      -            },
      -            "overallRating": {
      -              "enum": [
      -                "excellent",
      -                "good",
      -                "marginal",
      -                "poor",
      -                "dangerous",
      -                null
      -              ]
      -            },
      -            "precipChancePercent": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            },
      -            "provenance": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "weather": {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "fetchedAt": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "reliability": {
      -                      "enum": [
      -                        "primary",
      -                        "secondary",
      -                        "supplementary"
      -                      ]
      -                    },
      -                    "sourceName": {
      -                      "type": "string"
      -                    },
      -                    "url": {
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "sourceName"
      -                  ],
      -                  "type": "object"
      -                }
      -              },
      -              "required": [
      -                "weather"
      -              ],
      -              "type": "object"
      -            },
      -            "referencePoint": {
      -              "const": "route-high-point"
      -            },
      -            "snowpackCondition": {
      -              "enum": [
      -                "powder",
      -                "packed_powder",
      -                "wind_crust",
      -                "sun_crust",
      -                "corn",
      -                "ice",
      -                "wet_heavy",
      -                "bare"
      -              ]
      -            },
      -            "summitTempHighF": {
      -              "type": "number"
      -            },
      -            "summitTempLowF": {
      -              "type": "number"
      -            },
      -            "sunrise": {
      -              "type": "string"
      -            },
      -            "sunriseAt": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "sunset": {
      -              "type": "string"
      -            },
      -            "sunsetAt": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "windAvgMph": {
      -              "type": "number"
      -            },
      -            "windDirection": {
      -              "type": "string"
      -            },
      -            "windMaxMph": {
      -              "type": "number"
      -            }
      -          },
      -          "required": [
      -            "date",
      -            "overallRating",
      -            "summitTempLowF",
      -            "summitTempHighF",
      -            "windMaxMph",
      -            "windDirection",
      -            "precipChancePercent",
      -            "provenance",
      -            "sunrise",
      -            "sunset",
      -            "sunriseAt",
      -            "sunsetAt",
      -            "moonPhase",
      -            "moonIllumination",
      -            "snowpackCondition",
      -            "referencePoint",
      -            "windAvgMph"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 5,
      -        "type": "array"
      -      },
      -      "disclaimer": {
      -        "type": "string"
      -      },
      -      "disclaimerText": {
      -        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      -      },
      -      "lockedOutlook": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "lockedDayCount": {
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "maxHorizonDays": {
      -            "const": 15
      -          },
      -          "note": {
      -            "const": "This response covers days 1 to 5. Later days are published on climbcast.io."
      -          },
      -          "throughDate": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "lockedDayCount",
      -          "throughDate",
      -          "maxHorizonDays",
      -          "note"
      -        ],
      -        "type": "object"
      -      },
      -      "objective": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "name": {
      -            "type": "string"
      -          },
      -          "slug": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "slug",
      -          "name"
      -        ],
      -        "type": "object"
      -      },
      -      "route": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "activityMode": {
      -            "enum": [
      -              "mountaineering",
      -              "skimo_splitboard",
      -              "rock_climbing",
      -              "trail_running",
      -              "mountain_biking",
      -              "snowmobiling",
      -              "ice_climbing"
      -            ]
      -          },
      -          "aspect": {
      -            "type": "string"
      -          },
      -          "catalogGainFt": {
      -            "type": "number"
      -          },
      -          "highPointElevationFt": {
      -            "type": "number"
      -          },
      -          "id": {
      -            "type": "string"
      -          },
      -          "name": {
      -            "type": "string"
      -          },
      -          "supportedActivities": {
      -            "items": {
      -              "enum": [
      -                "mountaineering",
      -                "skimo_splitboard",
      -                "rock_climbing",
      -                "trail_running",
      -                "mountain_biking",
      -                "snowmobiling",
      -                "ice_climbing"
      -              ]
      -            },
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "name",
      -          "catalogGainFt",
      -          "activityMode",
      -          "supportedActivities"
      -        ],
      -        "type": "object"
      -      },
      -      "source": {
      -        "const": "ClimbCast"
      -      },
      -      "sourceUrl": {
      -        "type": "string"
      -      },
      -      "sources": {
      -        "items": {
      -          "$ref": "#/$defs/source"
      -        },
      -        "type": "array"
      -      },
      -      "timeZone": {
      -        "type": "string"
      -      },
      -      "updatedAt": {
      -        "type": "string"
      -      },
      -      "utcOffsetSeconds": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "source",
      -      "sourceUrl",
      -      "disclaimer",
      -      "objective",
      -      "accuracyRegionId",
      -      "updatedAt",
      -      "sources",
      -      "disclaimerText",
      -      "route",
      -      "days"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "disclaimerText": {
      -        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "status": {
      -        "const": "not_found"
      -      },
      -      "suggestions": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "name": {
      -              "type": "string"
      -            },
      -            "slug": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "slug",
      -            "name"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 3,
      -        "type": "array"
      -      },
      -      "try": {
      -        "const": "search_objectives"
      -      }
      -    },
      -    "required": [
      -      "status",
      -      "message",
      -      "try",
      -      "suggestions",
      -      "disclaimerText"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "disclaimerText": {
      -        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      -      },
      -      "error": {
      -        "const": "invalid_input"
      -      },
      -      "fields": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "allowed": {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "field": {
      -              "type": "string"
      -            },
      -            "problem": {
      -              "enum": [
      -                "required",
      -                "type",
      -                "enum",
      -                "length",
      -                "pattern",
      -                "range",
      -                "unexpected"
      -              ]
      -            }
      -          },
      -          "required": [
      -            "field",
      -            "problem"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "requestId": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "message",
      -      "requestId",
      -      "disclaimerText",
      -      "fields"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "disclaimerText": {
      -        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      -      },
      -      "error": {
      -        "enum": [
      -          "MCP_BUSY",
      -          "MCP_RESPONSE_TOO_LARGE",
      -          "MCP_VOICE_GATE_FAILED",
      -          "MCP_TOOL_FAILED",
      -          "rate_limited",
      -          "processing_limit",
      -          "response_limit"
      -        ]
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "requestId": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "message",
      -      "requestId",
      -      "disclaimerText"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "accuracyRegionId": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "airQualityTrend": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "backfilledFrom": {
      +            "type": "string"
      +          },
      +          "firstDate": {
      +            "type": "string"
      +          },
      +          "lastDate": {
      +            "type": "string"
      +          },
      +          "latestValue": {
      +            "type": "number"
      +          },
      +          "scale": {
      +            "enum": [
      +              "us_aqi",
      +              "aqhi"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "scale",
      +          "firstDate",
      +          "lastDate",
      +          "latestValue"
      +        ],
      +        "type": "object"
      +      },
      +      "days": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "airQuality": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "aqi": {
      +                  "type": "number"
      +                },
      +                "category": {
      +                  "type": "string"
      +                },
      +                "scale": {
      +                  "enum": [
      +                    "us_aqi",
      +                    "aqhi"
      +                  ]
      +                },
      +                "sourceName": {
      +                  "type": "string"
      +                },
      +                "warning": {
      +                  "type": "boolean"
      +                }
      +              },
      +              "required": [
      +                "aqi",
      +                "category",
      +                "scale",
      +                "sourceName",
      +                "warning"
      +              ],
      +              "type": "object"
      +            },
      +            "avalancheBasis": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "centerName": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "included": {
      +                  "type": "boolean"
      +                },
      +                "reason": {
      +                  "enum": [
      +                    "off_season",
      +                    "no_zone",
      +                    "not_yet_issued",
      +                    "expired",
      +                    "unavailable",
      +                    null
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "included",
      +                "reason",
      +                "centerName"
      +              ],
      +              "type": "object"
      +            },
      +            "avalancheDanger": {
      +              "enum": [
      +                "low",
      +                "moderate",
      +                "considerable",
      +                "high",
      +                "extreme",
      +                "no_data"
      +              ]
      +            },
      +            "cornHarvestWindow": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "status": {
      +                      "type": "string"
      +                    },
      +                    "window": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": false,
      +                          "properties": {
      +                            "end": {
      +                              "type": "string"
      +                            },
      +                            "start": {
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "start",
      +                            "end"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    }
      +                  },
      +                  "required": [
      +                    "status",
      +                    "window"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "date": {
      +              "type": "string"
      +            },
      +            "moonIllumination": {
      +              "type": "number"
      +            },
      +            "moonPhase": {
      +              "enum": [
      +                "new",
      +                "waxing_crescent",
      +                "first_quarter",
      +                "waxing_gibbous",
      +                "full",
      +                "waning_gibbous",
      +                "last_quarter",
      +                "waning_crescent"
      +              ]
      +            },
      +            "overallRating": {
      +              "enum": [
      +                "excellent",
      +                "good",
      +                "marginal",
      +                "poor",
      +                "dangerous",
      +                null
      +              ]
      +            },
      +            "precipChancePercent": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "provenance": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "weather": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "fetchedAt": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "sourceName": {
      +                      "type": "string"
      +                    },
      +                    "url": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "sourceName"
      +                  ],
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "weather"
      +              ],
      +              "type": "object"
      +            },
      +            "referencePoint": {
      +              "const": "route-high-point"
      +            },
      +            "snowpackCondition": {
      +              "enum": [
      +                "powder",
      +                "packed_powder",
      +                "wind_crust",
      +                "sun_crust",
      +                "corn",
      +                "ice",
      +                "wet_heavy",
      +                "bare"
      +              ]
      +            },
      +            "summitTempHighF": {
      +              "type": "number"
      +            },
      +            "summitTempLowF": {
      +              "type": "number"
      +            },
      +            "sunrise": {
      +              "type": "string"
      +            },
      +            "sunriseAt": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "sunset": {
      +              "type": "string"
      +            },
      +            "sunsetAt": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "windAvgMph": {
      +              "type": "number"
      +            },
      +            "windDirection": {
      +              "type": "string"
      +            },
      +            "windMaxMph": {
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "date",
      +            "overallRating",
      +            "summitTempLowF",
      +            "summitTempHighF",
      +            "windMaxMph",
      +            "windDirection",
      +            "precipChancePercent",
      +            "provenance",
      +            "sunrise",
      +            "sunset",
      +            "sunriseAt",
      +            "sunsetAt",
      +            "moonPhase",
      +            "moonIllumination",
      +            "snowpackCondition",
      +            "referencePoint",
      +            "windAvgMph"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 5,
      +        "type": "array"
      +      },
      +      "disclaimer": {
      +        "type": "string"
      +      },
      +      "disclaimerText": {
      +        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +      },
      +      "lockedOutlook": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "lockedDayCount": {
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "maxHorizonDays": {
      +            "const": 15
      +          },
      +          "note": {
      +            "const": "This response covers days 1 to 5. Later days are published on climbcast.io."
      +          },
      +          "throughDate": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "lockedDayCount",
      +          "throughDate",
      +          "maxHorizonDays",
      +          "note"
      +        ],
      +        "type": "object"
      +      },
      +      "objective": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "name": {
      +            "type": "string"
      +          },
      +          "slug": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "slug",
      +          "name"
      +        ],
      +        "type": "object"
      +      },
      +      "route": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "activityMode": {
      +            "enum": [
      +              "mountaineering",
      +              "skimo_splitboard",
      +              "rock_climbing"
      +            ]
      +          },
      +          "catalogGainFt": {
      +            "type": "number"
      +          },
      +          "highPointElevationFt": {
      +            "type": "number"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "supportedActivities": {
      +            "items": {
      +              "enum": [
      +                "mountaineering",
      +                "skimo_splitboard",
      +                "rock_climbing"
      +              ]
      +            },
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "name",
      +          "catalogGainFt",
      +          "activityMode",
      +          "supportedActivities"
      +        ],
      +        "type": "object"
      +      },
      +      "source": {
      +        "const": "ClimbCast"
      +      },
      +      "sourceUrl": {
      +        "type": "string"
      +      },
      +      "sources": {
      +        "items": {
      +          "$ref": "#/$defs/source"
      +        },
      +        "type": "array"
      +      },
      +      "timeZone": {
      +        "type": "string"
      +      },
      +      "updatedAt": {
      +        "type": "string"
      +      },
      +      "utcOffsetSeconds": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "source",
      +      "sourceUrl",
      +      "disclaimer",
      +      "objective",
      +      "accuracyRegionId",
      +      "updatedAt",
      +      "sources",
      +      "disclaimerText",
      +      "route",
      +      "days"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "disclaimerText": {
      +        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "status": {
      +        "const": "not_found"
      +      },
      +      "suggestions": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "name": {
      +              "type": "string"
      +            },
      +            "slug": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "slug",
      +            "name"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 3,
      +        "type": "array"
      +      },
      +      "try": {
      +        "const": "search_objectives"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "message",
      +      "try",
      +      "suggestions",
      +      "disclaimerText"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "disclaimerText": {
      +        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +      },
      +      "error": {
      +        "const": "invalid_input"
      +      },
      +      "fields": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "allowed": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "field": {
      +              "type": "string"
      +            },
      +            "problem": {
      +              "enum": [
      +                "required",
      +                "type",
      +                "enum",
      +                "length",
      +                "pattern",
      +                "range",
      +                "format",
      +                "not_in_window",
      +                "unexpected"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "field",
      +            "problem"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "requestId": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "message",
      +      "requestId",
      +      "disclaimerText",
      +      "fields"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "disclaimerText": {
      +        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +      },
      +      "error": {
      +        "enum": [
      +          "MCP_BUSY",
      +          "MCP_RESPONSE_TOO_LARGE",
      +          "MCP_VOICE_GATE_FAILED",
      +          "MCP_TOOL_FAILED",
      +          "rate_limited",
      +          "processing_limit",
      +          "response_limit"
      +        ]
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "requestId": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "message",
      +      "requestId",
      +      "disclaimerText"
      +    ],
      +    "type": "object"
      +  }
      +]
  3. Changed2 schema fields changed
    • addedInput schema / properties / activity
      Added value: +{
      +  "description": "Optional activity mode for the route forecast. Accepted values are the route's activities entries from search_objectives. When omitted, the route's default visible activity is used.",
      +  "maxLength": 64,
      +  "minLength": 1,
      +  "type": "string"
      +}
    • changedOutput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "days": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "avalancheBasis": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "centerName": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "included": {
      -                  "type": "boolean"
      -                },
      -                "reason": {
      -                  "enum": [
      -                    "off_season",
      -                    "no_zone",
      -                    "not_yet_issued",
      -                    "expired",
      -                    "unavailable",
      -                    null
      -                  ]
      -                }
      -              },
      -              "required": [
      -                "included",
      -                "reason",
      -                "centerName"
      -              ],
      -              "type": "object"
      -            },
      -            "avalancheDanger": {
      -              "enum": [
      -                "low",
      -                "moderate",
      -                "considerable",
      -                "high",
      -                "extreme",
      -                "no_data"
      -              ]
      -            },
      -            "cornHarvestWindow": {
      -              "anyOf": [
      -                {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "status": {
      -                      "type": "string"
      -                    },
      -                    "window": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": false,
      -                          "properties": {
      -                            "end": {
      -                              "type": "string"
      -                            },
      -                            "start": {
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "start",
      -                            "end"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    }
      -                  },
      -                  "required": [
      -                    "status",
      -                    "window"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "date": {
      -              "type": "string"
      -            },
      -            "moonIllumination": {
      -              "type": "number"
      -            },
      -            "moonPhase": {
      -              "enum": [
      -                "new",
      -                "waxing_crescent",
      -                "first_quarter",
      -                "waxing_gibbous",
      -                "full",
      -                "waning_gibbous",
      -                "last_quarter",
      -                "waning_crescent"
      -              ]
      -            },
      -            "overallRating": {
      -              "enum": [
      -                "excellent",
      -                "good",
      -                "marginal",
      -                "poor",
      -                "dangerous",
      -                null
      -              ]
      -            },
      -            "precipChancePercent": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            },
      -            "provenance": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "weather": {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "fetchedAt": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "reliability": {
      -                      "enum": [
      -                        "primary",
      -                        "secondary",
      -                        "supplementary"
      -                      ]
      -                    },
      -                    "sourceName": {
      -                      "type": "string"
      -                    },
      -                    "url": {
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "sourceName"
      -                  ],
      -                  "type": "object"
      -                }
      -              },
      -              "required": [
      -                "weather"
      -              ],
      -              "type": "object"
      -            },
      -            "referencePoint": {
      -              "const": "route-high-point"
      -            },
      -            "snowpackCondition": {
      -              "enum": [
      -                "powder",
      -                "packed_powder",
      -                "wind_crust",
      -                "sun_crust",
      -                "corn",
      -                "ice",
      -                "wet_heavy",
      -                "bare"
      -              ]
      -            },
      -            "summitTempHighF": {
      -              "type": "number"
      -            },
      -            "summitTempLowF": {
      -              "type": "number"
      -            },
      -            "sunrise": {
      -              "type": "string"
      -            },
      -            "sunriseAt": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "sunset": {
      -              "type": "string"
      -            },
      -            "sunsetAt": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "windAvgMph": {
      -              "type": "number"
      -            },
      -            "windDirection": {
      -              "type": "string"
      -            },
      -            "windMaxMph": {
      -              "type": "number"
      -            }
      -          },
      -          "required": [
      -            "date",
      -            "overallRating",
      -            "summitTempLowF",
      -            "summitTempHighF",
      -            "windMaxMph",
      -            "windDirection",
      -            "precipChancePercent",
      -            "provenance",
      -            "sunrise",
      -            "sunset",
      -            "sunriseAt",
      -            "sunsetAt",
      -            "moonPhase",
      -            "moonIllumination",
      -            "snowpackCondition",
      -            "referencePoint",
      -            "windAvgMph"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 5,
      -        "type": "array"
      -      },
      -      "disclaimer": {
      -        "type": "string"
      -      },
      -      "disclaimerText": {
      -        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      -      },
      -      "lockedOutlook": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "lockedDayCount": {
      -            "minimum": 1,
      -            "type": "integer"
      -          },
      -          "maxHorizonDays": {
      -            "const": 15
      -          },
      -          "note": {
      -            "const": "This response covers days 1 to 5. Later days are published on climbcast.io."
      -          },
      -          "throughDate": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "lockedDayCount",
      -          "throughDate",
      -          "maxHorizonDays",
      -          "note"
      -        ],
      -        "type": "object"
      -      },
      -      "objective": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "name": {
      -            "type": "string"
      -          },
      -          "slug": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "slug",
      -          "name"
      -        ],
      -        "type": "object"
      -      },
      -      "route": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "activityMode": {
      -            "enum": [
      -              "mountaineering",
      -              "skimo_splitboard",
      -              "rock_climbing",
      -              "trail_running",
      -              "mountain_biking",
      -              "snowmobiling",
      -              "ice_climbing"
      -            ]
      -          },
      -          "aspect": {
      -            "type": "string"
      -          },
      -          "highPointElevationFt": {
      -            "type": "number"
      -          },
      -          "id": {
      -            "type": "string"
      -          },
      -          "name": {
      -            "type": "string"
      -          },
      -          "supportedActivities": {
      -            "items": {
      -              "enum": [
      -                "mountaineering",
      -                "skimo_splitboard",
      -                "rock_climbing",
      -                "trail_running",
      -                "mountain_biking",
      -                "snowmobiling",
      -                "ice_climbing"
      -              ]
      -            },
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "name",
      -          "activityMode",
      -          "supportedActivities"
      -        ],
      -        "type": "object"
      -      },
      -      "source": {
      -        "const": "ClimbCast"
      -      },
      -      "sourceUrl": {
      -        "type": "string"
      -      },
      -      "sources": {
      -        "items": {
      -          "$ref": "#/$defs/source"
      -        },
      -        "type": "array"
      -      },
      -      "timeZone": {
      -        "type": "string"
      -      },
      -      "updatedAt": {
      -        "type": "string"
      -      },
      -      "utcOffsetSeconds": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "source",
      -      "sourceUrl",
      -      "disclaimer",
      -      "objective",
      -      "updatedAt",
      -      "sources",
      -      "disclaimerText",
      -      "route",
      -      "days"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "disclaimerText": {
      -        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "status": {
      -        "const": "not_found"
      -      },
      -      "suggestions": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "name": {
      -              "type": "string"
      -            },
      -            "slug": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "slug",
      -            "name"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 3,
      -        "type": "array"
      -      },
      -      "try": {
      -        "const": "search_objectives"
      -      }
      -    },
      -    "required": [
      -      "status",
      -      "message",
      -      "try",
      -      "suggestions",
      -      "disclaimerText"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "disclaimerText": {
      -        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      -      },
      -      "error": {
      -        "const": "invalid_input"
      -      },
      -      "fields": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "allowed": {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "field": {
      -              "type": "string"
      -            },
      -            "problem": {
      -              "enum": [
      -                "required",
      -                "type",
      -                "enum",
      -                "length",
      -                "pattern",
      -                "range",
      -                "unexpected"
      -              ]
      -            }
      -          },
      -          "required": [
      -            "field",
      -            "problem"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "requestId": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "message",
      -      "requestId",
      -      "disclaimerText",
      -      "fields"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "disclaimerText": {
      -        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      -      },
      -      "error": {
      -        "enum": [
      -          "MCP_BUSY",
      -          "MCP_RESPONSE_TOO_LARGE",
      -          "MCP_VOICE_GATE_FAILED",
      -          "MCP_TOOL_FAILED",
      -          "rate_limited",
      -          "processing_limit",
      -          "response_limit"
      -        ]
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "requestId": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "message",
      -      "requestId",
      -      "disclaimerText"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "accuracyRegionId": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      },
      +      "airQualityTrend": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "backfilledFrom": {
      +            "type": "string"
      +          },
      +          "firstDate": {
      +            "type": "string"
      +          },
      +          "lastDate": {
      +            "type": "string"
      +          },
      +          "latestValue": {
      +            "type": "number"
      +          },
      +          "scale": {
      +            "enum": [
      +              "us_aqi",
      +              "aqhi"
      +            ]
      +          }
      +        },
      +        "required": [
      +          "scale",
      +          "firstDate",
      +          "lastDate",
      +          "latestValue"
      +        ],
      +        "type": "object"
      +      },
      +      "days": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "airQuality": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "aqi": {
      +                  "type": "number"
      +                },
      +                "category": {
      +                  "type": "string"
      +                },
      +                "scale": {
      +                  "enum": [
      +                    "us_aqi",
      +                    "aqhi"
      +                  ]
      +                },
      +                "sourceName": {
      +                  "type": "string"
      +                },
      +                "warning": {
      +                  "type": "boolean"
      +                }
      +              },
      +              "required": [
      +                "aqi",
      +                "category",
      +                "scale",
      +                "sourceName",
      +                "warning"
      +              ],
      +              "type": "object"
      +            },
      +            "avalancheBasis": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "centerName": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "included": {
      +                  "type": "boolean"
      +                },
      +                "reason": {
      +                  "enum": [
      +                    "off_season",
      +                    "no_zone",
      +                    "not_yet_issued",
      +                    "expired",
      +                    "unavailable",
      +                    null
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "included",
      +                "reason",
      +                "centerName"
      +              ],
      +              "type": "object"
      +            },
      +            "avalancheDanger": {
      +              "enum": [
      +                "low",
      +                "moderate",
      +                "considerable",
      +                "high",
      +                "extreme",
      +                "no_data"
      +              ]
      +            },
      +            "cornHarvestWindow": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "status": {
      +                      "type": "string"
      +                    },
      +                    "window": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": false,
      +                          "properties": {
      +                            "end": {
      +                              "type": "string"
      +                            },
      +                            "start": {
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "start",
      +                            "end"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    }
      +                  },
      +                  "required": [
      +                    "status",
      +                    "window"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "date": {
      +              "type": "string"
      +            },
      +            "moonIllumination": {
      +              "type": "number"
      +            },
      +            "moonPhase": {
      +              "enum": [
      +                "new",
      +                "waxing_crescent",
      +                "first_quarter",
      +                "waxing_gibbous",
      +                "full",
      +                "waning_gibbous",
      +                "last_quarter",
      +                "waning_crescent"
      +              ]
      +            },
      +            "overallRating": {
      +              "enum": [
      +                "excellent",
      +                "good",
      +                "marginal",
      +                "poor",
      +                "dangerous",
      +                null
      +              ]
      +            },
      +            "precipChancePercent": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "provenance": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "weather": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "fetchedAt": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "reliability": {
      +                      "enum": [
      +                        "primary",
      +                        "secondary",
      +                        "supplementary"
      +                      ]
      +                    },
      +                    "sourceName": {
      +                      "type": "string"
      +                    },
      +                    "url": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "sourceName"
      +                  ],
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "weather"
      +              ],
      +              "type": "object"
      +            },
      +            "referencePoint": {
      +              "const": "route-high-point"
      +            },
      +            "snowpackCondition": {
      +              "enum": [
      +                "powder",
      +                "packed_powder",
      +                "wind_crust",
      +                "sun_crust",
      +                "corn",
      +                "ice",
      +                "wet_heavy",
      +                "bare"
      +              ]
      +            },
      +            "summitTempHighF": {
      +              "type": "number"
      +            },
      +            "summitTempLowF": {
      +              "type": "number"
      +            },
      +            "sunrise": {
      +              "type": "string"
      +            },
      +            "sunriseAt": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "sunset": {
      +              "type": "string"
      +            },
      +            "sunsetAt": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "windAvgMph": {
      +              "type": "number"
      +            },
      +            "windDirection": {
      +              "type": "string"
      +            },
      +            "windMaxMph": {
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "date",
      +            "overallRating",
      +            "summitTempLowF",
      +            "summitTempHighF",
      +            "windMaxMph",
      +            "windDirection",
      +            "precipChancePercent",
      +            "provenance",
      +            "sunrise",
      +            "sunset",
      +            "sunriseAt",
      +            "sunsetAt",
      +            "moonPhase",
      +            "moonIllumination",
      +            "snowpackCondition",
      +            "referencePoint",
      +            "windAvgMph"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 5,
      +        "type": "array"
      +      },
      +      "disclaimer": {
      +        "type": "string"
      +      },
      +      "disclaimerText": {
      +        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +      },
      +      "lockedOutlook": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "lockedDayCount": {
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "maxHorizonDays": {
      +            "const": 15
      +          },
      +          "note": {
      +            "const": "This response covers days 1 to 5. Later days are published on climbcast.io."
      +          },
      +          "throughDate": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "lockedDayCount",
      +          "throughDate",
      +          "maxHorizonDays",
      +          "note"
      +        ],
      +        "type": "object"
      +      },
      +      "objective": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "name": {
      +            "type": "string"
      +          },
      +          "slug": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "slug",
      +          "name"
      +        ],
      +        "type": "object"
      +      },
      +      "route": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "activityMode": {
      +            "enum": [
      +              "mountaineering",
      +              "skimo_splitboard",
      +              "rock_climbing",
      +              "trail_running",
      +              "mountain_biking",
      +              "snowmobiling",
      +              "ice_climbing"
      +            ]
      +          },
      +          "aspect": {
      +            "type": "string"
      +          },
      +          "catalogGainFt": {
      +            "type": "number"
      +          },
      +          "highPointElevationFt": {
      +            "type": "number"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "supportedActivities": {
      +            "items": {
      +              "enum": [
      +                "mountaineering",
      +                "skimo_splitboard",
      +                "rock_climbing",
      +                "trail_running",
      +                "mountain_biking",
      +                "snowmobiling",
      +                "ice_climbing"
      +              ]
      +            },
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "name",
      +          "catalogGainFt",
      +          "activityMode",
      +          "supportedActivities"
      +        ],
      +        "type": "object"
      +      },
      +      "source": {
      +        "const": "ClimbCast"
      +      },
      +      "sourceUrl": {
      +        "type": "string"
      +      },
      +      "sources": {
      +        "items": {
      +          "$ref": "#/$defs/source"
      +        },
      +        "type": "array"
      +      },
      +      "timeZone": {
      +        "type": "string"
      +      },
      +      "updatedAt": {
      +        "type": "string"
      +      },
      +      "utcOffsetSeconds": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "source",
      +      "sourceUrl",
      +      "disclaimer",
      +      "objective",
      +      "accuracyRegionId",
      +      "updatedAt",
      +      "sources",
      +      "disclaimerText",
      +      "route",
      +      "days"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "disclaimerText": {
      +        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "status": {
      +        "const": "not_found"
      +      },
      +      "suggestions": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "name": {
      +              "type": "string"
      +            },
      +            "slug": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "slug",
      +            "name"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 3,
      +        "type": "array"
      +      },
      +      "try": {
      +        "const": "search_objectives"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "message",
      +      "try",
      +      "suggestions",
      +      "disclaimerText"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "disclaimerText": {
      +        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +      },
      +      "error": {
      +        "const": "invalid_input"
      +      },
      +      "fields": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "allowed": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "field": {
      +              "type": "string"
      +            },
      +            "problem": {
      +              "enum": [
      +                "required",
      +                "type",
      +                "enum",
      +                "length",
      +                "pattern",
      +                "range",
      +                "unexpected"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "field",
      +            "problem"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "requestId": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "message",
      +      "requestId",
      +      "disclaimerText",
      +      "fields"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "disclaimerText": {
      +        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +      },
      +      "error": {
      +        "enum": [
      +          "MCP_BUSY",
      +          "MCP_RESPONSE_TOO_LARGE",
      +          "MCP_VOICE_GATE_FAILED",
      +          "MCP_TOOL_FAILED",
      +          "rate_limited",
      +          "processing_limit",
      +          "response_limit"
      +        ]
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "requestId": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "message",
      +      "requestId",
      +      "disclaimerText"
      +    ],
      +    "type": "object"
      +  }
      +]
  4. Changed1 schema field changed
    • changedOutput schema / oneOf
      Previous value: -[
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "days": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "avalancheBasis": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "centerName": {
      -                  "type": [
      -                    "string",
      -                    "null"
      -                  ]
      -                },
      -                "included": {
      -                  "type": "boolean"
      -                },
      -                "reason": {
      -                  "enum": [
      -                    "off_season",
      -                    "no_zone",
      -                    "not_yet_issued",
      -                    "expired",
      -                    "unavailable",
      -                    null
      -                  ]
      -                }
      -              },
      -              "required": [
      -                "included",
      -                "reason",
      -                "centerName"
      -              ],
      -              "type": "object"
      -            },
      -            "avalancheDanger": {
      -              "enum": [
      -                "low",
      -                "moderate",
      -                "considerable",
      -                "high",
      -                "extreme",
      -                "no_data"
      -              ]
      -            },
      -            "cornHarvestWindow": {
      -              "anyOf": [
      -                {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "status": {
      -                      "type": "string"
      -                    },
      -                    "window": {
      -                      "anyOf": [
      -                        {
      -                          "additionalProperties": false,
      -                          "properties": {
      -                            "end": {
      -                              "type": "string"
      -                            },
      -                            "start": {
      -                              "type": "string"
      -                            }
      -                          },
      -                          "required": [
      -                            "start",
      -                            "end"
      -                          ],
      -                          "type": "object"
      -                        },
      -                        {
      -                          "type": "null"
      -                        }
      -                      ]
      -                    }
      -                  },
      -                  "required": [
      -                    "status",
      -                    "window"
      -                  ],
      -                  "type": "object"
      -                },
      -                {
      -                  "type": "null"
      -                }
      -              ]
      -            },
      -            "date": {
      -              "type": "string"
      -            },
      -            "freezingLevelFt": {
      -              "type": "number"
      -            },
      -            "moonIllumination": {
      -              "type": "number"
      -            },
      -            "moonPhase": {
      -              "enum": [
      -                "new",
      -                "waxing_crescent",
      -                "first_quarter",
      -                "waxing_gibbous",
      -                "full",
      -                "waning_gibbous",
      -                "last_quarter",
      -                "waning_crescent"
      -              ]
      -            },
      -            "overallRating": {
      -              "enum": [
      -                "excellent",
      -                "good",
      -                "marginal",
      -                "poor",
      -                "dangerous"
      -              ]
      -            },
      -            "precipChancePercent": {
      -              "type": [
      -                "number",
      -                "null"
      -              ]
      -            },
      -            "precipType": {
      -              "enum": [
      -                "none",
      -                "rain",
      -                "snow",
      -                "mixed",
      -                "sleet"
      -              ]
      -            },
      -            "provenance": {
      -              "additionalProperties": false,
      -              "properties": {
      -                "weather": {
      -                  "additionalProperties": false,
      -                  "properties": {
      -                    "fetchedAt": {
      -                      "type": [
      -                        "string",
      -                        "null"
      -                      ]
      -                    },
      -                    "reliability": {
      -                      "enum": [
      -                        "primary",
      -                        "secondary",
      -                        "supplementary"
      -                      ]
      -                    },
      -                    "sourceName": {
      -                      "type": "string"
      -                    },
      -                    "url": {
      -                      "type": "string"
      -                    }
      -                  },
      -                  "required": [
      -                    "sourceName"
      -                  ],
      -                  "type": "object"
      -                }
      -              },
      -              "required": [
      -                "weather"
      -              ],
      -              "type": "object"
      -            },
      -            "referencePoint": {
      -              "const": "route-high-point"
      -            },
      -            "snowpackCondition": {
      -              "enum": [
      -                "powder",
      -                "packed_powder",
      -                "wind_crust",
      -                "sun_crust",
      -                "corn",
      -                "ice",
      -                "wet_heavy",
      -                "bare"
      -              ]
      -            },
      -            "summitTempHighF": {
      -              "type": "number"
      -            },
      -            "summitTempLowF": {
      -              "type": "number"
      -            },
      -            "sunrise": {
      -              "type": "string"
      -            },
      -            "sunriseAt": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "sunset": {
      -              "type": "string"
      -            },
      -            "sunsetAt": {
      -              "type": [
      -                "string",
      -                "null"
      -              ]
      -            },
      -            "windAvgMph": {
      -              "type": "number"
      -            },
      -            "windDirection": {
      -              "type": "string"
      -            },
      -            "windMaxMph": {
      -              "type": "number"
      -            }
      -          },
      -          "required": [
      -            "date",
      -            "overallRating",
      -            "summitTempLowF",
      -            "summitTempHighF",
      -            "windMaxMph",
      -            "windDirection",
      -            "precipChancePercent",
      -            "freezingLevelFt",
      -            "snowpackCondition",
      -            "avalancheDanger",
      -            "sunrise",
      -            "sunset",
      -            "sunriseAt",
      -            "sunsetAt",
      -            "moonPhase",
      -            "moonIllumination",
      -            "provenance",
      -            "referencePoint",
      -            "windAvgMph",
      -            "precipType"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "disclaimer": {
      -        "type": "string"
      -      },
      -      "disclaimerText": {
      -        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      -      },
      -      "objective": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "name": {
      -            "type": "string"
      -          },
      -          "slug": {
      -            "type": "string"
      -          }
      -        },
      -        "required": [
      -          "slug",
      -          "name"
      -        ],
      -        "type": "object"
      -      },
      -      "route": {
      -        "additionalProperties": false,
      -        "properties": {
      -          "activityMode": {
      -            "enum": [
      -              "mountaineering",
      -              "skimo_splitboard",
      -              "rock_climbing",
      -              "trail_running",
      -              "mountain_biking",
      -              "snowmobiling",
      -              "ice_climbing"
      -            ]
      -          },
      -          "aspect": {
      -            "type": "string"
      -          },
      -          "highPointElevationFt": {
      -            "type": "number"
      -          },
      -          "id": {
      -            "type": "string"
      -          },
      -          "name": {
      -            "type": "string"
      -          },
      -          "supportedActivities": {
      -            "items": {
      -              "enum": [
      -                "mountaineering",
      -                "skimo_splitboard",
      -                "rock_climbing",
      -                "trail_running",
      -                "mountain_biking",
      -                "snowmobiling",
      -                "ice_climbing"
      -              ]
      -            },
      -            "type": "array"
      -          }
      -        },
      -        "required": [
      -          "id",
      -          "name",
      -          "activityMode",
      -          "supportedActivities"
      -        ],
      -        "type": "object"
      -      },
      -      "source": {
      -        "const": "ClimbCast"
      -      },
      -      "sourceUrl": {
      -        "type": "string"
      -      },
      -      "sources": {
      -        "items": {
      -          "$ref": "#/$defs/source"
      -        },
      -        "type": "array"
      -      },
      -      "timeZone": {
      -        "type": "string"
      -      },
      -      "updatedAt": {
      -        "type": "string"
      -      },
      -      "utcOffsetSeconds": {
      -        "type": "number"
      -      }
      -    },
      -    "required": [
      -      "source",
      -      "sourceUrl",
      -      "disclaimer",
      -      "objective",
      -      "updatedAt",
      -      "sources",
      -      "disclaimerText",
      -      "route",
      -      "days"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "disclaimerText": {
      -        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "status": {
      -        "const": "not_found"
      -      },
      -      "suggestions": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "name": {
      -              "type": "string"
      -            },
      -            "slug": {
      -              "type": "string"
      -            }
      -          },
      -          "required": [
      -            "slug",
      -            "name"
      -          ],
      -          "type": "object"
      -        },
      -        "maxItems": 3,
      -        "type": "array"
      -      },
      -      "try": {
      -        "const": "search_objectives"
      -      }
      -    },
      -    "required": [
      -      "status",
      -      "message",
      -      "try",
      -      "suggestions",
      -      "disclaimerText"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "disclaimerText": {
      -        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      -      },
      -      "error": {
      -        "const": "invalid_input"
      -      },
      -      "fields": {
      -        "items": {
      -          "additionalProperties": false,
      -          "properties": {
      -            "allowed": {
      -              "items": {
      -                "type": "string"
      -              },
      -              "type": "array"
      -            },
      -            "field": {
      -              "type": "string"
      -            },
      -            "problem": {
      -              "enum": [
      -                "required",
      -                "type",
      -                "enum",
      -                "length",
      -                "pattern",
      -                "range",
      -                "unexpected"
      -              ]
      -            }
      -          },
      -          "required": [
      -            "field",
      -            "problem"
      -          ],
      -          "type": "object"
      -        },
      -        "type": "array"
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "requestId": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "message",
      -      "requestId",
      -      "disclaimerText",
      -      "fields"
      -    ],
      -    "type": "object"
      -  },
      -  {
      -    "additionalProperties": false,
      -    "properties": {
      -      "disclaimerText": {
      -        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      -      },
      -      "error": {
      -        "enum": [
      -          "MCP_BUSY",
      -          "MCP_RESPONSE_TOO_LARGE",
      -          "MCP_VOICE_GATE_FAILED",
      -          "MCP_TOOL_FAILED",
      -          "rate_limited",
      -          "processing_limit",
      -          "response_limit"
      -        ]
      -      },
      -      "message": {
      -        "type": "string"
      -      },
      -      "requestId": {
      -        "type": [
      -          "string",
      -          "null"
      -        ]
      -      }
      -    },
      -    "required": [
      -      "error",
      -      "message",
      -      "requestId",
      -      "disclaimerText"
      -    ],
      -    "type": "object"
      -  }
      -]New value: +[
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "days": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "avalancheBasis": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "centerName": {
      +                  "type": [
      +                    "string",
      +                    "null"
      +                  ]
      +                },
      +                "included": {
      +                  "type": "boolean"
      +                },
      +                "reason": {
      +                  "enum": [
      +                    "off_season",
      +                    "no_zone",
      +                    "not_yet_issued",
      +                    "expired",
      +                    "unavailable",
      +                    null
      +                  ]
      +                }
      +              },
      +              "required": [
      +                "included",
      +                "reason",
      +                "centerName"
      +              ],
      +              "type": "object"
      +            },
      +            "avalancheDanger": {
      +              "enum": [
      +                "low",
      +                "moderate",
      +                "considerable",
      +                "high",
      +                "extreme",
      +                "no_data"
      +              ]
      +            },
      +            "cornHarvestWindow": {
      +              "anyOf": [
      +                {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "status": {
      +                      "type": "string"
      +                    },
      +                    "window": {
      +                      "anyOf": [
      +                        {
      +                          "additionalProperties": false,
      +                          "properties": {
      +                            "end": {
      +                              "type": "string"
      +                            },
      +                            "start": {
      +                              "type": "string"
      +                            }
      +                          },
      +                          "required": [
      +                            "start",
      +                            "end"
      +                          ],
      +                          "type": "object"
      +                        },
      +                        {
      +                          "type": "null"
      +                        }
      +                      ]
      +                    }
      +                  },
      +                  "required": [
      +                    "status",
      +                    "window"
      +                  ],
      +                  "type": "object"
      +                },
      +                {
      +                  "type": "null"
      +                }
      +              ]
      +            },
      +            "date": {
      +              "type": "string"
      +            },
      +            "moonIllumination": {
      +              "type": "number"
      +            },
      +            "moonPhase": {
      +              "enum": [
      +                "new",
      +                "waxing_crescent",
      +                "first_quarter",
      +                "waxing_gibbous",
      +                "full",
      +                "waning_gibbous",
      +                "last_quarter",
      +                "waning_crescent"
      +              ]
      +            },
      +            "overallRating": {
      +              "enum": [
      +                "excellent",
      +                "good",
      +                "marginal",
      +                "poor",
      +                "dangerous",
      +                null
      +              ]
      +            },
      +            "precipChancePercent": {
      +              "type": [
      +                "number",
      +                "null"
      +              ]
      +            },
      +            "provenance": {
      +              "additionalProperties": false,
      +              "properties": {
      +                "weather": {
      +                  "additionalProperties": false,
      +                  "properties": {
      +                    "fetchedAt": {
      +                      "type": [
      +                        "string",
      +                        "null"
      +                      ]
      +                    },
      +                    "reliability": {
      +                      "enum": [
      +                        "primary",
      +                        "secondary",
      +                        "supplementary"
      +                      ]
      +                    },
      +                    "sourceName": {
      +                      "type": "string"
      +                    },
      +                    "url": {
      +                      "type": "string"
      +                    }
      +                  },
      +                  "required": [
      +                    "sourceName"
      +                  ],
      +                  "type": "object"
      +                }
      +              },
      +              "required": [
      +                "weather"
      +              ],
      +              "type": "object"
      +            },
      +            "referencePoint": {
      +              "const": "route-high-point"
      +            },
      +            "snowpackCondition": {
      +              "enum": [
      +                "powder",
      +                "packed_powder",
      +                "wind_crust",
      +                "sun_crust",
      +                "corn",
      +                "ice",
      +                "wet_heavy",
      +                "bare"
      +              ]
      +            },
      +            "summitTempHighF": {
      +              "type": "number"
      +            },
      +            "summitTempLowF": {
      +              "type": "number"
      +            },
      +            "sunrise": {
      +              "type": "string"
      +            },
      +            "sunriseAt": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "sunset": {
      +              "type": "string"
      +            },
      +            "sunsetAt": {
      +              "type": [
      +                "string",
      +                "null"
      +              ]
      +            },
      +            "windAvgMph": {
      +              "type": "number"
      +            },
      +            "windDirection": {
      +              "type": "string"
      +            },
      +            "windMaxMph": {
      +              "type": "number"
      +            }
      +          },
      +          "required": [
      +            "date",
      +            "overallRating",
      +            "summitTempLowF",
      +            "summitTempHighF",
      +            "windMaxMph",
      +            "windDirection",
      +            "precipChancePercent",
      +            "provenance",
      +            "sunrise",
      +            "sunset",
      +            "sunriseAt",
      +            "sunsetAt",
      +            "moonPhase",
      +            "moonIllumination",
      +            "snowpackCondition",
      +            "referencePoint",
      +            "windAvgMph"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 5,
      +        "type": "array"
      +      },
      +      "disclaimer": {
      +        "type": "string"
      +      },
      +      "disclaimerText": {
      +        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +      },
      +      "lockedOutlook": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "lockedDayCount": {
      +            "minimum": 1,
      +            "type": "integer"
      +          },
      +          "maxHorizonDays": {
      +            "const": 15
      +          },
      +          "note": {
      +            "const": "This response covers days 1 to 5. Later days are published on climbcast.io."
      +          },
      +          "throughDate": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "lockedDayCount",
      +          "throughDate",
      +          "maxHorizonDays",
      +          "note"
      +        ],
      +        "type": "object"
      +      },
      +      "objective": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "name": {
      +            "type": "string"
      +          },
      +          "slug": {
      +            "type": "string"
      +          }
      +        },
      +        "required": [
      +          "slug",
      +          "name"
      +        ],
      +        "type": "object"
      +      },
      +      "route": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "activityMode": {
      +            "enum": [
      +              "mountaineering",
      +              "skimo_splitboard",
      +              "rock_climbing",
      +              "trail_running",
      +              "mountain_biking",
      +              "snowmobiling",
      +              "ice_climbing"
      +            ]
      +          },
      +          "aspect": {
      +            "type": "string"
      +          },
      +          "highPointElevationFt": {
      +            "type": "number"
      +          },
      +          "id": {
      +            "type": "string"
      +          },
      +          "name": {
      +            "type": "string"
      +          },
      +          "supportedActivities": {
      +            "items": {
      +              "enum": [
      +                "mountaineering",
      +                "skimo_splitboard",
      +                "rock_climbing",
      +                "trail_running",
      +                "mountain_biking",
      +                "snowmobiling",
      +                "ice_climbing"
      +              ]
      +            },
      +            "type": "array"
      +          }
      +        },
      +        "required": [
      +          "id",
      +          "name",
      +          "activityMode",
      +          "supportedActivities"
      +        ],
      +        "type": "object"
      +      },
      +      "source": {
      +        "const": "ClimbCast"
      +      },
      +      "sourceUrl": {
      +        "type": "string"
      +      },
      +      "sources": {
      +        "items": {
      +          "$ref": "#/$defs/source"
      +        },
      +        "type": "array"
      +      },
      +      "timeZone": {
      +        "type": "string"
      +      },
      +      "updatedAt": {
      +        "type": "string"
      +      },
      +      "utcOffsetSeconds": {
      +        "type": "number"
      +      }
      +    },
      +    "required": [
      +      "source",
      +      "sourceUrl",
      +      "disclaimer",
      +      "objective",
      +      "updatedAt",
      +      "sources",
      +      "disclaimerText",
      +      "route",
      +      "days"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "disclaimerText": {
      +        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "status": {
      +        "const": "not_found"
      +      },
      +      "suggestions": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "name": {
      +              "type": "string"
      +            },
      +            "slug": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "slug",
      +            "name"
      +          ],
      +          "type": "object"
      +        },
      +        "maxItems": 3,
      +        "type": "array"
      +      },
      +      "try": {
      +        "const": "search_objectives"
      +      }
      +    },
      +    "required": [
      +      "status",
      +      "message",
      +      "try",
      +      "suggestions",
      +      "disclaimerText"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "disclaimerText": {
      +        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +      },
      +      "error": {
      +        "const": "invalid_input"
      +      },
      +      "fields": {
      +        "items": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "allowed": {
      +              "items": {
      +                "type": "string"
      +              },
      +              "type": "array"
      +            },
      +            "field": {
      +              "type": "string"
      +            },
      +            "problem": {
      +              "enum": [
      +                "required",
      +                "type",
      +                "enum",
      +                "length",
      +                "pattern",
      +                "range",
      +                "unexpected"
      +              ]
      +            }
      +          },
      +          "required": [
      +            "field",
      +            "problem"
      +          ],
      +          "type": "object"
      +        },
      +        "type": "array"
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "requestId": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "message",
      +      "requestId",
      +      "disclaimerText",
      +      "fields"
      +    ],
      +    "type": "object"
      +  },
      +  {
      +    "additionalProperties": false,
      +    "properties": {
      +      "disclaimerText": {
      +        "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +      },
      +      "error": {
      +        "enum": [
      +          "MCP_BUSY",
      +          "MCP_RESPONSE_TOO_LARGE",
      +          "MCP_VOICE_GATE_FAILED",
      +          "MCP_TOOL_FAILED",
      +          "rate_limited",
      +          "processing_limit",
      +          "response_limit"
      +        ]
      +      },
      +      "message": {
      +        "type": "string"
      +      },
      +      "requestId": {
      +        "type": [
      +          "string",
      +          "null"
      +        ]
      +      }
      +    },
      +    "required": [
      +      "error",
      +      "message",
      +      "requestId",
      +      "disclaimerText"
      +    ],
      +    "type": "object"
      +  }
      +]
  5. Changed1 schema field changed
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$defs": {
      +    "source": {
      +      "additionalProperties": false,
      +      "properties": {
      +        "confidence": {
      +          "enum": [
      +            "full",
      +            "degraded",
      +            "unknown"
      +          ]
      +        },
      +        "contributesTo": {
      +          "items": {
      +            "enum": [
      +              "weather",
      +              "precip",
      +              "wind",
      +              "temperature",
      +              "snowpack",
      +              "avalanche",
      +              "road",
      +              "alerts",
      +              "air_quality",
      +              "other"
      +            ]
      +          },
      +          "type": "array"
      +        },
      +        "expectedFreshnessSeconds": {
      +          "type": [
      +            "number",
      +            "null"
      +          ]
      +        },
      +        "fetchedAt": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "history24h": {
      +          "anyOf": [
      +            {
      +              "items": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "bucketStart": {
      +                    "type": "string"
      +                  },
      +                  "status": {
      +                    "enum": [
      +                      "ok",
      +                      "down",
      +                      "degraded",
      +                      "nodata"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "bucketStart",
      +                  "status"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "history7d": {
      +          "anyOf": [
      +            {
      +              "items": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "bucketStart": {
      +                    "type": "string"
      +                  },
      +                  "status": {
      +                    "enum": [
      +                      "ok",
      +                      "down",
      +                      "degraded",
      +                      "nodata"
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "bucketStart",
      +                  "status"
      +                ],
      +                "type": "object"
      +              },
      +              "type": "array"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "isStale": {
      +          "type": [
      +            "boolean",
      +            "null"
      +          ]
      +        },
      +        "lastSuccessAt": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        },
      +        "name": {
      +          "type": "string"
      +        },
      +        "ok": {
      +          "type": [
      +            "boolean",
      +            "null"
      +          ]
      +        },
      +        "seasonalStatus": {
      +          "enum": [
      +            "active",
      +            "dormant"
      +          ]
      +        },
      +        "stations": {
      +          "anyOf": [
      +            {
      +              "items": {
      +                "$ref": "#/$defs/source"
      +              },
      +              "type": "array"
      +            },
      +            {
      +              "type": "null"
      +            }
      +          ]
      +        },
      +        "status": {
      +          "enum": [
      +            "fresh",
      +            "stale",
      +            "long_stale",
      +            "down",
      +            null
      +          ]
      +        },
      +        "type": {
      +          "enum": [
      +            "weather",
      +            "avalanche",
      +            "road",
      +            "nps",
      +            "snow",
      +            "air",
      +            "other"
      +          ]
      +        },
      +        "upstreamIssuedAt": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "name",
      +        "type",
      +        "fetchedAt",
      +        "ok",
      +        "isStale",
      +        "lastSuccessAt",
      +        "expectedFreshnessSeconds",
      +        "upstreamIssuedAt",
      +        "history24h",
      +        "history7d",
      +        "status",
      +        "confidence",
      +        "contributesTo"
      +      ],
      +      "type": "object"
      +    }
      +  },
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "oneOf": [
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "days": {
      +          "items": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "avalancheBasis": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "centerName": {
      +                    "type": [
      +                      "string",
      +                      "null"
      +                    ]
      +                  },
      +                  "included": {
      +                    "type": "boolean"
      +                  },
      +                  "reason": {
      +                    "enum": [
      +                      "off_season",
      +                      "no_zone",
      +                      "not_yet_issued",
      +                      "expired",
      +                      "unavailable",
      +                      null
      +                    ]
      +                  }
      +                },
      +                "required": [
      +                  "included",
      +                  "reason",
      +                  "centerName"
      +                ],
      +                "type": "object"
      +              },
      +              "avalancheDanger": {
      +                "enum": [
      +                  "low",
      +                  "moderate",
      +                  "considerable",
      +                  "high",
      +                  "extreme",
      +                  "no_data"
      +                ]
      +              },
      +              "cornHarvestWindow": {
      +                "anyOf": [
      +                  {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "status": {
      +                        "type": "string"
      +                      },
      +                      "window": {
      +                        "anyOf": [
      +                          {
      +                            "additionalProperties": false,
      +                            "properties": {
      +                              "end": {
      +                                "type": "string"
      +                              },
      +                              "start": {
      +                                "type": "string"
      +                              }
      +                            },
      +                            "required": [
      +                              "start",
      +                              "end"
      +                            ],
      +                            "type": "object"
      +                          },
      +                          {
      +                            "type": "null"
      +                          }
      +                        ]
      +                      }
      +                    },
      +                    "required": [
      +                      "status",
      +                      "window"
      +                    ],
      +                    "type": "object"
      +                  },
      +                  {
      +                    "type": "null"
      +                  }
      +                ]
      +              },
      +              "date": {
      +                "type": "string"
      +              },
      +              "freezingLevelFt": {
      +                "type": "number"
      +              },
      +              "moonIllumination": {
      +                "type": "number"
      +              },
      +              "moonPhase": {
      +                "enum": [
      +                  "new",
      +                  "waxing_crescent",
      +                  "first_quarter",
      +                  "waxing_gibbous",
      +                  "full",
      +                  "waning_gibbous",
      +                  "last_quarter",
      +                  "waning_crescent"
      +                ]
      +              },
      +              "overallRating": {
      +                "enum": [
      +                  "excellent",
      +                  "good",
      +                  "marginal",
      +                  "poor",
      +                  "dangerous"
      +                ]
      +              },
      +              "precipChancePercent": {
      +                "type": [
      +                  "number",
      +                  "null"
      +                ]
      +              },
      +              "precipType": {
      +                "enum": [
      +                  "none",
      +                  "rain",
      +                  "snow",
      +                  "mixed",
      +                  "sleet"
      +                ]
      +              },
      +              "provenance": {
      +                "additionalProperties": false,
      +                "properties": {
      +                  "weather": {
      +                    "additionalProperties": false,
      +                    "properties": {
      +                      "fetchedAt": {
      +                        "type": [
      +                          "string",
      +                          "null"
      +                        ]
      +                      },
      +                      "reliability": {
      +                        "enum": [
      +                          "primary",
      +                          "secondary",
      +                          "supplementary"
      +                        ]
      +                      },
      +                      "sourceName": {
      +                        "type": "string"
      +                      },
      +                      "url": {
      +                        "type": "string"
      +                      }
      +                    },
      +                    "required": [
      +                      "sourceName"
      +                    ],
      +                    "type": "object"
      +                  }
      +                },
      +                "required": [
      +                  "weather"
      +                ],
      +                "type": "object"
      +              },
      +              "referencePoint": {
      +                "const": "route-high-point"
      +              },
      +              "snowpackCondition": {
      +                "enum": [
      +                  "powder",
      +                  "packed_powder",
      +                  "wind_crust",
      +                  "sun_crust",
      +                  "corn",
      +                  "ice",
      +                  "wet_heavy",
      +                  "bare"
      +                ]
      +              },
      +              "summitTempHighF": {
      +                "type": "number"
      +              },
      +              "summitTempLowF": {
      +                "type": "number"
      +              },
      +              "sunrise": {
      +                "type": "string"
      +              },
      +              "sunriseAt": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "sunset": {
      +                "type": "string"
      +              },
      +              "sunsetAt": {
      +                "type": [
      +                  "string",
      +                  "null"
      +                ]
      +              },
      +              "windAvgMph": {
      +                "type": "number"
      +              },
      +              "windDirection": {
      +                "type": "string"
      +              },
      +              "windMaxMph": {
      +                "type": "number"
      +              }
      +            },
      +            "required": [
      +              "date",
      +              "overallRating",
      +              "summitTempLowF",
      +              "summitTempHighF",
      +              "windMaxMph",
      +              "windDirection",
      +              "precipChancePercent",
      +              "freezingLevelFt",
      +              "snowpackCondition",
      +              "avalancheDanger",
      +              "sunrise",
      +              "sunset",
      +              "sunriseAt",
      +              "sunsetAt",
      +              "moonPhase",
      +              "moonIllumination",
      +              "provenance",
      +              "referencePoint",
      +              "windAvgMph",
      +              "precipType"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "disclaimer": {
      +          "type": "string"
      +        },
      +        "disclaimerText": {
      +          "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +        },
      +        "objective": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "name": {
      +              "type": "string"
      +            },
      +            "slug": {
      +              "type": "string"
      +            }
      +          },
      +          "required": [
      +            "slug",
      +            "name"
      +          ],
      +          "type": "object"
      +        },
      +        "route": {
      +          "additionalProperties": false,
      +          "properties": {
      +            "activityMode": {
      +              "enum": [
      +                "mountaineering",
      +                "skimo_splitboard",
      +                "rock_climbing",
      +                "trail_running",
      +                "mountain_biking",
      +                "snowmobiling",
      +                "ice_climbing"
      +              ]
      +            },
      +            "aspect": {
      +              "type": "string"
      +            },
      +            "highPointElevationFt": {
      +              "type": "number"
      +            },
      +            "id": {
      +              "type": "string"
      +            },
      +            "name": {
      +              "type": "string"
      +            },
      +            "supportedActivities": {
      +              "items": {
      +                "enum": [
      +                  "mountaineering",
      +                  "skimo_splitboard",
      +                  "rock_climbing",
      +                  "trail_running",
      +                  "mountain_biking",
      +                  "snowmobiling",
      +                  "ice_climbing"
      +                ]
      +              },
      +              "type": "array"
      +            }
      +          },
      +          "required": [
      +            "id",
      +            "name",
      +            "activityMode",
      +            "supportedActivities"
      +          ],
      +          "type": "object"
      +        },
      +        "source": {
      +          "const": "ClimbCast"
      +        },
      +        "sourceUrl": {
      +          "type": "string"
      +        },
      +        "sources": {
      +          "items": {
      +            "$ref": "#/$defs/source"
      +          },
      +          "type": "array"
      +        },
      +        "timeZone": {
      +          "type": "string"
      +        },
      +        "updatedAt": {
      +          "type": "string"
      +        },
      +        "utcOffsetSeconds": {
      +          "type": "number"
      +        }
      +      },
      +      "required": [
      +        "source",
      +        "sourceUrl",
      +        "disclaimer",
      +        "objective",
      +        "updatedAt",
      +        "sources",
      +        "disclaimerText",
      +        "route",
      +        "days"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "disclaimerText": {
      +          "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +        },
      +        "message": {
      +          "type": "string"
      +        },
      +        "status": {
      +          "const": "not_found"
      +        },
      +        "suggestions": {
      +          "items": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "name": {
      +                "type": "string"
      +              },
      +              "slug": {
      +                "type": "string"
      +              }
      +            },
      +            "required": [
      +              "slug",
      +              "name"
      +            ],
      +            "type": "object"
      +          },
      +          "maxItems": 3,
      +          "type": "array"
      +        },
      +        "try": {
      +          "const": "search_objectives"
      +        }
      +      },
      +      "required": [
      +        "status",
      +        "message",
      +        "try",
      +        "suggestions",
      +        "disclaimerText"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "disclaimerText": {
      +          "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +        },
      +        "error": {
      +          "const": "invalid_input"
      +        },
      +        "fields": {
      +          "items": {
      +            "additionalProperties": false,
      +            "properties": {
      +              "allowed": {
      +                "items": {
      +                  "type": "string"
      +                },
      +                "type": "array"
      +              },
      +              "field": {
      +                "type": "string"
      +              },
      +              "problem": {
      +                "enum": [
      +                  "required",
      +                  "type",
      +                  "enum",
      +                  "length",
      +                  "pattern",
      +                  "range",
      +                  "unexpected"
      +                ]
      +              }
      +            },
      +            "required": [
      +              "field",
      +              "problem"
      +            ],
      +            "type": "object"
      +          },
      +          "type": "array"
      +        },
      +        "message": {
      +          "type": "string"
      +        },
      +        "requestId": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "error",
      +        "message",
      +        "requestId",
      +        "disclaimerText",
      +        "fields"
      +      ],
      +      "type": "object"
      +    },
      +    {
      +      "additionalProperties": false,
      +      "properties": {
      +        "disclaimerText": {
      +          "const": "This data is for informational purposes only. ClimbCast presents information, you manage risk. Ratings are decision-support heuristics, not advice. For any safety-critical decision, always consult the official source bulletin directly. Forecasts may contain errors and are not a substitute for sound human judgment. Weather and avalanche conditions can change rapidly and without warning. You are solely responsible for your decisions in the outdoors."
      +        },
      +        "error": {
      +          "enum": [
      +            "MCP_BUSY",
      +            "MCP_RESPONSE_TOO_LARGE",
      +            "MCP_VOICE_GATE_FAILED",
      +            "MCP_TOOL_FAILED",
      +            "rate_limited",
      +            "processing_limit",
      +            "response_limit"
      +          ]
      +        },
      +        "message": {
      +          "type": "string"
      +        },
      +        "requestId": {
      +          "type": [
      +            "string",
      +            "null"
      +          ]
      +        }
      +      },
      +      "required": [
      +        "error",
      +        "message",
      +        "requestId",
      +        "disclaimerText"
      +      ],
      +      "type": "object"
      +    }
      +  ],
      +  "type": "object"
      +}
  6. First observed

TDQS

A4.1/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already cover the safety profile (readOnly, idempotent, openWorld), and the description layers on real behavioral context: danger ratings are not served, markdown output puts sections in structuredContent only, and the tool is informational only. It doesn't discuss rate limits or auth, but the added constraints go well beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The purpose and the routing hint are front-loaded and the closing 'Informational only' is a useful terminal caveat. The middle sentence is a dense, comma-laden run-on, but nearly every clause carries information an agent could act on.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a read-only, output-schema-backed tool the description is close to complete: it states the horizon, the payload, the format caveat, and the alternative. Nothing critical is missing, though it could note whether results are cached or how the anchor point affects coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all four parameters are already documented, and the description's note that activity 'selects one of the route's activities listed by search_objectives' largely restates the schema's activity description. The format/markdown behavior adds slightly more, but this is the baseline case where the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Names a specific verb and resource ('Returns up to five days of public route conditions, anchored to the route high point') and enumerates the exact payload (catalog gain, provenance, timestamps, avalanche center, corn harvest, rock conditions). It also distinguishes itself from get_trip_brief, so an agent can tell them apart without opening a schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly routes the agent to an alternative: 'For what the whole trip looks like, get_trip_brief returns the forecast page sections in one call.' That is a clear when-to-use-other signal, though it stops short of stating when NOT to use this tool or listing prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources