ClimbCast
Server Details
Conditions, trip briefs, alerts, permits, roads, hourly, areas, accuracy for WA, OR, BC. No account.
- Status
- Healthy
- Uptime
- 99.9% over 38 days
- Last Tested
- Transport
- Streamable HTTP · MCP 2025-11-25
- URL
- ChatGPT
- –
- Claude
- climbcast.io
TDQS
Scored across 9 tools
Four tools (get_objective_conditions, get_route_conditions, get_trip_brief, get_hourly_conditions) all return forecast/conditions data with overlapping content such as weather, avalanche, permit, and road access. The descriptions try to differentiate scope (summit vs route high point vs full page vs hourly), but an agent could easily misselect when the user just asks for 'conditions.'
All nine tools follow a clear verb_noun snake_case pattern with consistent prefixes (get_, list_, search_). No mixing of conventions or vague names.
Nine tools is well-scoped for a climbing/weather forecast server. Each tool covers a distinct resource or granularity (search, areas, alerts, permits, accuracy, hourly, objective, route, trip brief) without obvious filler.
The surface covers discovery (search_objectives, list_areas), access/permits, alerts, accuracy, hourly weather, and multi-day objective/route/trip forecasts. Minor gaps exist, such as no dedicated tool for retrieving raw station observations or detailed avalanche danger ratings, but these are explicitly out of scope or noted as unavailable.
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 read-only, idempotent, non-destructive, open-world behavior, so the bar is lower; the description still adds real value by disclosing the two upstream sources, that results carry source attribution and retrieval timestamps, and that output is informational only rather than authoritative safety guidance.
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, followed by the coverage limitation and the disclaimer. No restatement of the title or the schema, and every sentence carries distinct information.
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 shape need not be described, and the description covers sources, attribution, timestamps, and scope limits. It leaves unstated what is returned when an objective is uncovered (e.g., empty result), a minor gap for a single-parameter read tool.
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?
With one parameter and 100% schema coverage, the schema already explains that slug is the public objective slug from search_objectives. The description adds only the qualifier 'covered objective,' implying alerts exist only for covered objectives, which is a modest semantic addition over the schema.
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 ('Returns the NPS park alerts and National Weather Service fire weather alerts') scoped to 'a covered objective,' and explicitly names what it does not cover (USDA Forest Service alerts/closures), which separates it from condition-oriented siblings like get_objective_conditions.
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 clearly implied by the scope statement plus the negative guidance that USFS alerts/closures are not carried, which tells an agent when to look elsewhere. It stops short of naming a specific alternative sibling for the gap it disclaims, and there is no explicit 'use this instead of X when Y.'
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 the read-only, idempotent, non-destructive, closed-world profile, so the bar is lower, and the description still adds real value: 'stored' signals precomputed rather than live computation, 'observed-station or model-proxy truth lineage' warns the truth source varies by region, and 'data sufficiency, and eligibility' warns results can be gated or absent. 'Informational only' sets decision-use expectations. What is not disclosed is the failure mode when neither identifier is supplied.
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 what is returned before how it is addressed and the usage disclaimer. No filler, and the closing 'Informational only' earns its place as a scope caveat.
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 shape needn't be described, and annotations plus full parameter coverage handle safety and inputs. The description supplies the two things structured fields can't: that values are stored/precomputed with variable truth lineage, and that sufficiency/eligibility can suppress results. Only the no-identifier case is left implicit.
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 parameters, the mutual-exclusivity rule, and the slug-resolution behavior. The description's sentence about region_id/slug resolution largely restates the schema rather than adding new semantics, making the baseline 3 correct.
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 ('Returns stored public regional forecast accuracy') and enumerates the substantive payload (truth lineage, data sufficiency, eligibility). This is clearly distinct from every sibling, which retrieve conditions, alerts, permits, or objective metadata rather than scoring historical forecast performance.
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 explains how to invoke it ('takes either a region_id or an objective slug') and adds an 'Informational only' disclaimer, but never says when this tool should be chosen over an alternative. Notably it does not point at search_objectives for obtaining the slug, even though that is the sibling an agent must call first in slug mode.
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 cover read-only, idempotent, non-destructive and open-world, so the bar is lower, yet the description still adds real behavioral context: 'danger ratings are not served' rules out an expected datum, 'where the forecast page shows them' flags conditional field availability, freshness status and source provenance signal data staleness, and 'Informational only' disclaims decision use. Return-shape detail is modest but an output schema exists, so this is solid value-add.
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?
Purpose and scope are front-loaded in the first clause before the section list, and no sentence is wasted. The second sentence is a long serial enumeration of conditional forecast-day fields, which is information-dense but borders on a data dictionary and slows scanning; it earns its place but could be tightened.
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 5-parameter read tool with full schema coverage, safety annotations and an output schema, the description supplies what structured fields cannot: which sections exist, what conditional sub-fields may appear, what is deliberately absent (danger ratings), and the informational disclaimer. The only material omission is guidance relative to the overlapping sibling 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 description coverage is 100%, so the schema already documents slug, route_id, date, include and activity thoroughly; the baseline of 3 applies. The description reinforces semantics by naming the four section values matching the include array and by clarifying that date collapses the window to a single day, but adds no format or constraint detail the schema lacks.
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 ('Returns the signed-out forecast page sections for a route') with clear scope (up to five days, or one day with the date input) and enumerates the four sections covered. It does not, however, distinguish itself from siblings that clearly overlap (get_alerts, get_access_and_permits, get_route_conditions), even though it folds their content into one payload — an agent cannot tell from this text alone when the aggregate brief wins over the narrower 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?
The phrase 'in one call' implies the aggregate-use case and the date input is described as a narrowing option, so usage is inferable. But there is no explicit when-to-use, no when-not, and no named alternative despite strong sibling overlap on alerts, permits and road access, leaving the routing decision 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.
2 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" - } - ] - }, - "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" - } -]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", + "NWS Red Flag Warning", + "NWS Fire Weather Watch", + "NWS fire weather alert" + ] + }, + "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_trip_brief1 field changed- changed
Output schema / oneOfPrevious 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" - } -]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", + "NWS Red Flag Warning", + "NWS Fire Weather Watch", + "NWS fire weather alert" + ] + }, + "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" + } +]
1 tool update
- 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", - "MCP_OUTPUT_INVALID", - "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": { + "description": "Distance from the region centroid to the station in miles, rounded to 0.1.", + "type": "number" + }, + "elevDeltaFt": { + "description": "Station elevation minus the region representative elevation in feet, positive when the station sits above.", + "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": { + "description": "Distance from the region centroid to the station in miles, rounded to 0.1.", + "type": "number" + }, + "elevDeltaFt": { + "description": "Station elevation minus the region representative elevation in feet, positive when the station sits above.", + "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" + } +]
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.1MIT
- AlicenseNot gradedqualityCmaintenanceEnables users to search ski resorts, retrieve up to 15-day snow forecasts and current conditions, compare or rank resorts for powder and trip planning, and access opening dates, lift status, resort news, and station-verified forecast accuracy across 667 ski resorts.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
Glama MCP Gateway
Add one secure layer between your agents and this server.