ClimbCast
Server Details
Conditions, trip briefs, alerts, permits, roads, hourly, areas, accuracy for WA, OR, BC. No account.
- Status
- Healthy
- Uptime
- 99.7% over 18 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
TDQS
Scored across 9 tools
Most tools target clearly distinct resources (permits, alerts, accuracy, hourly conditions, areas, search). However, get_objective_conditions, get_route_conditions, and get_trip_brief all return forecast/condition data with overlapping scopes, requiring careful reading to select the right one. The descriptions help, but the cluster remains a potential source of confusion.
All tool names use consistent snake_case with a predictable verb_noun pattern: get_* for retrievals, list_areas, and search_objectives. The slight plural in get_access_and_permits is a minor deviation but does not break the pattern.
With 9 tools, the set is well within the typical 3–15 range for a focused server. Each tool covers a distinct facet of the forecast/conditions domain, so no tool feels redundant or extraneous.
The surface covers search, area listing, objective/route conditions, trip briefs, hourly conditions, permits, alerts, and forecast accuracy, which is comprehensive for an informational server. Minor gaps exist—avalanche danger ratings and some external alerts are explicitly not served—but links to external sources are provided, so agents can work around them.
Available Tools
9 toolsget_access_and_permitsPermits and road accessARead-onlyIdempotentInspect
Returns the permit entry and road access shown on a route's forecast page for a covered objective: the permit status, fee, notes and official link, and the road conditions for the approach passes, with highway, temperature, restrictions, the road agency named and the time its data was fetched. Road data older than 30 minutes is marked. Informational only.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Public objective slug returned by search_objectives. | |
| route_id | Yes | Route identifier returned by search_objectives. The permit entry resolves at route level. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish read-only, idempotent, non-destructive, open-world behavior, so the bar is lower. The description still adds real behavioral value by disclosing that road data older than 30 minutes is marked, that a fetch timestamp accompanies the data, and that the content is informational only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the verb and resource, followed by two short supporting sentences. The enumeration of returned fields is dense but readable; some of it duplicates what the output schema already exposes, which keeps it from a 5.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so field-level return values need not be spelled out, and annotations cover the safety profile. The description supplies the remaining essentials an agent needs: scope (covered objective/route), staleness marking, and the informational nature of the data.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both params, including the note that the permit entry resolves at route level, so the schema carries the semantics. The description adds only indirect context ('a route's forecast page for a covered objective') and no format or constraint detail beyond the schema; baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: it returns permit entry (status, fee, notes, official link) and road access/conditions for a route's approach passes. The scope is well defined, but it doesn't distinguish itself from sibling tools like get_route_conditions or get_objective_conditions, which plausibly return overlapping road/condition data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit when-to-use, when-not, or alternative-tool guidance. 'Informational only' is a caveat about the nature of the output, not routing advice, and 'for a covered objective' only hints that some objectives lack data. An agent gets no help choosing between this and get_route_conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_alertsObjective alertsARead-onlyIdempotentInspect
Returns the NPS park alerts and National Weather Service fire weather alerts displayed for a covered objective, with source attribution and retrieval timestamps. ClimbCast does not carry current USDA Forest Service alerts or closures. Informational only.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Public objective slug returned by search_objectives. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context beyond that: results carry source attribution and retrieval timestamps, coverage excludes USFS alerts/closures, and the output is informational rather than authoritative. That is meaningful disclosure about completeness and freshness, though it stops short of stating update cadence or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the return content, then the coverage exclusion, then the authority caveat. No filler and no repetition of the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value detail need not be spelled out, and the description covers the remaining agent-facing unknowns: what sources appear, what is missing, and that each item is timestamped. Only the update cadence of the underlying alerts is left unaddressed, a minor gap for this tool's complexity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There is a single parameter with 100% schema description coverage, so the schema already explains that slug is an objective slug returned by search_objectives. The phrase 'for a covered objective' reinforces that the target must be one ClimbCast covers, but adds no syntax, format, or error-condition detail. Baseline 3 applies when the schema carries the load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (returns park/fire-weather alerts) and pins the scope to a single covered objective, with named sources (NPS, National Weather Service). It also draws an explicit negative boundary — no USDA Forest Service alerts or closures — which is exactly the kind of scope statement that separates it from siblings like get_trip_brief.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied rather than stated: the slug comes from search_objectives and the alerts belong to one objective. There is no explicit when-to-use guidance, no statement of when another sibling (e.g. get_trip_brief or get_objective_conditions) would be the better call, and 'Informational only' hints at caution without saying what to do instead.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_forecast_accuracyForecast accuracyARead-onlyIdempotentInspect
Returns stored public regional forecast accuracy, including observed-station or model-proxy truth lineage, data sufficiency, and eligibility. Takes either a region_id or an objective slug, which resolves to the accuracy region of the NWAC zone the objective is bound to. Informational only.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | No | Public objective slug returned by search_objectives. It resolves to the accuracy region of the NWAC zone the objective is bound to. Provide exactly one of slug and region_id. | |
| region_id | No | Public accuracy region identifier, for example pnw-olympics. Provide exactly one of region_id and slug. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover readOnly/idempotent/non-destructive/closed-world, so the bar is lower; the description adds real context by revealing the data is 'stored' (precomputed, not live) and that truth lineage may be 'observed-station or model-proxy,' which implies variable data quality.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the core purpose front-loaded; the lineage/eligibility clause and the resolution rule each carry information. 'Informational only' is a slightly terse trailing qualifier but earns its place as a scope warning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need no explanation, and the description covers purpose, key resolution, and the informational-only scope. It omits any note on whether data sufficiency can make the result empty or partial, which an agent might want.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the schema already carries the mutually-exclusive 'provide exactly one of slug and region_id' constraint. The description restates the resolution behavior rather than adding format/syntax detail, so the baseline 3 holds.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Returns') and resource ('stored public regional forecast accuracy') plus the sub-components it exposes (truth lineage, data sufficiency, eligibility). This clearly separates it from the condition/alert siblings, though it never names an alternative tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through the dual-key resolution ('takes either a region_id or an objective slug') and the caveat 'Informational only,' which signals it is not a decision-driving tool. It does not, however, state when to prefer this over get_objective_conditions or get_hourly_conditions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_hourly_conditionsHourly conditionsARead-onlyIdempotentInspect
Returns the two-hourly temperature, wind speed, and wind direction shown in the hourly view of the forecast page's weather by elevation grid, for one day in the free forecast window, with local times, ISO timestamps, the time zone, and the chosen elevation. Takes a date from the route's visible days and an optional elevation band of base, mid, or summit. Informational only.
| Name | Required | Description | Default |
|---|---|---|---|
| date | Yes | Day to return, as YYYY-MM-DD, from the days in the free forecast window. | |
| slug | Yes | Public objective slug returned by search_objectives. | |
| activity | No | 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. | |
| route_id | Yes | Route identifier returned by search_objectives. | |
| elevation_band | No | Optional elevation band for the hourly temperature and wind: base, mid, or summit. The forecast page opens on summit, which is the default. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds one genuine constraint, the free forecast window limitation, and reinforces 'Informational only', but otherwise restates return contents and the elevation default already present in the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The lead sentence front-loads the return payload and scope, and the second sentence handles the inputs efficiently. It is dense but every clause carries content; the trailing 'Informational only.' fragment is slightly redundant given readOnlyHint but not wasteful.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-field detail need not be repeated, and annotations cover safety and idempotency. The description supplies the key operative constraints (free forecast window, single day, optional elevation band), leaving only sibling-differentiation guidance as a gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all five parameters are already documented in the schema, including the elevation_band enum and its default. The description adds only marginal meaning (e.g. the date must be from visible/free-window days), which justifies the baseline 3 rather than more.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific verb and resource (returns two-hourly temperature, wind speed, wind direction) and pins down the source (weather-by-elevation grid in the forecast page's hourly view) and scope (one day). It is clearly distinct from a generic conditions lookup, though it never explicitly names sibling tools like get_route_conditions or get_objective_conditions to draw the boundary.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied through the input constraints ('a date from the route's visible days', 'one day in the free forecast window'), which tells the agent when a call will succeed. However, there is no explicit when-to-use guidance versus alternatives such as get_route_conditions or get_objective_conditions, and no exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_objective_conditionsObjective conditionsARead-onlyIdempotentInspect
Returns public conditions for a covered objective: summit weather, the objective page's route list with grade, type, and round-trip distance, source provenance, and timestamps, in JSON or markdown. Covers up to five days. Daylight and air quality appear for the first day only, and get_trip_brief carries the per-day values the forecast page shows. Informational only.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Public objective slug returned by search_objectives. | |
| format | No | Text representation; structured data is included in either format. | json |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds real behavioral context beyond them: the five-day coverage limit, that daylight and air quality are first-day-only, that source provenance and timestamps are included, and that the tool is informational only.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loads the return contents in the first clause, then layers scope limits and the sibling boundary. It is dense but every sentence carries information; slightly long but no obvious filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values need not be explained, yet the description still covers time coverage, format options, special-case fields, and the alternative tool. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents both slug and format (including the enum and default). The description's 'in JSON or markdown' only restates the format parameter and adds no syntax or constraint detail beyond the schema, making the baseline 3 appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (Returns) and resource (public conditions for a covered objective) and enumerates exactly what is returned: summit weather, route list with grade/type/distance, provenance, timestamps. It also names the sibling get_trip_brief and clarifies the boundary, so an agent can distinguish it without opening the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context (public conditions for a covered objective) and routes the agent to get_trip_brief for per-day values shown on the forecast page. It lacks an explicit 'do not use this when' exclusion, but the alternative routing is stated rather than merely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_route_conditionsRoute conditionsARead-onlyIdempotentInspect
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.
| Name | Required | Description | Default |
|---|---|---|---|
| slug | Yes | Public objective slug returned by search_objectives. | |
| format | No | Text representation; structured data is included in either format. | json |
| activity | No | 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. | |
| route_id | Yes | Route identifier returned by search_objectives. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
get_trip_briefTrip briefARead-onlyIdempotentInspect
Returns the signed-out forecast page sections for a route in one call, covering up to five days, or one day with the date input: forecast days, daylight, air quality, and agency alerts, each with source provenance and a freshness status. Forecast 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, and the document carries the route's permit entry and trailhead road access. Informational only.
| Name | Required | Description | Default |
|---|---|---|---|
| date | No | Optional day to return, as YYYY-MM-DD. Must be one of the days in the free forecast window. | |
| slug | Yes | Public objective slug returned by search_objectives. | |
| include | No | Optional section names to return: forecast, daylight, airQuality, alerts. When omitted, all four are returned. | |
| activity | No | 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. | |
| route_id | Yes | Route identifier returned by search_objectives. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already establish readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds genuine behavioral context beyond that: negative capability disclosure ('danger ratings are not served'), conditional field presence ('where the forecast page shows them'), and the provenance/freshness metadata attached to each section.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The opening sentence is well front-loaded with purpose and scope. The second sentence, however, is a dense run-on cataloguing conditional fields ('avalanche center, bulletin state and forecast link... corn harvest window, and rock conditions'), and much of that return-shape detail is redundant given a declared output schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, the description needn't document return values, and it correctly focuses on scope, sections, and provenance. It is nearly complete for an aggregation read tool; the one meaningful gap is the absence of sibling routing, which matters given several closely overlapping read tools.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the baseline is 3, but the description adds real meaning the schema lacks: the temporal default behavior ('covering up to five days, or one day with the date input') clarifies how omitting date changes the result. The include sections are merely restated from the schema, so it does not go beyond that single useful clarification.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (the signed-out forecast page sections for a route) and enumerates exactly what it aggregates: forecast days, daylight, air quality, and agency alerts, each with provenance and freshness. That is clear enough to identify the tool, but it never distinguishes itself from overlapping siblings like get_route_conditions, get_alerts, or get_access_and_permits, whose data it explicitly re-serves in bundled form.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
'In one call' and the multi-section coverage imply the aggregation use case (fetch several forecast page sections at once rather than calling siblings separately), and 'Informational only' bounds its role. However, there is no explicit when-to-use versus when to prefer get_route_conditions/get_alerts, and no stated prerequisites, so the routing is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_areasCovered areasARead-onlyIdempotentInspect
Lists the public coverage areas shown on the coverage directory, with each area's slug, name, state or province code, and visible activities. An area is a fixed geographic definition, not a distance from the caller. Its slug is the optional area input of search_objectives. Informational only.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=false, so the safety profile is covered. The description adds genuine context beyond that: it labels the call 'Informational only' and corrects the likely misreading of 'area' as a radius/distance, which is a real behavioral clarification.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences, front-loaded with what is returned, then the semantic caveat, then the routing tie-in. No filler and nothing repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists and the description still names the key fields, so return-shape explanation is not required. For a zero-parameter, read-only listing tool this covers everything an agent needs before calling it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Zero parameters, so the baseline is 4. The description goes slightly beyond by explaining that the emitted slug is the value accepted by search_objectives' area parameter, giving the output field cross-tool meaning rather than leaving it as an opaque identifier.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Lists the public coverage areas shown on the coverage directory') and enumerates the returned fields (slug, name, state/province code, visible activities). It also disambiguates the domain term against its nearest sibling by tying the slug to search_objectives' optional area input.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Clarifies the operating context with 'An area is a fixed geographic definition, not a distance from the caller' and 'Informational only', and points at search_objectives as the consumer of the slugs. It gives clear context but stops short of an explicit when-to-use / when-not-to-use rule against the other siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_objectivesSearch covered objectivesARead-onlyIdempotentInspect
Searches the public coverage catalog by name or alias, with optional region and activity filters. Coverage follows the current public scope. Region filters include WA, OR, and BC. Results list each objective's slug and route IDs with their activities, which the other tools take as inputs. An optional area input limits results to the objectives the coverage directory lists under that area. Query and area can be combined, and at least one of them is needed. A query that names an area or a reviewed place name lists that area's objectives, marked by matchedBy, after any objectives matched by name. Informational only.
| Name | Required | Description | Default |
|---|---|---|---|
| area | No | Optional public area slug from list_areas. Limits results to the objectives the coverage directory lists under that area. At least one of query and area is needed. | |
| limit | No | Maximum number of matching objectives. | |
| query | No | Objective name, alias, place name, or area name; matching ignores case and accents. At least one of query and area is needed. | |
| region | No | Optional state or province code or name: WA, Washington, OR, Oregon, BC, British Columbia, or B.C. Matching ignores case. | |
| activity | No | Optional visible activity filter. |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly/idempotent/non-destructive, so the description earns credit for adding real behavior: coverage follows the current public scope, results carry slug and route IDs consumed by other tools, matchedBy marks area/place-name matches which are ranked after name matches, and it is informational only. This is substantive disclosure beyond the safety annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose, which is good, but several sentences duplicate schema text almost verbatim ('Region filters include WA, OR, and BC', 'An optional area input limits results to the objectives the coverage directory lists under that area'). Those lines do not earn their place against a 100%-covered schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With an output schema present, return-value detail is not required, and the description still usefully notes what results contain (slug, route IDs, activities) and the matchedBy ranking. Combined with full schema coverage and annotations, the definition is complete enough to invoke correctly, with only minor redundancy.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents every parameter including region examples, enum values, and the query/area requirement. The description largely restates this (region codes WA/OR/BC, area limiting results), adding little syntax or format meaning beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb and resource ('Searches the public coverage catalog') plus scope qualifiers (name, alias, region, activity). It clearly distinguishes itself from siblings like list_areas and get_objective_conditions by describing the catalog-search role and noting its outputs feed other tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
States the key precondition ('at least one of query and area is needed') and that the two can be combined, and points at list_areas as the source of area slugs. It does not explicitly contrast when to use this versus the sibling get_* tools, so it stops short of a full routing guide.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
- Added
get_access_and_permits - Changed
get_alerts1 field changed- changed
Output schema / oneOfPrevious value: -[ - { - "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." - }, - "nps": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "fetchedAt": { - "type": "string" - }, - "hasActiveClosure": { - "type": "boolean" - }, - "nonRoadAlerts": { - "items": { - "additionalProperties": false, - "properties": { - "category": { - "enum": [ - "Danger", - "Caution", - "Information", - "Park Closure", - "Road Closure" - ] - }, - "description": { - "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" - } - ] - }, - "title": { - "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": { - "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" - } - ] - } - }, - "required": [ - "category", - "title", - "description" - ], - "type": "object" - }, - "type": "array" - }, - "notice": { - "const": "No protection is claimed in original U.S. Government works" - }, - "parkCode": { - "type": [ - "string", - "null" - ] - }, - "roadAlerts": { - "items": { - "additionalProperties": false, - "properties": { - "category": { - "enum": [ - "Danger", - "Caution", - "Information", - "Park Closure", - "Road Closure" - ] - }, - "description": { - "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" - } - ] - }, - "title": { - "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": { - "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" - } - ] - } - }, - "required": [ - "category", - "title", - "description" - ], - "type": "object" - }, - "type": "array" - }, - "source": { - "const": "Source: National Park Service API" - } - }, - "required": [ - "parkCode", - "hasActiveClosure", - "nonRoadAlerts", - "roadAlerts", - "source", - "fetchedAt", - "notice" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "objective": { - "additionalProperties": false, - "properties": { - "name": { - "type": "string" - }, - "slug": { - "type": "string" - } - }, - "required": [ - "slug", - "name" - ], - "type": "object" - }, - "status": { - "const": "ok" - }, - "usfs": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "alerts": { - "items": { - "additionalProperties": false, - "properties": { - "byline": { - "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" - } - ] - }, - "description": { - "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" - } - ] - }, - "forestName": { - "type": "string" - }, - "source": { - "enum": [ - "NWS" - ] - }, - "title": { - "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": { - "enum": [ - "fire restriction", - "trail closure", - "road closure", - "area closure", - "other" - ] - }, - "url": { - "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" - } - ] - } - }, - "required": [ - "type", - "title", - "forestName", - "description" - ], - "type": "object" - }, - "type": "array" - }, - "sources": { - "items": { - "additionalProperties": false, - "properties": { - "fetchedAt": { - "type": "string" - }, - "forestName": { - "type": "string" - }, - "source": { - "enum": [ - "Source: USDA Forest Service", - "Source: National Weather Service" - ] - } - }, - "required": [ - "forestName", - "source", - "fetchedAt" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "alerts", - "sources" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "status", - "objective", - "nps", - "usfs", - "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." - }, - "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": { + "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." + }, + "nps": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "fetchedAt": { + "type": "string" + }, + "hasActiveClosure": { + "type": "boolean" + }, + "nonRoadAlerts": { + "items": { + "additionalProperties": false, + "properties": { + "category": { + "enum": [ + "Danger", + "Caution", + "Information", + "Park Closure", + "Road Closure" + ] + }, + "description": { + "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" + } + ] + }, + "title": { + "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": { + "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" + } + ] + } + }, + "required": [ + "category", + "title", + "description" + ], + "type": "object" + }, + "type": "array" + }, + "notice": { + "const": "No protection is claimed in original U.S. Government works" + }, + "parkCode": { + "type": [ + "string", + "null" + ] + }, + "roadAlerts": { + "items": { + "additionalProperties": false, + "properties": { + "category": { + "enum": [ + "Danger", + "Caution", + "Information", + "Park Closure", + "Road Closure" + ] + }, + "description": { + "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" + } + ] + }, + "title": { + "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": { + "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" + } + ] + } + }, + "required": [ + "category", + "title", + "description" + ], + "type": "object" + }, + "type": "array" + }, + "source": { + "const": "Source: National Park Service API" + } + }, + "required": [ + "parkCode", + "hasActiveClosure", + "nonRoadAlerts", + "roadAlerts", + "source", + "fetchedAt", + "notice" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "objective": { + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "slug", + "name" + ], + "type": "object" + }, + "status": { + "const": "ok" + }, + "usfs": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "alerts": { + "items": { + "additionalProperties": false, + "properties": { + "byline": { + "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" + } + ] + }, + "description": { + "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" + } + ] + }, + "forestName": { + "type": "string" + }, + "source": { + "enum": [ + "NWS" + ] + }, + "title": { + "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": { + "enum": [ + "fire restriction", + "trail closure", + "road closure", + "area closure", + "other" + ] + }, + "url": { + "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" + } + ] + } + }, + "required": [ + "type", + "title", + "forestName", + "description" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "items": { + "additionalProperties": false, + "properties": { + "fetchedAt": { + "type": "string" + }, + "forestName": { + "type": "string" + }, + "source": { + "enum": [ + "Source: USDA Forest Service", + "Source: National Weather Service" + ] + } + }, + "required": [ + "forestName", + "source", + "fetchedAt" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "alerts", + "sources" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "usfsForestPages": { + "items": { + "additionalProperties": false, + "properties": { + "alertsUrl": { + "type": "string" + }, + "forestName": { + "type": "string" + } + }, + "required": [ + "forestName", + "alertsUrl" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "status", + "objective", + "nps", + "usfs", + "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." + }, + "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" + } +]
- Changed
get_forecast_accuracy1 field changed- changed
Output schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "computedAt": { - "type": [ - "string", - "null" - ] - }, - "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." - }, - "eligible": { - "const": true - }, - "precipOccurrence": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "accuracyPct": { - "type": "number" - }, - "n": { - "type": "number" - } - }, - "required": [ - "accuracyPct", - "n" - ], - "type": "object" - }, - { - "const": "insufficient" - } - ] - }, - "provenance": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "replaySource": { - "const": "open-meteo-archive" - }, - "truth": { - "const": "ifs-9km" - } - }, - "required": [ - "truth", - "replaySource" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "replaySource": { - "const": "open-meteo-archive" - }, - "station": { - "additionalProperties": false, - "properties": { - "distanceMi": { - "type": "number" - }, - "elevDeltaFt": { - "type": "number" - }, - "network": { - "enum": [ - "snotel", - "bc-asws", - "synoptic" - ] - }, - "stationId": { - "type": "string" - }, - "stationName": { - "type": "string" - } - }, - "required": [ - "stationId", - "network", - "stationName", - "distanceMi", - "elevDeltaFt" - ], - "type": "object" - }, - "truth": { - "const": "station-obs" - } - }, - "required": [ - "truth", - "replaySource", - "station" - ], - "type": "object" - } - ] - }, - "regionId": { - "type": "string" - }, - "temperature": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "biasF": { - "type": "number" - }, - "maeF": { - "type": "number" - }, - "n": { - "type": "number" - } - }, - "required": [ - "maeF", - "biasF", - "n" - ], - "type": "object" - }, - { - "const": "insufficient" - } - ] - }, - "windowDays": { - "type": "number" - } - }, - "required": [ - "regionId", - "windowDays", - "provenance", - "computedAt", - "disclaimerText", - "eligible", - "temperature", - "precipOccurrence" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "computedAt": { - "type": [ - "string", - "null" - ] - }, - "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." - }, - "eligible": { - "const": false - }, - "provenance": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "replaySource": { - "const": "open-meteo-archive" - }, - "truth": { - "const": "ifs-9km" - } - }, - "required": [ - "truth", - "replaySource" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "replaySource": { - "const": "open-meteo-archive" - }, - "station": { - "additionalProperties": false, - "properties": { - "distanceMi": { - "type": "number" - }, - "elevDeltaFt": { - "type": "number" - }, - "network": { - "enum": [ - "snotel", - "bc-asws", - "synoptic" - ] - }, - "stationId": { - "type": "string" - }, - "stationName": { - "type": "string" - } - }, - "required": [ - "stationId", - "network", - "stationName", - "distanceMi", - "elevDeltaFt" - ], - "type": "object" - }, - "truth": { - "const": "station-obs" - } - }, - "required": [ - "truth", - "replaySource", - "station" - ], - "type": "object" - } - ] - }, - "reason": { - "enum": [ - "no-station-truth", - "insufficient-samples", - "elevation-gap-exceeded", - "stale-station-truth" - ] - }, - "regionId": { - "type": "string" - }, - "windowDays": { - "type": "number" - } - }, - "required": [ - "regionId", - "windowDays", - "provenance", - "computedAt", - "disclaimerText", - "eligible", - "reason" - ], - "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." - }, - "knownRegionIds": { - "items": { - "type": "string" - }, - "type": "array" - }, - "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", - "knownRegionIds" - ], - "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": { + "computedAt": { + "type": [ + "string", + "null" + ] + }, + "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." + }, + "eligible": { + "const": true + }, + "precipOccurrence": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "accuracyPct": { + "type": "number" + }, + "n": { + "type": "number" + } + }, + "required": [ + "accuracyPct", + "n" + ], + "type": "object" + }, + { + "const": "insufficient" + } + ] + }, + "provenance": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "replaySource": { + "const": "open-meteo-archive" + }, + "truth": { + "const": "ifs-9km" + } + }, + "required": [ + "truth", + "replaySource" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "replaySource": { + "const": "open-meteo-archive" + }, + "station": { + "additionalProperties": false, + "properties": { + "distanceMi": { + "type": "number" + }, + "elevDeltaFt": { + "type": "number" + }, + "network": { + "enum": [ + "snotel", + "bc-asws", + "synoptic" + ] + }, + "stationId": { + "type": "string" + }, + "stationName": { + "type": "string" + } + }, + "required": [ + "stationId", + "network", + "stationName", + "distanceMi", + "elevDeltaFt" + ], + "type": "object" + }, + "truth": { + "const": "station-obs" + } + }, + "required": [ + "truth", + "replaySource", + "station" + ], + "type": "object" + } + ] + }, + "regionId": { + "type": "string" + }, + "temperature": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "biasF": { + "type": "number" + }, + "maeF": { + "type": "number" + }, + "n": { + "type": "number" + } + }, + "required": [ + "maeF", + "biasF", + "n" + ], + "type": "object" + }, + { + "const": "insufficient" + } + ] + }, + "windowDays": { + "type": "number" + } + }, + "required": [ + "regionId", + "windowDays", + "provenance", + "computedAt", + "disclaimerText", + "eligible", + "temperature", + "precipOccurrence" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "computedAt": { + "type": [ + "string", + "null" + ] + }, + "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." + }, + "eligible": { + "const": false + }, + "provenance": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "replaySource": { + "const": "open-meteo-archive" + }, + "truth": { + "const": "ifs-9km" + } + }, + "required": [ + "truth", + "replaySource" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "replaySource": { + "const": "open-meteo-archive" + }, + "station": { + "additionalProperties": false, + "properties": { + "distanceMi": { + "type": "number" + }, + "elevDeltaFt": { + "type": "number" + }, + "network": { + "enum": [ + "snotel", + "bc-asws", + "synoptic" + ] + }, + "stationId": { + "type": "string" + }, + "stationName": { + "type": "string" + } + }, + "required": [ + "stationId", + "network", + "stationName", + "distanceMi", + "elevDeltaFt" + ], + "type": "object" + }, + "truth": { + "const": "station-obs" + } + }, + "required": [ + "truth", + "replaySource", + "station" + ], + "type": "object" + } + ] + }, + "reason": { + "enum": [ + "no-station-truth", + "insufficient-samples", + "elevation-gap-exceeded", + "stale-station-truth" + ] + }, + "regionId": { + "type": "string" + }, + "windowDays": { + "type": "number" + } + }, + "required": [ + "regionId", + "windowDays", + "provenance", + "computedAt", + "disclaimerText", + "eligible", + "reason" + ], + "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." + }, + "knownRegionIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "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", + "knownRegionIds" + ], + "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" + } +]
- Added
get_hourly_conditions - Changed
get_objective_conditions1 field changed- changed
Output schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "accuracyRegionId": { - "type": [ - "string", - "null" - ] - }, - "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" - }, - "condition": { - "type": "string" - }, - "date": { - "type": "string" - }, - "overallRating": { - "enum": [ - "excellent", - "good", - "marginal", - "poor", - "dangerous" - ] - }, - "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": "summit" - }, - "snowInches": { - "type": [ - "number", - "null" - ] - }, - "summitTempHighF": { - "type": "number" - }, - "summitTempLowF": { - "type": "number" - }, - "windDirection": { - "type": [ - "string", - "null" - ] - }, - "windMaxMph": { - "type": "number" - } - }, - "required": [ - "date", - "overallRating", - "summitTempLowF", - "summitTempHighF", - "windMaxMph", - "windDirection", - "precipChancePercent", - "provenance", - "referencePoint", - "condition", - "snowInches" - ], - "type": "object" - }, - "maxItems": 5, - "prefixItems": [ - { - "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" - }, - "condition": { - "type": "string" - }, - "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" - ] - }, - "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": "summit" - }, - "snowInches": { - "type": [ - "number", - "null" - ] - }, - "summitTempHighF": { - "type": "number" - }, - "summitTempLowF": { - "type": "number" - }, - "sunrise": { - "type": "string" - }, - "sunriseAt": { - "type": [ - "string", - "null" - ] - }, - "sunset": { - "type": "string" - }, - "sunsetAt": { - "type": [ - "string", - "null" - ] - }, - "windDirection": { - "type": [ - "string", - "null" - ] - }, - "windMaxMph": { - "type": "number" - } - }, - "required": [ - "date", - "overallRating", - "summitTempLowF", - "summitTempHighF", - "windMaxMph", - "windDirection", - "precipChancePercent", - "provenance", - "referencePoint", - "condition", - "snowInches", - "sunrise", - "sunset", - "sunriseAt", - "sunsetAt", - "moonPhase", - "moonIllumination" - ], - "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." - }, - "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" - }, - "routes": { - "items": { - "additionalProperties": false, - "properties": { - "difficulty": { - "type": "string" - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "roundTripDistanceMi": { - "type": "number" - }, - "type": { - "type": "string" - } - }, - "required": [ - "id", - "name", - "difficulty", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "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", - "routes", - "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": { + "accuracyRegionId": { + "type": [ + "string", + "null" + ] + }, + "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" + }, + "condition": { + "type": "string" + }, + "date": { + "type": "string" + }, + "overallRating": { + "enum": [ + "excellent", + "good", + "marginal", + "poor", + "dangerous" + ] + }, + "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": "summit" + }, + "snowInches": { + "type": [ + "number", + "null" + ] + }, + "summitTempHighF": { + "type": "number" + }, + "summitTempLowF": { + "type": "number" + }, + "windDirection": { + "type": [ + "string", + "null" + ] + }, + "windMaxMph": { + "type": "number" + } + }, + "required": [ + "date", + "overallRating", + "summitTempLowF", + "summitTempHighF", + "windMaxMph", + "windDirection", + "precipChancePercent", + "provenance", + "referencePoint", + "condition", + "snowInches" + ], + "type": "object" + }, + "maxItems": 5, + "prefixItems": [ + { + "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" + }, + "condition": { + "type": "string" + }, + "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" + ] + }, + "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": "summit" + }, + "snowInches": { + "type": [ + "number", + "null" + ] + }, + "summitTempHighF": { + "type": "number" + }, + "summitTempLowF": { + "type": "number" + }, + "sunrise": { + "type": "string" + }, + "sunriseAt": { + "type": [ + "string", + "null" + ] + }, + "sunset": { + "type": "string" + }, + "sunsetAt": { + "type": [ + "string", + "null" + ] + }, + "windDirection": { + "type": [ + "string", + "null" + ] + }, + "windMaxMph": { + "type": "number" + } + }, + "required": [ + "date", + "overallRating", + "summitTempLowF", + "summitTempHighF", + "windMaxMph", + "windDirection", + "precipChancePercent", + "provenance", + "referencePoint", + "condition", + "snowInches", + "sunrise", + "sunset", + "sunriseAt", + "sunsetAt", + "moonPhase", + "moonIllumination" + ], + "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." + }, + "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" + }, + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "difficulty": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "roundTripDistanceMi": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "difficulty", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "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", + "routes", + "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" + } +]
- Changed
get_route_conditions1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
- Changed
get_trip_brief1 field changed- changed
Output schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "activity": { - "enum": [ - "mountaineering", - "skimo_splitboard", - "rock_climbing" - ] - }, - "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" - }, - "alerts": { - "additionalProperties": false, - "properties": { - "nps": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "fetchedAt": { - "type": "string" - }, - "hasActiveClosure": { - "type": "boolean" - }, - "nonRoadAlerts": { - "items": { - "additionalProperties": false, - "properties": { - "category": { - "enum": [ - "Danger", - "Caution", - "Information", - "Park Closure", - "Road Closure" - ] - }, - "description": { - "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" - } - ] - }, - "title": { - "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": { - "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" - } - ] - } - }, - "required": [ - "category", - "title", - "description" - ], - "type": "object" - }, - "type": "array" - }, - "notice": { - "const": "No protection is claimed in original U.S. Government works" - }, - "parkCode": { - "type": [ - "string", - "null" - ] - }, - "roadAlerts": { - "items": { - "additionalProperties": false, - "properties": { - "category": { - "enum": [ - "Danger", - "Caution", - "Information", - "Park Closure", - "Road Closure" - ] - }, - "description": { - "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" - } - ] - }, - "title": { - "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": { - "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" - } - ] - } - }, - "required": [ - "category", - "title", - "description" - ], - "type": "object" - }, - "type": "array" - }, - "source": { - "const": "Source: National Park Service API" - } - }, - "required": [ - "parkCode", - "hasActiveClosure", - "nonRoadAlerts", - "roadAlerts", - "source", - "fetchedAt", - "notice" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "usfs": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "alerts": { - "items": { - "additionalProperties": false, - "properties": { - "byline": { - "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" - } - ] - }, - "description": { - "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" - } - ] - }, - "forestName": { - "type": "string" - }, - "source": { - "enum": [ - "NWS" - ] - }, - "title": { - "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": { - "enum": [ - "fire restriction", - "trail closure", - "road closure", - "area closure", - "other" - ] - }, - "url": { - "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" - } - ] - } - }, - "required": [ - "type", - "title", - "forestName", - "description" - ], - "type": "object" - }, - "type": "array" - }, - "sources": { - "items": { - "additionalProperties": false, - "properties": { - "fetchedAt": { - "type": "string" - }, - "forestName": { - "type": "string" - }, - "source": { - "enum": [ - "Source: USDA Forest Service", - "Source: National Weather Service" - ] - } - }, - "required": [ - "forestName", - "source", - "fetchedAt" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "alerts", - "sources" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "nps", - "usfs" - ], - "type": "object" - }, - "asOf": { - "type": "string" - }, - "conditionsUrl": { - "type": "string" - }, - "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" - ], - "type": "object" - }, - "type": "array" - }, - "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" - }, - "pageUrl": { - "type": "string" - }, - "provenance": { - "additionalProperties": false, - "properties": { - "airQuality": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "ageMinutes": { - "type": [ - "number", - "null" - ] - }, - "fetchedAt": { - "type": [ - "string", - "null" - ] - }, - "issuedAt": { - "type": [ - "string", - "null" - ] - }, - "provenanceLine": { - "type": "string" - }, - "source": { - "type": "string" - }, - "stale": { - "type": [ - "boolean", - "null" - ] - } - }, - "required": [ - "source", - "fetchedAt", - "issuedAt", - "ageMinutes", - "stale", - "provenanceLine" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "alerts": { - "additionalProperties": false, - "properties": { - "nps": { - "anyOf": [ - { - "additionalProperties": false, - "properties": { - "ageMinutes": { - "type": [ - "number", - "null" - ] - }, - "fetchedAt": { - "type": [ - "string", - "null" - ] - }, - "issuedAt": { - "type": [ - "string", - "null" - ] - }, - "provenanceLine": { - "type": "string" - }, - "source": { - "type": "string" - }, - "stale": { - "type": [ - "boolean", - "null" - ] - } - }, - "required": [ - "source", - "fetchedAt", - "issuedAt", - "ageMinutes", - "stale", - "provenanceLine" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "usfs": { - "items": { - "additionalProperties": false, - "properties": { - "ageMinutes": { - "type": [ - "number", - "null" - ] - }, - "fetchedAt": { - "type": [ - "string", - "null" - ] - }, - "issuedAt": { - "type": [ - "string", - "null" - ] - }, - "provenanceLine": { - "type": "string" - }, - "source": { - "type": "string" - }, - "stale": { - "type": [ - "boolean", - "null" - ] - } - }, - "required": [ - "source", - "fetchedAt", - "issuedAt", - "ageMinutes", - "stale", - "provenanceLine" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "nps", - "usfs" - ], - "type": "object" - }, - "daylight": { - "additionalProperties": false, - "properties": { - "ageMinutes": { - "type": [ - "number", - "null" - ] - }, - "fetchedAt": { - "type": [ - "string", - "null" - ] - }, - "issuedAt": { - "type": [ - "string", - "null" - ] - }, - "provenanceLine": { - "type": "string" - }, - "source": { - "type": "string" - }, - "stale": { - "type": [ - "boolean", - "null" - ] - } - }, - "required": [ - "source", - "fetchedAt", - "issuedAt", - "ageMinutes", - "stale", - "provenanceLine" - ], - "type": "object" - }, - "forecast": { - "additionalProperties": false, - "properties": { - "ageMinutes": { - "type": [ - "number", - "null" - ] - }, - "fetchedAt": { - "type": [ - "string", - "null" - ] - }, - "issuedAt": { - "type": [ - "string", - "null" - ] - }, - "provenanceLine": { - "type": "string" - }, - "source": { - "type": "string" - }, - "stale": { - "type": [ - "boolean", - "null" - ] - } - }, - "required": [ - "source", - "fetchedAt", - "issuedAt", - "ageMinutes", - "stale", - "provenanceLine" - ], - "type": "object" - } - }, - "required": [], - "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" - }, - "sectionStatus": { - "additionalProperties": false, - "properties": { - "airQuality": { - "enum": [ - "ok", - "stale", - "unavailable" - ] - }, - "alerts": { - "enum": [ - "ok", - "stale", - "unavailable" - ] - }, - "daylight": { - "enum": [ - "ok", - "stale", - "unavailable" - ] - }, - "forecast": { - "enum": [ - "ok", - "stale", - "unavailable" - ] - } - }, - "required": [], - "type": "object" - }, - "timeZone": { - "type": "string" - }, - "utcOffsetSeconds": { - "type": "number" - } - }, - "required": [ - "objective", - "route", - "activity", - "asOf", - "pageUrl", - "conditionsUrl", - "sectionStatus", - "provenance", - "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." - }, - "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" + }, + "activity": { + "enum": [ + "mountaineering", + "skimo_splitboard", + "rock_climbing" + ] + }, + "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" + }, + "alerts": { + "additionalProperties": false, + "properties": { + "nps": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "fetchedAt": { + "type": "string" + }, + "hasActiveClosure": { + "type": "boolean" + }, + "nonRoadAlerts": { + "items": { + "additionalProperties": false, + "properties": { + "category": { + "enum": [ + "Danger", + "Caution", + "Information", + "Park Closure", + "Road Closure" + ] + }, + "description": { + "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" + } + ] + }, + "title": { + "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": { + "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" + } + ] + } + }, + "required": [ + "category", + "title", + "description" + ], + "type": "object" + }, + "type": "array" + }, + "notice": { + "const": "No protection is claimed in original U.S. Government works" + }, + "parkCode": { + "type": [ + "string", + "null" + ] + }, + "roadAlerts": { + "items": { + "additionalProperties": false, + "properties": { + "category": { + "enum": [ + "Danger", + "Caution", + "Information", + "Park Closure", + "Road Closure" + ] + }, + "description": { + "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" + } + ] + }, + "title": { + "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": { + "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" + } + ] + } + }, + "required": [ + "category", + "title", + "description" + ], + "type": "object" + }, + "type": "array" + }, + "source": { + "const": "Source: National Park Service API" + } + }, + "required": [ + "parkCode", + "hasActiveClosure", + "nonRoadAlerts", + "roadAlerts", + "source", + "fetchedAt", + "notice" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "usfs": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "alerts": { + "items": { + "additionalProperties": false, + "properties": { + "byline": { + "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" + } + ] + }, + "description": { + "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" + } + ] + }, + "forestName": { + "type": "string" + }, + "source": { + "enum": [ + "NWS" + ] + }, + "title": { + "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": { + "enum": [ + "fire restriction", + "trail closure", + "road closure", + "area closure", + "other" + ] + }, + "url": { + "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" + } + ] + } + }, + "required": [ + "type", + "title", + "forestName", + "description" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "items": { + "additionalProperties": false, + "properties": { + "fetchedAt": { + "type": "string" + }, + "forestName": { + "type": "string" + }, + "source": { + "enum": [ + "Source: USDA Forest Service", + "Source: National Weather Service" + ] + } + }, + "required": [ + "forestName", + "source", + "fetchedAt" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "alerts", + "sources" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "usfsForestPages": { + "items": { + "additionalProperties": false, + "properties": { + "alertsUrl": { + "type": "string" + }, + "forestName": { + "type": "string" + } + }, + "required": [ + "forestName", + "alertsUrl" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "nps", + "usfs" + ], + "type": "object" + }, + "asOf": { + "type": "string" + }, + "conditionsUrl": { + "type": "string" + }, + "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" + ], + "type": "object" + }, + "type": "array" + }, + "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" + }, + "pageUrl": { + "type": "string" + }, + "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" + }, + "provenance": { + "additionalProperties": false, + "properties": { + "airQuality": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "ageMinutes": { + "type": [ + "number", + "null" + ] + }, + "fetchedAt": { + "type": [ + "string", + "null" + ] + }, + "issuedAt": { + "type": [ + "string", + "null" + ] + }, + "provenanceLine": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + } + }, + "required": [ + "source", + "fetchedAt", + "issuedAt", + "ageMinutes", + "stale", + "provenanceLine" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "alerts": { + "additionalProperties": false, + "properties": { + "nps": { + "anyOf": [ + { + "additionalProperties": false, + "properties": { + "ageMinutes": { + "type": [ + "number", + "null" + ] + }, + "fetchedAt": { + "type": [ + "string", + "null" + ] + }, + "issuedAt": { + "type": [ + "string", + "null" + ] + }, + "provenanceLine": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + } + }, + "required": [ + "source", + "fetchedAt", + "issuedAt", + "ageMinutes", + "stale", + "provenanceLine" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "usfs": { + "items": { + "additionalProperties": false, + "properties": { + "ageMinutes": { + "type": [ + "number", + "null" + ] + }, + "fetchedAt": { + "type": [ + "string", + "null" + ] + }, + "issuedAt": { + "type": [ + "string", + "null" + ] + }, + "provenanceLine": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + } + }, + "required": [ + "source", + "fetchedAt", + "issuedAt", + "ageMinutes", + "stale", + "provenanceLine" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "nps", + "usfs" + ], + "type": "object" + }, + "daylight": { + "additionalProperties": false, + "properties": { + "ageMinutes": { + "type": [ + "number", + "null" + ] + }, + "fetchedAt": { + "type": [ + "string", + "null" + ] + }, + "issuedAt": { + "type": [ + "string", + "null" + ] + }, + "provenanceLine": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + } + }, + "required": [ + "source", + "fetchedAt", + "issuedAt", + "ageMinutes", + "stale", + "provenanceLine" + ], + "type": "object" + }, + "forecast": { + "additionalProperties": false, + "properties": { + "ageMinutes": { + "type": [ + "number", + "null" + ] + }, + "fetchedAt": { + "type": [ + "string", + "null" + ] + }, + "issuedAt": { + "type": [ + "string", + "null" + ] + }, + "provenanceLine": { + "type": "string" + }, + "source": { + "type": "string" + }, + "stale": { + "type": [ + "boolean", + "null" + ] + } + }, + "required": [ + "source", + "fetchedAt", + "issuedAt", + "ageMinutes", + "stale", + "provenanceLine" + ], + "type": "object" + } + }, + "required": [], + "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" + }, + "sectionStatus": { + "additionalProperties": false, + "properties": { + "airQuality": { + "enum": [ + "ok", + "stale", + "unavailable" + ] + }, + "alerts": { + "enum": [ + "ok", + "stale", + "unavailable" + ] + }, + "daylight": { + "enum": [ + "ok", + "stale", + "unavailable" + ] + }, + "forecast": { + "enum": [ + "ok", + "stale", + "unavailable" + ] + } + }, + "required": [], + "type": "object" + }, + "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" + }, + "utcOffsetSeconds": { + "type": "number" + } + }, + "required": [ + "objective", + "route", + "activity", + "asOf", + "pageUrl", + "conditionsUrl", + "sectionStatus", + "provenance", + "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." + }, + "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" + } +]
- Added
list_areas - Changed
search_objectives4 fields changed- added
Input schema / properties / areaAdded value: +{ + "description": "Optional public area slug from list_areas. Limits results to the objectives the coverage directory lists under that area. At least one of query and area is needed.", + "maxLength": 64, + "minLength": 1, + "type": "string" +} - changed
Input schema / properties / query / descriptionPrevious value: -"Objective name or alias; matching ignores case and accents."New value: +"Objective name, alias, place name, or area name; matching ignores case and accents. At least one of query and area is needed." - removed
Input schema / requiredRemoved value: -[ - "query" -] - changed
Output schema / oneOfPrevious value: -[ - { - "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." - }, - "objectives": { - "items": { - "additionalProperties": false, - "properties": { - "conditions_url": { - "type": "string" - }, - "elevation_ft": { - "type": "number" - }, - "lat": { - "type": "number" - }, - "lon": { - "type": "number" - }, - "name": { - "type": "string" - }, - "region": { - "type": "string" - }, - "routes": { - "items": { - "additionalProperties": false, - "properties": { - "activities": { - "items": { - "enum": [ - "mountaineering", - "skimo_splitboard", - "rock_climbing" - ] - }, - "type": "array" - }, - "activity": { - "enum": [ - "mountaineering", - "skimo_splitboard", - "rock_climbing" - ] - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "name", - "activity", - "activities" - ], - "type": "object" - }, - "type": "array" - }, - "slug": { - "type": "string" - } - }, - "required": [ - "slug", - "name", - "elevation_ft", - "region", - "lat", - "lon", - "routes", - "conditions_url" - ], - "type": "object" - }, - "type": "array" - }, - "truncated": { - "type": "boolean" - } - }, - "required": [ - "objectives", - "truncated", - "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": { + "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." + }, + "objectives": { + "items": { + "additionalProperties": false, + "properties": { + "conditions_url": { + "type": "string" + }, + "elevation_ft": { + "type": "number" + }, + "lat": { + "type": "number" + }, + "lon": { + "type": "number" + }, + "matchedBy": { + "enum": [ + "name", + "area", + "alias" + ] + }, + "name": { + "type": "string" + }, + "region": { + "type": "string" + }, + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "activities": { + "items": { + "enum": [ + "mountaineering", + "skimo_splitboard", + "rock_climbing" + ] + }, + "type": "array" + }, + "activity": { + "enum": [ + "mountaineering", + "skimo_splitboard", + "rock_climbing" + ] + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "activity", + "activities" + ], + "type": "object" + }, + "type": "array" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "slug", + "name", + "elevation_ft", + "region", + "lat", + "lon", + "routes", + "conditions_url" + ], + "type": "object" + }, + "type": "array" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "objectives", + "truncated", + "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" + } +]
6 tool updates
- Changed
get_alerts1 field changed- changed
Output schema / oneOfPrevious value: -[ - { - "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." - }, - "nps": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "fetchedAt": { - "type": "string" - }, - "hasActiveClosure": { - "type": "boolean" - }, - "nonRoadAlerts": { - "items": { - "additionalProperties": false, - "properties": { - "category": { - "enum": [ - "Danger", - "Caution", - "Information", - "Park Closure", - "Road Closure" - ] - }, - "description": { - "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" - } - ] - }, - "title": { - "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": { - "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" - } - ] - } - }, - "required": [ - "category", - "title", - "description" - ], - "type": "object" - }, - "type": "array" - }, - "notice": { - "const": "No protection is claimed in original U.S. Government works" - }, - "parkCode": { - "type": [ - "string", - "null" - ] - }, - "roadAlerts": { - "items": { - "additionalProperties": false, - "properties": { - "category": { - "enum": [ - "Danger", - "Caution", - "Information", - "Park Closure", - "Road Closure" - ] - }, - "description": { - "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" - } - ] - }, - "title": { - "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": { - "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" - } - ] - } - }, - "required": [ - "category", - "title", - "description" - ], - "type": "object" - }, - "type": "array" - }, - "source": { - "const": "Source: National Park Service API" - } - }, - "required": [ - "parkCode", - "hasActiveClosure", - "nonRoadAlerts", - "roadAlerts", - "source", - "fetchedAt", - "notice" - ], - "type": "object" - }, - { - "type": "null" - } - ] - }, - "objective": { - "additionalProperties": false, - "properties": { - "name": { - "type": "string" - }, - "slug": { - "type": "string" - } - }, - "required": [ - "slug", - "name" - ], - "type": "object" - }, - "status": { - "const": "ok" - }, - "usfs": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "alerts": { - "items": { - "additionalProperties": false, - "properties": { - "byline": { - "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" - } - ] - }, - "description": { - "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" - } - ] - }, - "forestName": { - "type": "string" - }, - "source": { - "enum": [ - "NWS" - ] - }, - "title": { - "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": { - "enum": [ - "fire restriction", - "trail closure", - "road closure", - "area closure", - "other" - ] - }, - "url": { - "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" - } - ] - } - }, - "required": [ - "type", - "title", - "forestName", - "description" - ], - "type": "object" - }, - "type": "array" - }, - "sources": { - "items": { - "additionalProperties": false, - "properties": { - "fetchedAt": { - "type": "string" - }, - "forestName": { - "type": "string" - }, - "source": { - "enum": [ - "Source: USDA Forest Service", - "Source: National Weather Service" - ] - } - }, - "required": [ - "forestName", - "source", - "fetchedAt" - ], - "type": "object" - }, - "type": "array" - } - }, - "required": [ - "alerts", - "sources" - ], - "type": "object" - }, - { - "type": "null" - } - ] - } - }, - "required": [ - "status", - "objective", - "nps", - "usfs", - "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." - }, - "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": { + "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." + }, + "nps": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "fetchedAt": { + "type": "string" + }, + "hasActiveClosure": { + "type": "boolean" + }, + "nonRoadAlerts": { + "items": { + "additionalProperties": false, + "properties": { + "category": { + "enum": [ + "Danger", + "Caution", + "Information", + "Park Closure", + "Road Closure" + ] + }, + "description": { + "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" + } + ] + }, + "title": { + "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": { + "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" + } + ] + } + }, + "required": [ + "category", + "title", + "description" + ], + "type": "object" + }, + "type": "array" + }, + "notice": { + "const": "No protection is claimed in original U.S. Government works" + }, + "parkCode": { + "type": [ + "string", + "null" + ] + }, + "roadAlerts": { + "items": { + "additionalProperties": false, + "properties": { + "category": { + "enum": [ + "Danger", + "Caution", + "Information", + "Park Closure", + "Road Closure" + ] + }, + "description": { + "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" + } + ] + }, + "title": { + "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": { + "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" + } + ] + } + }, + "required": [ + "category", + "title", + "description" + ], + "type": "object" + }, + "type": "array" + }, + "source": { + "const": "Source: National Park Service API" + } + }, + "required": [ + "parkCode", + "hasActiveClosure", + "nonRoadAlerts", + "roadAlerts", + "source", + "fetchedAt", + "notice" + ], + "type": "object" + }, + { + "type": "null" + } + ] + }, + "objective": { + "additionalProperties": false, + "properties": { + "name": { + "type": "string" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "slug", + "name" + ], + "type": "object" + }, + "status": { + "const": "ok" + }, + "usfs": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "alerts": { + "items": { + "additionalProperties": false, + "properties": { + "byline": { + "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" + } + ] + }, + "description": { + "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" + } + ] + }, + "forestName": { + "type": "string" + }, + "source": { + "enum": [ + "NWS" + ] + }, + "title": { + "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": { + "enum": [ + "fire restriction", + "trail closure", + "road closure", + "area closure", + "other" + ] + }, + "url": { + "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" + } + ] + } + }, + "required": [ + "type", + "title", + "forestName", + "description" + ], + "type": "object" + }, + "type": "array" + }, + "sources": { + "items": { + "additionalProperties": false, + "properties": { + "fetchedAt": { + "type": "string" + }, + "forestName": { + "type": "string" + }, + "source": { + "enum": [ + "Source: USDA Forest Service", + "Source: National Weather Service" + ] + } + }, + "required": [ + "forestName", + "source", + "fetchedAt" + ], + "type": "object" + }, + "type": "array" + } + }, + "required": [ + "alerts", + "sources" + ], + "type": "object" + }, + { + "type": "null" + } + ] + } + }, + "required": [ + "status", + "objective", + "nps", + "usfs", + "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." + }, + "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" + } +]
- Changed
get_forecast_accuracy2 fields changed- changed
Input schema / properties / slug / descriptionPrevious value: -"Public objective slug returned by search_objectives. It resolves to the accuracy region containing the objective. Provide exactly one of slug and region_id."New value: +"Public objective slug returned by search_objectives. It resolves to the accuracy region of the NWAC zone the objective is bound to. Provide exactly one of slug and region_id." - changed
Output schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "computedAt": { - "type": [ - "string", - "null" - ] - }, - "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." - }, - "eligible": { - "type": "boolean" - }, - "precipOccurrence": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "accuracyPct": { - "type": "number" - }, - "n": { - "type": "number" - } - }, - "required": [ - "accuracyPct", - "n" - ], - "type": "object" - }, - { - "const": "insufficient" - } - ] - }, - "provenance": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "replaySource": { - "const": "open-meteo-archive" - }, - "truth": { - "const": "ifs-9km" - } - }, - "required": [ - "truth", - "replaySource" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "replaySource": { - "const": "open-meteo-archive" - }, - "station": { - "additionalProperties": false, - "properties": { - "distanceMi": { - "type": "number" - }, - "elevDeltaFt": { - "type": "number" - }, - "network": { - "enum": [ - "snotel", - "bc-asws", - "synoptic" - ] - }, - "stationId": { - "type": "string" - }, - "stationName": { - "type": "string" - } - }, - "required": [ - "stationId", - "network", - "stationName", - "distanceMi", - "elevDeltaFt" - ], - "type": "object" - }, - "truth": { - "const": "station-obs" - } - }, - "required": [ - "truth", - "replaySource", - "station" - ], - "type": "object" - } - ] - }, - "reason": { - "enum": [ - "no-station-truth", - "insufficient-samples", - "elevation-gap-exceeded", - "stale-station-truth" - ] - }, - "regionId": { - "type": "string" - }, - "sampleCount": { - "type": "number" - }, - "temperature": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "biasF": { - "type": "number" - }, - "maeF": { - "type": "number" - }, - "n": { - "type": "number" - } - }, - "required": [ - "maeF", - "biasF", - "n" - ], - "type": "object" - }, - { - "const": "insufficient" - } - ] - }, - "windowDays": { - "type": "number" - } - }, - "required": [ - "regionId", - "windowDays", - "sampleCount", - "temperature", - "precipOccurrence", - "provenance", - "computedAt", - "eligible", - "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." - }, - "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." - }, - "knownRegionIds": { - "items": { - "type": "string" - }, - "type": "array" - }, - "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", - "knownRegionIds" - ], - "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": { + "computedAt": { + "type": [ + "string", + "null" + ] + }, + "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." + }, + "eligible": { + "const": true + }, + "precipOccurrence": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "accuracyPct": { + "type": "number" + }, + "n": { + "type": "number" + } + }, + "required": [ + "accuracyPct", + "n" + ], + "type": "object" + }, + { + "const": "insufficient" + } + ] + }, + "provenance": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "replaySource": { + "const": "open-meteo-archive" + }, + "truth": { + "const": "ifs-9km" + } + }, + "required": [ + "truth", + "replaySource" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "replaySource": { + "const": "open-meteo-archive" + }, + "station": { + "additionalProperties": false, + "properties": { + "distanceMi": { + "type": "number" + }, + "elevDeltaFt": { + "type": "number" + }, + "network": { + "enum": [ + "snotel", + "bc-asws", + "synoptic" + ] + }, + "stationId": { + "type": "string" + }, + "stationName": { + "type": "string" + } + }, + "required": [ + "stationId", + "network", + "stationName", + "distanceMi", + "elevDeltaFt" + ], + "type": "object" + }, + "truth": { + "const": "station-obs" + } + }, + "required": [ + "truth", + "replaySource", + "station" + ], + "type": "object" + } + ] + }, + "regionId": { + "type": "string" + }, + "temperature": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "biasF": { + "type": "number" + }, + "maeF": { + "type": "number" + }, + "n": { + "type": "number" + } + }, + "required": [ + "maeF", + "biasF", + "n" + ], + "type": "object" + }, + { + "const": "insufficient" + } + ] + }, + "windowDays": { + "type": "number" + } + }, + "required": [ + "regionId", + "windowDays", + "provenance", + "computedAt", + "disclaimerText", + "eligible", + "temperature", + "precipOccurrence" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "computedAt": { + "type": [ + "string", + "null" + ] + }, + "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." + }, + "eligible": { + "const": false + }, + "provenance": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "replaySource": { + "const": "open-meteo-archive" + }, + "truth": { + "const": "ifs-9km" + } + }, + "required": [ + "truth", + "replaySource" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "replaySource": { + "const": "open-meteo-archive" + }, + "station": { + "additionalProperties": false, + "properties": { + "distanceMi": { + "type": "number" + }, + "elevDeltaFt": { + "type": "number" + }, + "network": { + "enum": [ + "snotel", + "bc-asws", + "synoptic" + ] + }, + "stationId": { + "type": "string" + }, + "stationName": { + "type": "string" + } + }, + "required": [ + "stationId", + "network", + "stationName", + "distanceMi", + "elevDeltaFt" + ], + "type": "object" + }, + "truth": { + "const": "station-obs" + } + }, + "required": [ + "truth", + "replaySource", + "station" + ], + "type": "object" + } + ] + }, + "reason": { + "enum": [ + "no-station-truth", + "insufficient-samples", + "elevation-gap-exceeded", + "stale-station-truth" + ] + }, + "regionId": { + "type": "string" + }, + "windowDays": { + "type": "number" + } + }, + "required": [ + "regionId", + "windowDays", + "provenance", + "computedAt", + "disclaimerText", + "eligible", + "reason" + ], + "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." + }, + "knownRegionIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "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", + "knownRegionIds" + ], + "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" + } +]
- Changed
get_objective_conditions2 fields changed- changed
Output schema / $defs / source / properties / stations / anyOfPrevious 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" + } +] - changed
Output schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "accuracyRegionId": { - "type": [ - "string", - "null" - ] - }, - "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" - }, - "condition": { - "type": "string" - }, - "date": { - "type": "string" - }, - "overallRating": { - "enum": [ - "excellent", - "good", - "marginal", - "poor", - "dangerous" - ] - }, - "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": "summit" - }, - "snowInches": { - "type": [ - "number", - "null" - ] - }, - "summitTempHighF": { - "type": "number" - }, - "summitTempLowF": { - "type": "number" - }, - "windDirection": { - "type": [ - "string", - "null" - ] - }, - "windMaxMph": { - "type": "number" - } - }, - "required": [ - "date", - "overallRating", - "summitTempLowF", - "summitTempHighF", - "windMaxMph", - "windDirection", - "precipChancePercent", - "provenance", - "referencePoint", - "condition", - "snowInches" - ], - "type": "object" - }, - "maxItems": 5, - "prefixItems": [ - { - "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" - }, - "condition": { - "type": "string" - }, - "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" - ] - }, - "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": "summit" - }, - "snowInches": { - "type": [ - "number", - "null" - ] - }, - "summitTempHighF": { - "type": "number" - }, - "summitTempLowF": { - "type": "number" - }, - "sunrise": { - "type": "string" - }, - "sunriseAt": { - "type": [ - "string", - "null" - ] - }, - "sunset": { - "type": "string" - }, - "sunsetAt": { - "type": [ - "string", - "null" - ] - }, - "windDirection": { - "type": [ - "string", - "null" - ] - }, - "windMaxMph": { - "type": "number" - } - }, - "required": [ - "date", - "overallRating", - "summitTempLowF", - "summitTempHighF", - "windMaxMph", - "windDirection", - "precipChancePercent", - "provenance", - "referencePoint", - "condition", - "snowInches", - "sunrise", - "sunset", - "sunriseAt", - "sunsetAt", - "moonPhase", - "moonIllumination" - ], - "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." - }, - "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" - }, - "routes": { - "items": { - "additionalProperties": false, - "properties": { - "difficulty": { - "type": "string" - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - }, - "roundTripDistanceMi": { - "type": "number" - }, - "type": { - "type": "string" - } - }, - "required": [ - "id", - "name", - "difficulty", - "type" - ], - "type": "object" - }, - "type": "array" - }, - "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", - "routes", - "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" + ] + }, + "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" + }, + "condition": { + "type": "string" + }, + "date": { + "type": "string" + }, + "overallRating": { + "enum": [ + "excellent", + "good", + "marginal", + "poor", + "dangerous" + ] + }, + "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": "summit" + }, + "snowInches": { + "type": [ + "number", + "null" + ] + }, + "summitTempHighF": { + "type": "number" + }, + "summitTempLowF": { + "type": "number" + }, + "windDirection": { + "type": [ + "string", + "null" + ] + }, + "windMaxMph": { + "type": "number" + } + }, + "required": [ + "date", + "overallRating", + "summitTempLowF", + "summitTempHighF", + "windMaxMph", + "windDirection", + "precipChancePercent", + "provenance", + "referencePoint", + "condition", + "snowInches" + ], + "type": "object" + }, + "maxItems": 5, + "prefixItems": [ + { + "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" + }, + "condition": { + "type": "string" + }, + "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" + ] + }, + "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": "summit" + }, + "snowInches": { + "type": [ + "number", + "null" + ] + }, + "summitTempHighF": { + "type": "number" + }, + "summitTempLowF": { + "type": "number" + }, + "sunrise": { + "type": "string" + }, + "sunriseAt": { + "type": [ + "string", + "null" + ] + }, + "sunset": { + "type": "string" + }, + "sunsetAt": { + "type": [ + "string", + "null" + ] + }, + "windDirection": { + "type": [ + "string", + "null" + ] + }, + "windMaxMph": { + "type": "number" + } + }, + "required": [ + "date", + "overallRating", + "summitTempLowF", + "summitTempHighF", + "windMaxMph", + "windDirection", + "precipChancePercent", + "provenance", + "referencePoint", + "condition", + "snowInches", + "sunrise", + "sunset", + "sunriseAt", + "sunsetAt", + "moonPhase", + "moonIllumination" + ], + "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." + }, + "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" + }, + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "difficulty": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "roundTripDistanceMi": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "difficulty", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "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", + "routes", + "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" + } +]
- Changed
get_route_conditions2 fields changed- changed
Output schema / $defs / source / properties / stations / anyOfPrevious 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" + } +] - changed
Output schema / oneOfPrevious 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" + } +]
- Added
get_trip_brief - Changed
search_objectives1 field changed- changed
Output schema / oneOfPrevious value: -[ - { - "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." - }, - "objectives": { - "items": { - "additionalProperties": false, - "properties": { - "conditions_url": { - "type": "string" - }, - "elevation_ft": { - "type": "number" - }, - "lat": { - "type": "number" - }, - "lon": { - "type": "number" - }, - "name": { - "type": "string" - }, - "region": { - "type": "string" - }, - "routes": { - "items": { - "additionalProperties": false, - "properties": { - "activities": { - "items": { - "enum": [ - "mountaineering", - "skimo_splitboard", - "rock_climbing" - ] - }, - "type": "array" - }, - "activity": { - "enum": [ - "mountaineering", - "skimo_splitboard", - "rock_climbing" - ] - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "name", - "activity", - "activities" - ], - "type": "object" - }, - "type": "array" - }, - "slug": { - "type": "string" - } - }, - "required": [ - "slug", - "name", - "elevation_ft", - "region", - "lat", - "lon", - "routes", - "conditions_url" - ], - "type": "object" - }, - "type": "array" - }, - "truncated": { - "type": "boolean" - } - }, - "required": [ - "objectives", - "truncated", - "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": { + "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." + }, + "objectives": { + "items": { + "additionalProperties": false, + "properties": { + "conditions_url": { + "type": "string" + }, + "elevation_ft": { + "type": "number" + }, + "lat": { + "type": "number" + }, + "lon": { + "type": "number" + }, + "name": { + "type": "string" + }, + "region": { + "type": "string" + }, + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "activities": { + "items": { + "enum": [ + "mountaineering", + "skimo_splitboard", + "rock_climbing" + ] + }, + "type": "array" + }, + "activity": { + "enum": [ + "mountaineering", + "skimo_splitboard", + "rock_climbing" + ] + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "activity", + "activities" + ], + "type": "object" + }, + "type": "array" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "slug", + "name", + "elevation_ft", + "region", + "lat", + "lon", + "routes", + "conditions_url" + ], + "type": "object" + }, + "type": "array" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "objectives", + "truncated", + "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" + } +]
4 tool updates
- Changed
get_forecast_accuracy4 fields changed- changed
Input schema / properties / region_id / descriptionPrevious value: -"Public accuracy region identifier, for example pnw-olympics."New value: +"Public accuracy region identifier, for example pnw-olympics. Provide exactly one of region_id and slug." - added
Input schema / properties / slugAdded value: +{ + "description": "Public objective slug returned by search_objectives. It resolves to the accuracy region containing the objective. Provide exactly one of slug and region_id.", + "maxLength": 256, + "minLength": 1, + "type": "string" +} - removed
Input schema / requiredRemoved value: -[ - "region_id" -] - changed
Output schema / oneOfPrevious value: -[ - { - "additionalProperties": false, - "properties": { - "computedAt": { - "type": [ - "string", - "null" - ] - }, - "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." - }, - "eligible": { - "type": "boolean" - }, - "precipOccurrence": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "accuracyPct": { - "type": "number" - }, - "n": { - "type": "number" - } - }, - "required": [ - "accuracyPct", - "n" - ], - "type": "object" - }, - { - "const": "insufficient" - } - ] - }, - "provenance": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "replaySource": { - "const": "open-meteo-archive" - }, - "truth": { - "const": "ifs-9km" - } - }, - "required": [ - "truth", - "replaySource" - ], - "type": "object" - }, - { - "additionalProperties": false, - "properties": { - "replaySource": { - "const": "open-meteo-archive" - }, - "station": { - "additionalProperties": false, - "properties": { - "distanceMi": { - "type": "number" - }, - "elevDeltaFt": { - "type": "number" - }, - "network": { - "enum": [ - "snotel", - "bc-asws", - "synoptic" - ] - }, - "stationId": { - "type": "string" - }, - "stationName": { - "type": "string" - } - }, - "required": [ - "stationId", - "network", - "stationName", - "distanceMi", - "elevDeltaFt" - ], - "type": "object" - }, - "truth": { - "const": "station-obs" - } - }, - "required": [ - "truth", - "replaySource", - "station" - ], - "type": "object" - } - ] - }, - "reason": { - "enum": [ - "no-station-truth", - "insufficient-samples", - "elevation-gap-exceeded", - "stale-station-truth" - ] - }, - "regionId": { - "type": "string" - }, - "sampleCount": { - "type": "number" - }, - "temperature": { - "oneOf": [ - { - "additionalProperties": false, - "properties": { - "biasF": { - "type": "number" - }, - "maeF": { - "type": "number" - }, - "n": { - "type": "number" - } - }, - "required": [ - "maeF", - "biasF", - "n" - ], - "type": "object" - }, - { - "const": "insufficient" - } - ] - }, - "windowDays": { - "type": "number" - } - }, - "required": [ - "regionId", - "windowDays", - "sampleCount", - "temperature", - "precipOccurrence", - "provenance", - "computedAt", - "eligible", - "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." - }, - "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": { + "computedAt": { + "type": [ + "string", + "null" + ] + }, + "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." + }, + "eligible": { + "type": "boolean" + }, + "precipOccurrence": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "accuracyPct": { + "type": "number" + }, + "n": { + "type": "number" + } + }, + "required": [ + "accuracyPct", + "n" + ], + "type": "object" + }, + { + "const": "insufficient" + } + ] + }, + "provenance": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "replaySource": { + "const": "open-meteo-archive" + }, + "truth": { + "const": "ifs-9km" + } + }, + "required": [ + "truth", + "replaySource" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "replaySource": { + "const": "open-meteo-archive" + }, + "station": { + "additionalProperties": false, + "properties": { + "distanceMi": { + "type": "number" + }, + "elevDeltaFt": { + "type": "number" + }, + "network": { + "enum": [ + "snotel", + "bc-asws", + "synoptic" + ] + }, + "stationId": { + "type": "string" + }, + "stationName": { + "type": "string" + } + }, + "required": [ + "stationId", + "network", + "stationName", + "distanceMi", + "elevDeltaFt" + ], + "type": "object" + }, + "truth": { + "const": "station-obs" + } + }, + "required": [ + "truth", + "replaySource", + "station" + ], + "type": "object" + } + ] + }, + "reason": { + "enum": [ + "no-station-truth", + "insufficient-samples", + "elevation-gap-exceeded", + "stale-station-truth" + ] + }, + "regionId": { + "type": "string" + }, + "sampleCount": { + "type": "number" + }, + "temperature": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "biasF": { + "type": "number" + }, + "maeF": { + "type": "number" + }, + "n": { + "type": "number" + } + }, + "required": [ + "maeF", + "biasF", + "n" + ], + "type": "object" + }, + { + "const": "insufficient" + } + ] + }, + "windowDays": { + "type": "number" + } + }, + "required": [ + "regionId", + "windowDays", + "sampleCount", + "temperature", + "precipOccurrence", + "provenance", + "computedAt", + "eligible", + "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." + }, + "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." + }, + "knownRegionIds": { + "items": { + "type": "string" + }, + "type": "array" + }, + "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", + "knownRegionIds" + ], + "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" + } +]
- Changed
get_objective_conditions1 field changed- changed
Output schema / oneOfPrevious 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" - }, - "condition": { - "type": "string" - }, - "date": { - "type": "string" - }, - "overallRating": { - "enum": [ - "excellent", - "good", - "marginal", - "poor", - "dangerous" - ] - }, - "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": "summit" - }, - "snowInches": { - "type": [ - "number", - "null" - ] - }, - "summitTempHighF": { - "type": "number" - }, - "summitTempLowF": { - "type": "number" - }, - "windDirection": { - "type": [ - "string", - "null" - ] - }, - "windMaxMph": { - "type": "number" - } - }, - "required": [ - "date", - "overallRating", - "summitTempLowF", - "summitTempHighF", - "windMaxMph", - "windDirection", - "precipChancePercent", - "provenance", - "referencePoint", - "condition", - "snowInches" - ], - "type": "object" - }, - "maxItems": 5, - "prefixItems": [ - { - "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" - }, - "condition": { - "type": "string" - }, - "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" - ] - }, - "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": "summit" - }, - "snowInches": { - "type": [ - "number", - "null" - ] - }, - "summitTempHighF": { - "type": "number" - }, - "summitTempLowF": { - "type": "number" - }, - "sunrise": { - "type": "string" - }, - "sunriseAt": { - "type": [ - "string", - "null" - ] - }, - "sunset": { - "type": "string" - }, - "sunsetAt": { - "type": [ - "string", - "null" - ] - }, - "windDirection": { - "type": [ - "string", - "null" - ] - }, - "windMaxMph": { - "type": "number" - } - }, - "required": [ - "date", - "overallRating", - "summitTempLowF", - "summitTempHighF", - "windMaxMph", - "windDirection", - "precipChancePercent", - "provenance", - "referencePoint", - "condition", - "snowInches", - "sunrise", - "sunset", - "sunriseAt", - "sunsetAt", - "moonPhase", - "moonIllumination" - ], - "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." - }, - "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" - }, - "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", - "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" + ] + }, + "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" + }, + "condition": { + "type": "string" + }, + "date": { + "type": "string" + }, + "overallRating": { + "enum": [ + "excellent", + "good", + "marginal", + "poor", + "dangerous" + ] + }, + "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": "summit" + }, + "snowInches": { + "type": [ + "number", + "null" + ] + }, + "summitTempHighF": { + "type": "number" + }, + "summitTempLowF": { + "type": "number" + }, + "windDirection": { + "type": [ + "string", + "null" + ] + }, + "windMaxMph": { + "type": "number" + } + }, + "required": [ + "date", + "overallRating", + "summitTempLowF", + "summitTempHighF", + "windMaxMph", + "windDirection", + "precipChancePercent", + "provenance", + "referencePoint", + "condition", + "snowInches" + ], + "type": "object" + }, + "maxItems": 5, + "prefixItems": [ + { + "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" + }, + "condition": { + "type": "string" + }, + "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" + ] + }, + "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": "summit" + }, + "snowInches": { + "type": [ + "number", + "null" + ] + }, + "summitTempHighF": { + "type": "number" + }, + "summitTempLowF": { + "type": "number" + }, + "sunrise": { + "type": "string" + }, + "sunriseAt": { + "type": [ + "string", + "null" + ] + }, + "sunset": { + "type": "string" + }, + "sunsetAt": { + "type": [ + "string", + "null" + ] + }, + "windDirection": { + "type": [ + "string", + "null" + ] + }, + "windMaxMph": { + "type": "number" + } + }, + "required": [ + "date", + "overallRating", + "summitTempLowF", + "summitTempHighF", + "windMaxMph", + "windDirection", + "precipChancePercent", + "provenance", + "referencePoint", + "condition", + "snowInches", + "sunrise", + "sunset", + "sunriseAt", + "sunsetAt", + "moonPhase", + "moonIllumination" + ], + "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." + }, + "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" + }, + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "difficulty": { + "type": "string" + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + }, + "roundTripDistanceMi": { + "type": "number" + }, + "type": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "difficulty", + "type" + ], + "type": "object" + }, + "type": "array" + }, + "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", + "routes", + "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" + } +]
- Changed
get_route_conditions2 fields changed- added
Input schema / properties / activityAdded 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" +} - changed
Output schema / oneOfPrevious 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" + } +]
- Changed
search_objectives1 field changed- changed
Output schema / oneOfPrevious value: -[ - { - "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." - }, - "objectives": { - "items": { - "additionalProperties": false, - "properties": { - "conditions_url": { - "type": "string" - }, - "elevation_ft": { - "type": "number" - }, - "lat": { - "type": "number" - }, - "lon": { - "type": "number" - }, - "name": { - "type": "string" - }, - "region": { - "type": "string" - }, - "routes": { - "items": { - "additionalProperties": false, - "properties": { - "activity": { - "enum": [ - "mountaineering", - "skimo_splitboard", - "rock_climbing" - ] - }, - "id": { - "type": "string" - }, - "name": { - "type": "string" - } - }, - "required": [ - "id", - "name", - "activity" - ], - "type": "object" - }, - "type": "array" - }, - "slug": { - "type": "string" - } - }, - "required": [ - "slug", - "name", - "elevation_ft", - "region", - "lat", - "lon", - "routes", - "conditions_url" - ], - "type": "object" - }, - "type": "array" - }, - "truncated": { - "type": "boolean" - } - }, - "required": [ - "objectives", - "truncated", - "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": { + "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." + }, + "objectives": { + "items": { + "additionalProperties": false, + "properties": { + "conditions_url": { + "type": "string" + }, + "elevation_ft": { + "type": "number" + }, + "lat": { + "type": "number" + }, + "lon": { + "type": "number" + }, + "name": { + "type": "string" + }, + "region": { + "type": "string" + }, + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "activities": { + "items": { + "enum": [ + "mountaineering", + "skimo_splitboard", + "rock_climbing" + ] + }, + "type": "array" + }, + "activity": { + "enum": [ + "mountaineering", + "skimo_splitboard", + "rock_climbing" + ] + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "activity", + "activities" + ], + "type": "object" + }, + "type": "array" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "slug", + "name", + "elevation_ft", + "region", + "lat", + "lon", + "routes", + "conditions_url" + ], + "type": "object" + }, + "type": "array" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "objectives", + "truncated", + "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" + } +]
3 tool updates
- Added
get_alerts - Changed
get_objective_conditions1 field changed- changed
Output schema / oneOfPrevious 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" - ] - }, - "condition": { - "type": "string" - }, - "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" - ] - }, - "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": "summit" - }, - "snowInches": { - "type": [ - "number", - "null" - ] - }, - "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" - ] - }, - "windDirection": { - "type": [ - "string", - "null" - ] - }, - "windMaxMph": { - "type": "number" - } - }, - "required": [ - "date", - "overallRating", - "summitTempLowF", - "summitTempHighF", - "windMaxMph", - "windDirection", - "precipChancePercent", - "freezingLevelFt", - "snowpackCondition", - "sunrise", - "sunset", - "sunriseAt", - "sunsetAt", - "moonPhase", - "moonIllumination", - "provenance", - "referencePoint", - "condition", - "snowInches" - ], - "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" - }, - "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", - "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" + }, + "condition": { + "type": "string" + }, + "date": { + "type": "string" + }, + "overallRating": { + "enum": [ + "excellent", + "good", + "marginal", + "poor", + "dangerous" + ] + }, + "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": "summit" + }, + "snowInches": { + "type": [ + "number", + "null" + ] + }, + "summitTempHighF": { + "type": "number" + }, + "summitTempLowF": { + "type": "number" + }, + "windDirection": { + "type": [ + "string", + "null" + ] + }, + "windMaxMph": { + "type": "number" + } + }, + "required": [ + "date", + "overallRating", + "summitTempLowF", + "summitTempHighF", + "windMaxMph", + "windDirection", + "precipChancePercent", + "provenance", + "referencePoint", + "condition", + "snowInches" + ], + "type": "object" + }, + "maxItems": 5, + "prefixItems": [ + { + "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" + }, + "condition": { + "type": "string" + }, + "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" + ] + }, + "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": "summit" + }, + "snowInches": { + "type": [ + "number", + "null" + ] + }, + "summitTempHighF": { + "type": "number" + }, + "summitTempLowF": { + "type": "number" + }, + "sunrise": { + "type": "string" + }, + "sunriseAt": { + "type": [ + "string", + "null" + ] + }, + "sunset": { + "type": "string" + }, + "sunsetAt": { + "type": [ + "string", + "null" + ] + }, + "windDirection": { + "type": [ + "string", + "null" + ] + }, + "windMaxMph": { + "type": "number" + } + }, + "required": [ + "date", + "overallRating", + "summitTempLowF", + "summitTempHighF", + "windMaxMph", + "windDirection", + "precipChancePercent", + "provenance", + "referencePoint", + "condition", + "snowInches", + "sunrise", + "sunset", + "sunriseAt", + "sunsetAt", + "moonPhase", + "moonIllumination" + ], + "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." + }, + "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" + }, + "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", + "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" + } +]
- Changed
get_route_conditions1 field changed- changed
Output schema / oneOfPrevious 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" + } +]
4 tool updates
- Changed
get_forecast_accuracy1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "computedAt": { + "type": [ + "string", + "null" + ] + }, + "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." + }, + "eligible": { + "type": "boolean" + }, + "precipOccurrence": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "accuracyPct": { + "type": "number" + }, + "n": { + "type": "number" + } + }, + "required": [ + "accuracyPct", + "n" + ], + "type": "object" + }, + { + "const": "insufficient" + } + ] + }, + "provenance": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "replaySource": { + "const": "open-meteo-archive" + }, + "truth": { + "const": "ifs-9km" + } + }, + "required": [ + "truth", + "replaySource" + ], + "type": "object" + }, + { + "additionalProperties": false, + "properties": { + "replaySource": { + "const": "open-meteo-archive" + }, + "station": { + "additionalProperties": false, + "properties": { + "distanceMi": { + "type": "number" + }, + "elevDeltaFt": { + "type": "number" + }, + "network": { + "enum": [ + "snotel", + "bc-asws", + "synoptic" + ] + }, + "stationId": { + "type": "string" + }, + "stationName": { + "type": "string" + } + }, + "required": [ + "stationId", + "network", + "stationName", + "distanceMi", + "elevDeltaFt" + ], + "type": "object" + }, + "truth": { + "const": "station-obs" + } + }, + "required": [ + "truth", + "replaySource", + "station" + ], + "type": "object" + } + ] + }, + "reason": { + "enum": [ + "no-station-truth", + "insufficient-samples", + "elevation-gap-exceeded", + "stale-station-truth" + ] + }, + "regionId": { + "type": "string" + }, + "sampleCount": { + "type": "number" + }, + "temperature": { + "oneOf": [ + { + "additionalProperties": false, + "properties": { + "biasF": { + "type": "number" + }, + "maeF": { + "type": "number" + }, + "n": { + "type": "number" + } + }, + "required": [ + "maeF", + "biasF", + "n" + ], + "type": "object" + }, + { + "const": "insufficient" + } + ] + }, + "windowDays": { + "type": "number" + } + }, + "required": [ + "regionId", + "windowDays", + "sampleCount", + "temperature", + "precipOccurrence", + "provenance", + "computedAt", + "eligible", + "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." + }, + "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" +}
- Changed
get_objective_conditions1 field changed- changed
Output 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" + ] + }, + "condition": { + "type": "string" + }, + "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" + ] + }, + "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": "summit" + }, + "snowInches": { + "type": [ + "number", + "null" + ] + }, + "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" + ] + }, + "windDirection": { + "type": [ + "string", + "null" + ] + }, + "windMaxMph": { + "type": "number" + } + }, + "required": [ + "date", + "overallRating", + "summitTempLowF", + "summitTempHighF", + "windMaxMph", + "windDirection", + "precipChancePercent", + "freezingLevelFt", + "snowpackCondition", + "sunrise", + "sunset", + "sunriseAt", + "sunsetAt", + "moonPhase", + "moonIllumination", + "provenance", + "referencePoint", + "condition", + "snowInches" + ], + "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" + }, + "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", + "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" +}
- Changed
get_route_conditions1 field changed- changed
Output 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" +}
- Changed
search_objectives1 field changed- changed
Output schema / (root)Previous value: -nullNew value: +{ + "$schema": "https://json-schema.org/draft/2020-12/schema", + "oneOf": [ + { + "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." + }, + "objectives": { + "items": { + "additionalProperties": false, + "properties": { + "conditions_url": { + "type": "string" + }, + "elevation_ft": { + "type": "number" + }, + "lat": { + "type": "number" + }, + "lon": { + "type": "number" + }, + "name": { + "type": "string" + }, + "region": { + "type": "string" + }, + "routes": { + "items": { + "additionalProperties": false, + "properties": { + "activity": { + "enum": [ + "mountaineering", + "skimo_splitboard", + "rock_climbing" + ] + }, + "id": { + "type": "string" + }, + "name": { + "type": "string" + } + }, + "required": [ + "id", + "name", + "activity" + ], + "type": "object" + }, + "type": "array" + }, + "slug": { + "type": "string" + } + }, + "required": [ + "slug", + "name", + "elevation_ft", + "region", + "lat", + "lon", + "routes", + "conditions_url" + ], + "type": "object" + }, + "type": "array" + }, + "truncated": { + "type": "boolean" + } + }, + "required": [ + "objectives", + "truncated", + "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" +}
1 tool update
- Changed
search_objectives3 fields changed- changed
Input schema / properties / region / descriptionPrevious value: -"Optional state or province filter."New value: +"Optional state or province code or name: WA, Washington, OR, Oregon, BC, British Columbia, or B.C. Matching ignores case." - removed
Input schema / properties / region / enumRemoved value: -[ - "WA", - "OR", - "BC" -] - added
Input schema / properties / region / examplesAdded value: +[ + "WA", + "OR", + "BC", + "Washington", + "Oregon", + "British Columbia", + "B.C." +]
1 tool update
- Changed
search_objectives1 field changed- changed
Input schema / properties / activity / enumPrevious value: -[ - "mountaineering", - "skimo_splitboard", - "rock_climbing", - "ice_climbing" -]New value: +[ + "mountaineering", + "skimo_splitboard", + "rock_climbing" +]
4 tool updates
- First observed
get_forecast_accuracy - First observed
get_objective_conditions - First observed
get_route_conditions - First observed
search_objectives
Related MCP Connectors
Live verified resort snow, forecasts, powder search, trip planning & grounded Q&A for 430+ resorts.
Live US campground availability, wildfire and river conditions, and trails on public land.
Campground search, live availability, weather, safety, and gear for 10,000+ US campgrounds.
Ski resort conditions, forecasts, avalanche danger, sun, routes and snow history for 5,000+ resorts.
Related MCP Servers
- AlicenseAqualityDmaintenanceLive ski & snow data for AI agents: 14-day multi-model forecasts, powder rankings, resort guides, webcams, ski-pass intelligence, and avalanche/road safety across 500+ resorts. Hosted streamable-HTTP — no install, no auth.401MIT
- AlicenseNot gradedqualityDmaintenanceProvides avalanche forecasts, danger ratings, and field observations for US avalanche centers, Canadian regions, and Quebec's Chic-Chocs via natural language queries.MIT
- AlicenseBqualityDmaintenanceProvides real-time access to BC highway conditions, road closures, weather alerts, and traffic incidents through the Open511-DriveBC API with smart caching.4MIT
- AlicenseNot gradedqualityDmaintenanceProvides access to real-time and historical snow conditions, weather data, and snowpack analysis from over 800 SNOTEL stations across the western United States through the USDA Air and Water Database API.2MIT
Glama MCP Gateway
Add one secure layer between your agents and this server.