Skip to main content
Glama

Server Details

NOAA SWPC space weather: storm scales, Kp index, aurora forecasts, solar wind, activity, alerts.

If you are the author of this connector, you can claim ownership with GitHub, an HTTP challenge, or a DNS record. Claimed connector authors can inspect health checks, view analytics, and manage their listing.
Status
Healthy
Uptime
99.9% over 39 days
Last Tested
Transport
Streamable HTTP · MCP 2025-11-25
URL
Repository
cyanheads/noaa-spaceweather-mcp-server
GitHub Stars
2
Server Listing
@cyanheads/noaa-spaceweather-mcp-server

TDQS

A4.5/5.0

Scored across 6 tools

Disambiguation4/5

Each tool targets a distinct space-weather domain, and the descriptions carefully cross-reference when to drill down. The only mild overlap is noaa_spaceweather_get_conditions also summarizing Kp/aurora visibility, but its stated role as a snapshot resolves the ambiguity.

Naming Consistency5/5

All six tools follow the same noaa_spaceweather_get_<data_domain> convention, making the set highly predictable. No style mixing or vague verbs.

Tool Count5/5

Six tools is a well-scoped size for this domain, covering the major NOAA/SWPC data products without redundancy. Each tool has a clear niche and contributes a distinct capability.

Completeness5/5

The surface covers alerts/watches, current conditions, Kp, solar wind, solar activity/flares/protons, and aurora forecasts, including forecast components and plain-language guidance. This represents a complete read-only space-weather consumer surface with no dead ends.

Available Tools

6 tools
noaa_spaceweather_get_alertsGet Space Weather AlertsA
Read-onlyIdempotent
Inspect

Active SWPC alerts, watches, and warnings — parsed into structured records with product type, NOAA scale and level, issue time, serial number, validity window, and plain text. Covers geomagnetic storms, radio blackouts, and radiation storms. With active_only=false, also returns informational summaries, expired notices, and cancellations. max_age_hours controls how far back to look for candidates (default 48 h) — under active_only=true it does not cut off a product whose validity end is still in the future, and under active_only=false it is a literal age cutoff. The SWPC feed keeps all historical records and has no built-in expiry.

ParametersJSON Schema
NameRequiredDescriptionDefault
active_onlyNoWhen true (default), return only in-force Warnings, Watches, and Alerts. Excluded: Summaries and unrecognized products; products whose validity end has passed; cancellation notices; any product a later cancellation names by serial; and all but the newest record carrying the "THIS SUPERSEDES ANY/ALL PRIOR WATCHES IN EFFECT" line. Counts per reason ride in the exclusions enrichment field. Set false to return every product in the window, cancellations included (flagged by the cancelled field).
max_age_hoursNoHow far back to look for products, in hours (default 48). The SWPC feed retains all historical records, so this bounds the candidate set rather than declaring what is current. Under active_only=true a product whose validity end is still in the future is returned even when its issue time falls outside this window — a multi-day Watch would otherwise disappear while a day it forecasts a storm for is still running. Under active_only=false it is literal and cuts at exactly the requested age.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
alertsNoMatching SWPC products.
noticeNoSet when no products were returned.
fetchedAtNoISO 8601 fetch time.
activeOnlyNoEcho of active_only: true for the in-force set, false for every product in the window.
exclusionsNoRecords active_only=true left out, each counted under its first reason in field order; with totalCount they sum to the feed total. Present only under active_only=true, when something was excluded.
totalCountNoRecords in alerts.
appliedCutoffNoISO 8601 UTC start of the applied window. Present only under active_only=true.
appliedWindowHoursNomax_age_hours as applied. Present only under active_only=true.

TDQS

A4.8/5.0
Behavior5/5

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

Beyond the readOnly and idempotent annotations, the description explains important behaviors: the effect of active_only on exclusions, the literal cutoff under active_only=false, and the SWPC feed's retention of all historical records. This gives the agent a precise model of what results to expect.

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

Conciseness5/5

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

The description is compact for the complexity it conveys. The primary purpose is front-loaded, followed by the two key behavioral caveats, with no filler or redundant statements.

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

Completeness5/5

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

Given the tool's moderate complexity, the annotations, output schema, and full parameter coverage, the description covers everything an agent needs to invoke it correctly and interpret the result semantics. The special handling of superseded products and expiry is disclosed, leaving no critical gaps.

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

Parameters5/5

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

The input schema already documents both parameters thoroughly, and the description goes further by explaining the cross-parameter interaction between active_only and max_age_hours. This added nuance about validity windows versus literal age cutoff is essential for correct usage and is not fully captured by the schema alone.

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

Purpose5/5

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

The description clearly identifies the tool as returning active SWPC alerts, watches, and warnings parsed into structured records, and names the specific event types covered. This distinguishes it from the sibling tools that focus on aurora, Kp index, solar activity, and solar wind.

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

Usage Guidelines4/5

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

The description makes the tool's context clear: use it for alert, watch, and warning products rather than forecasts or raw indices. It does not explicitly name alternatives or state when not to use this tool, but the scope is well enough defined that an agent can infer the right selection.

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

noaa_spaceweather_get_aurora_forecastGet Aurora ForecastA
Read-onlyIdempotent
Inspect

OVATION model aurora forecast for the next ~30–60 min: global grid of aurora probability percentages by latitude/longitude (1° resolution). With optional coordinates, returns the local aurora probability at the nearest grid point, the geomagnetic latitude those coordinates convert to, the minimum Kp and G level needed for aurora at that geomagnetic latitude, the sun’s elevation there at the forecast time (aurora is not visible in daylight), the strongest aurora within 1000 km poleward (visible low on the horizon when bright), and a plain-language go/no-go verdict. Without coordinates, returns only global metadata. Data updates every ~5 minutes. Supply coordinates as geographic (WGS84); aurora bands are geomagnetic, and the tool converts between them.

ParametersJSON Schema
NameRequiredDescriptionDefault
latitudeNoGeographic latitude in degrees (−90 to 90). Provide with longitude for a local aurora probability lookup.
longitudeNoGeographic longitude in degrees (−180 to 180). Provide with latitude for a local aurora probability lookup.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
localLookupNoCoordinate lookup; null when no coordinates were given.
forecastTimeNoISO 8601 time the forecast is valid for.
gridPointCountNoOVATION grid point count.
observationTimeNoISO 8601 OVATION observation time.
topAuroraRegionNoLocation of the highest grid point, e.g. "67°N, 20°W"; "Unknown" when every cell is 0%.
topAuroraPercentNoHighest aurora probability on the globe (0–100%).

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnly, openWorld, and idempotent hints, so the bar is lower. The description adds genuinely useful behavioral context beyond that: data updates every ~5 minutes, the daylight visibility caveat via sun elevation, the 1000 km poleward search behavior, and the geographic-to-geomagnetic conversion. This is rich, non-redundant disclosure.

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

Conciseness5/5

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

The description is dense but every sentence earns its place: it front-loads the model, time window, and grid, then separates coordinate vs no-coordinate behavior, then adds update frequency and coordinate-system caveats. There is no filler or redundancy.

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

Completeness5/5

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

For a read-only, zero-required-parameter tool with an output schema, the description covers everything needed for correct invocation: both call modes, coordinate format, update cadence, and key output semantics. The optionality of parameters is clear, and no critical usage detail is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3. The description goes further by explaining that latitude/longitude are optional, must be provided together, are interpreted as WGS84 geographic coordinates, and that the tool internally converts to geomagnetic coordinates — semantics not present in the schema.

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

Purpose5/5

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

The description states a specific resource (OVATION model aurora forecast), a concrete scope (next ~30–60 min, global 1° grid), and the exact output categories. It clearly distinguishes this tool from siblings like get_alerts and get_kp_index by focusing uniquely on aurora probability and visibility.

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

Usage Guidelines4/5

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

The description explicitly contrasts the two invocation modes — with coordinates for a local probability and without for global metadata — and instructs that coordinates must be geographic WGS84 because aurora bands are geomagnetic. It does not name alternative sibling tools, but the usage context is clear enough for an agent to select this tool correctly.

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

noaa_spaceweather_get_conditionsGet Space Weather ConditionsA
Read-onlyIdempotent
Inspect

Current space-weather snapshot: NOAA R/S/G storm scales (the previous UTC day, today, and the 3-day forecast), latest Kp index with its G-scale equivalent and aurora-visibility latitude, and a plain-language status summary. Optionally includes the SWPC forecast discussion explaining what is driving the forecast. The quickest way to answer "is anything happening right now?" — use before deciding whether to drill into solar wind (noaa_spaceweather_get_solar_wind), aurora (noaa_spaceweather_get_aurora_forecast), or alert details (noaa_spaceweather_get_alerts).

ParametersJSON Schema
NameRequiredDescriptionDefault
include_discussionNoAlso fetch SWPC's forecaster-written Forecast Discussion, which explains why the forecast looks the way it does (CME versus coronal-hole stream, expected arrival). Costs one extra upstream request.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
todayNoObserved R/S/G levels for today.
summaryNoPlain-language status, e.g. "G2 moderate geomagnetic storm in progress."
forecastNo3-day scale forecast, oldest first; starts with today (the date of observedAt).
currentKpNoLatest observed planetary K-index (0–9).
yesterdayNoR/S/G levels assessed for the previous UTC day (a date, no time). Null when the feed lacks that period or a level; null never means level 0.
discussionNoSWPC Forecast Discussion; null unless include_discussion is true.
observedAtNoISO 8601 UTC time of the scales data period, e.g. "2026-06-04T15:00:00Z".
currentGScaleNoG level (0–5) for currentKp.
auroraLatitudeNoAurora guidance for currentKp, e.g. "Aurora possible to ~55° geomagnetic latitude".

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, and the description adds useful behavioral detail: the time spans covered (previous UTC day, today, 3-day forecast) and that discussion is optional. It does not contradict the annotations, and the output-schema presence relieves it from describing return value shape.

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

Conciseness5/5

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

The description is efficiently structured: the first sentence front-loads the snapshot contents, the second notes the optional component, and the third provides sibling routing. Every sentence earns its place, and there is no filler or repetition of schema fields.

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

Completeness5/5

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

For a read-only, one-optional-parameter snapshot tool with an output schema, the description is fully sufficient. It explains what data is included, how far it looks back and forward, what the optional flag adds, and when to prefer sibling tools.

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

Parameters3/5

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

Schema description coverage is 100% and the single boolean parameter is already well-documented, including the extra upstream request cost. The description repeats only that the discussion is optional and explains what is driving the forecast, adding no material meaning beyond the schema.

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

Purpose5/5

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

The description states a specific verb-resource combination: it returns a 'current space-weather snapshot' with concrete contents (R/S/G scales, Kp index, aurora-visibility latitude, plain-language summary). It also explicitly frames itself as the triage entry point before drilling into sibling tools, which clearly distinguishes it from them.

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

Usage Guidelines5/5

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

The description gives an explicit routing rule: 'use before deciding whether to drill into solar wind, aurora, or alert details.' It names the alternative siblings and clarifies the tool's role as the quickest way to answer whether anything is happening right now.

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

noaa_spaceweather_get_kp_indexGet Kp IndexA
Read-onlyIdempotent
Inspect

Planetary K-index (0–9 geomagnetic activity scale) — recent observed 3-hour values with their NOAA G-scale equivalents and aurora-latitude guidance, plus the 3-day Kp forecast series. Kp is the primary driver of aurora visibility and geomagnetic storm severity. SWPC reports Kp in thirds and starts each G level at that level’s "minus" value: Kp 4.67 (5−) is G1, Kp 6.67 (7−) is G3 (aurora to ~50° geomagnetic), Kp 8.67 (9−) is still G4, and only Kp 9 is G5 extreme. Use noaa_spaceweather_get_conditions for a combined snapshot including storm scales; use this tool when you need the Kp time series or forecast detail.

ParametersJSON Schema
NameRequiredDescriptionDefault
window_daysNoNumber of past days of observed Kp to return (1–7, default 1). Larger windows show trend context.

Output Schema

ParametersJSON Schema
NameRequiredDescription
errorNoPresent when the call failed. Absent on success.
forecastNoKp forecast series: estimated and predicted entries, no observed history.
observedNoObserved Kp in the window, oldest first.
currentKpNoLatest observed Kp; 0 when the window has none.
currentGScaleNoG level (0–5) for currentKp.
observedCountNoEntries in observed.
auroraLatitudeNoAurora guidance for currentKp.

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already mark the tool as read-only/idempotent, and the description adds meaningful behavioral context beyond that: SWPC reports Kp in thirds, G-levels start at the 'minus' value, and specific examples show how Kp values map to G1/G3/G4/G5. This helps the agent interpret returned values correctly and does not contradict 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.

Conciseness5/5

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

The description is front-loaded with the core result, then provides essential interpretative context and ends with actionable routing guidance. Every sentence earns its place and no filler is present.

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

Completeness5/5

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

Given the tool has one optional parameter, rich annotations, an output schema, and explicit sibling differentiation, the description covers everything needed for correct selection and invocation. It explains data granularity, forecast horizon, scale semantics, and when to choose an alternative.

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

Parameters3/5

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

The single parameter, window_days, is already fully documented in the schema, including default, range, and purpose. Schema description coverage is 100%, so the tool description adds little parameter-level meaning beyond what the schema provides. A baseline score of 3 is appropriate.

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

Purpose5/5

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

The description explicitly states the resource (Planetary K-index) and the delivered content: recent observed 3-hour values, G-scale equivalents, aurora-latitude guidance, and the 3-day forecast series. It also names the sibling tool noaa_spaceweather_get_conditions and clarifies how this tool differs, so an agent can distinguish it from alternatives.

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

Usage Guidelines5/5

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

The description gives an explicit routing rule: use noaa_spaceweather_get_conditions for a combined snapshot including storm scales, and use this tool when the Kp time series or forecast detail is needed. This is clear when-to-use and when-not-to-use guidance with a named alternative.

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

noaa_spaceweather_get_solar_activityGet Solar ActivityA
Read-onlyIdempotent
Inspect

Solar flare and radiation storm picture: discrete flare events from the past week with peak class and R-scale level, recent GOES X-ray flux with flare-class labels (A/B/C/M/X) and class magnitude, the daily F10.7 cm solar radio flux, 3-day flare-class probabilities (C/M/X), active solar regions with per-region flare probabilities, and GOES integral proton flux at ≥10 MeV with NOAA S-scale. For operators tracking HF radio blackout (R-scale, driven by X-ray) and radiation storm risk (S-scale, driven by protons). Each active region carries the C/M/X flare counts SWPC attributed to it that UTC day, which identify the region driving current activity — the flare events themselves carry no region.

ParametersJSON Schema
NameRequiredDescriptionDefault
flare_hoursNoHow far back to report discrete flare events, in hours before now, filtered on each flare’s onset time (1–168, default 24). The feed keeps a rolling 7 days, so 168 returns everything it carries. When the window comes back empty, the response names the newest flare the feed holds.
include_regionsNoInclude active solar region details (default true). Set false to skip region data and reduce response size.

Output Schema

ParametersJSON Schema
NameRequiredDescription
f107NoLatest Noon report, SWPC's daily F10.7 value; null when the feed has none.
errorNoPresent when the call failed. Absent on success.
noticeNoSet when no flare began in the flare_hours window: names the newest flare in the feed, or says the feed has none.
sScaleNoCurrent S level (0–5) from latestProton; 0 without a reading.
fetchedAtNoISO 8601 fetch time.
latestXrayNoNewest X-ray reading; null when the feed is empty.
recentXrayNoX-ray readings from the past hour, oldest first.
sScaleTextNoS level descriptor, e.g. "S2 moderate radiation storm".
latestProtonNoNewest ≥10 MeV proton reading; null when the feed is empty.
recentFlaresNoFlares with onset inside flare_hours, oldest first; empty when none began.
activeRegionsNoActive regions; empty when include_regions=false or none are active.
probabilitiesNo3-day flare probability forecast.

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare the tool read-only, idempotent, and open-world. The description adds meaningful behavioral context about data coverage, the attribution of flare counts to regions, and the relationship between flare events and active regions.

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

Conciseness5/5

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

The description is dense but well organized: it front-loads the tool's purpose, lists the measurable contents, states the operator use case, and closes with an important data-attribution caveat. No sentence is wasted.

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

Completeness5/5

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

Given the detailed input schema, existing output schema, and safety annotations, the description covers the tool's scope, target users, and key data relationships. Nothing essential for selecting or invoking this tool is missing.

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

Parameters3/5

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

Schema coverage is 100%, so parameters are already fully documented in the input schema. The description does not add extra parameter-level detail, so the baseline score applies.

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

Purpose4/5

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

The description clearly identifies what the tool returns: solar flares, GOES X-ray flux, F10.7 radio flux, flare probabilities, active regions, and proton flux. It is specific and detailed, though it does not explicitly differentiate itself from sibling tools.

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

Usage Guidelines4/5

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

The description names a concrete audience and use case: operators tracking HF radio blackout and radiation storm risk. It does not state when to prefer an alternative tool or when not to use this one, but the intended context is clear.

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

noaa_spaceweather_get_solar_windGet Solar WindA
Read-onlyIdempotent
Inspect

Real-time solar wind measurements from the active spacecraft at L1: proton speed (km/s), density (n/cm³), temperature (K), and the critical Bz component (southward Bz = negative = storm driver). Returns the recent plasma and magnetic field time series within the requested window, oldest first, each record tagged with the reporting spacecraft and bounded to 200 records per series unless resolution is set to "full" — or omitted entirely under "summary", which keeps the latest readings, Bz status, and window extremes (peak speed, density, and Bt; most southward Bz; minutes of southward Bz) for "what is Bz doing now" questions. Bz < −10 nT for sustained periods is a primary geomagnetic storm trigger — use alongside noaa_spaceweather_get_kp_index to see whether elevated solar wind has translated into a geomagnetic storm.

ParametersJSON Schema
NameRequiredDescriptionDefault
resolutionNoDetail level of the returned plasma and mag series. "summary" returns both series empty and keeps every headline field — about 2 KB whatever the window. "reduced" (default) bounds each series to at most 200 records: the window is bucketed by record count and one real measurement is emitted per bucket — the bucket's fastest speed for plasma, its most southward Bz for mag — with the newest record in the window always last. A series already inside the bound is returned untouched, so a default 3-hour call is unaffected. "full" returns every record in the window (~1,400 per series over 24 hours, a ~540 KB response). The headline fields — latestPlasma, latestMag, bzStatus, bzMinInWindow, and the window maxima and southward-Bz minutes — are computed from the full window at every resolution.reduced
window_hoursNoHours of recent solar wind history to return (1–168, default 3). Records update ~every 1 min, but the feed only carries roughly the last 24 hours — a larger window returns the whole feed, not more history, and at the default resolution the returned series stay bounded to 200 records each rather than growing with the window. When a window comes back empty, feedStalenessHours and latestFeedPlasmaTime/latestFeedMagTime report how current the feed actually is.

Output Schema

ParametersJSON Schema
NameRequiredDescription
magNoMag records in the window, oldest first. "reduced": at most 200, each its bucket's most southward Bz; the last equals latestMag. Empty under "summary".
errorNoPresent when the call failed. Absent on success.
noticeNoWhat shaped the response: an empty window (with the newest feed record), series bounded to 200 records, or series omitted under "summary".
plasmaNoPlasma records in the window, oldest first. "reduced": at most 200, each its bucket's fastest speed, newest last. Empty under "summary".
bzStatusNoBz status from latestMag, e.g. "Southward Bz -14 nT — storm-driving conditions."; "Bz data unavailable." without a reading.
magCountNoRecords in mag (magWindowRecords has the pre-reduction total); under "summary", the records the window held.
latestMagNoNewest mag record in the window; null when the window has none.
plasmaCountNoRecords in plasma (plasmaWindowRecords has the pre-reduction total); under "summary", the records the window held.
bzMinTimeTagNoISO 8601 time of bzMinInWindow; null when it is null.
latestPlasmaNoNewest plasma record in the window; null when the window has none.
btMaxInWindowNoPeak Bt in nT across the whole window; null when it has no Bt.
bzMinInWindowNoMost southward Bz in nT across the whole window; null when it has no Bz.
speedMaxTimeTagNoISO 8601 time of speedMaxInWindow; null when it is null.
magBucketRecordsNoMag records per emitted record, 1 if untouched. Present only after a reduction.
magWindowRecordsNoMag records in the window before reduction. Present after a reduction or under "summary".
speedMaxInWindowNoPeak speed in km/s across the whole window; null when it has no speed.
latestFeedMagTimeNoISO 8601 time of the newest mag record in the feed, window aside; null when none.
densityMaxInWindowNoPeak proton density in particles/cm³ across the whole window; null when none.
feedStalenessHoursNoHours from the newest record in either feed to now; null when both are empty.
plasmaBucketRecordsNoPlasma records per emitted record, 1 if untouched. Present only after a reduction.
plasmaWindowRecordsNoPlasma records in the window before reduction. Present after a reduction or under "summary".
latestFeedPlasmaTimeNoISO 8601 time of the newest plasma record in the feed, window aside; null when none.
bzSouthMinutesInWindowNoMinutes of Bz < 0: 1-minute mag records across the whole window. Feed gaps are not counted. 0 when none.

TDQS

A4.6/5.0
Behavior5/5

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

Beyond the read-only/idempotent annotations, it discloses ordering (oldest first), per-record spacecraft tagging, the 200-record cap, the three resolution modes, feed staleness behavior, and the storm-trigger threshold. This is far more behavioral context than annotations alone.

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

Conciseness4/5

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

Front-loaded with the core definition and packed with necessary operational detail. It is long and occasionally dense, but the complexity of the resolution modes justifies the length.

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

Completeness5/5

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

Combined with rich parameter schemas, an output schema, and safety annotations, the description leaves no invocation-critical gap: modes, window limits, staleness reporting, and related tools are all covered.

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

Parameters4/5

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

The input schema already documents both parameters thoroughly (100% coverage), so the baseline is 3. The description adds useful cross-parameter context—the 24-hour feed limit, record update cadence, and Bz risk semantics—but much of the mode behavior is also in the schema.

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

Purpose5/5

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

The description names a specific resource (real-time solar wind measurements from L1) and a concrete return (plasma and magnetic field time series with Bz). It distinguishes the tool from the sibling list by its unique focus on solar wind parameters, and even references the complementary kp-index tool.

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

Usage Guidelines4/5

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

It says to use the summary mode for 'what is Bz doing now' questions and tells the agent to use it alongside noaa_spaceweather_get_kp_index to judge storm translation. It does not explicitly state when NOT to use this tool or compare it to other siblings, so it stops short of a full when/when-not 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.

  1. 6 tool updates
    • Changednoaa_spaceweather_get_alerts27 fields changed
      • changedOutput schema / properties / activeOnly / description
        Previous value: -"Echo of the active_only input: true when the records are the in-force set, false when they are every product in the window. Distinguishes an empty in-force result from an empty feed window."New value: +"Echo of active_only: true for the in-force set, false for every product in the window."
      • changedOutput schema / properties / alerts / description
        Previous value: -"Matching SWPC alert/watch/warning records."New value: +"Matching SWPC products."
      • changedOutput schema / properties / alerts / items / description
        Previous value: -"One SWPC alert, watch, warning, or summary."New value: +"One SWPC product."
      • changedOutput schema / properties / alerts / items / properties / cancelled / description
        Previous value: -"True when this record cancels a previously issued product (\"CANCEL WARNING:\"/\"CANCEL WATCH:\"/\"CANCEL ALERT:\" headline) rather than being in force. Always false when active_only=true, which excludes both the cancellation record and the product it names — a cancelled product carries cancelled: false itself, so this flag does not identify one. Set active_only=false to see cancellations and what they cancelled."New value: +"True when this record cancels an earlier product; the cancelled product itself stays false. Always false under active_only=true, which drops both."
      • changedOutput schema / properties / alerts / items / properties / issueDatetime / description
        Previous value: -"ISO 8601 issue datetime."New value: +"ISO 8601 issue time."
      • changedOutput schema / properties / alerts / items / properties / level / description
        Previous value: -"NOAA scale level 0–5, read from the scale stated in the message body. 0 means the product states no NOAA scale (e.g. a K4 warning, below the G-scale; or a radio-burst alert, outside the scales) — not a severity of zero. See noaaScale for the scale letter."New value: +"NOAA scale level 0–5 stated in the body; 0 means no scale is stated, not zero severity."
      • changedOutput schema / properties / alerts / items / properties / message / description
        Previous value: -"Full plain-text message body."New value: +"Full plain-text message."
      • changedOutput schema / properties / alerts / items / properties / messageCode / description
        Previous value: -"Full SWPC \"Space Weather Message Code\" parsed from the message body, e.g. \"WARK04\", \"ALTEF3\" — the code that drives product type, phenomenon, and level."New value: +"Full message code from the body, e.g. \"WARK04\"."
      • changedOutput schema / properties / alerts / items / properties / noaaScale / description
        Previous value: -"NOAA scale stated in the message body, e.g. \"G1\", \"R2\", \"S1\"; null when the product states none."New value: +"NOAA scale stated in the body, e.g. \"G1\"; null when none."
      • changedOutput schema / properties / alerts / items / properties / phenomenon / description
        Previous value: -"Short phenomenon name derived from the body's NOAA scale letter, e.g. \"Geomagnetic\", \"Radio Blackout\", \"Solar Radiation\"."New value: +"Phenomenon from the scale letter, e.g. \"Geomagnetic\"."
      • changedOutput schema / properties / alerts / items / properties / productId / description
        Previous value: -"Short SWPC feed product ID, e.g. \"K04W\", \"EF3A\". See messageCode for the full code."New value: +"Short SWPC product ID, e.g. \"K04W\"."
      • changedOutput schema / properties / alerts / items / properties / productType / description
        Previous value: -"Product classification derived from the code prefix."New value: +"Product type, from the code prefix."
      • changedOutput schema / properties / alerts / items / properties / serialNumber / description
        Previous value: -"The record's SWPC \"Serial Number:\" value, e.g. \"1125\"; null when the body carries no such line. A per-message-code counter, not a globally unique ID — it repeats across codes and within one code on a corrected reissue, so quote it together with messageCode. It is the key the \"Cancel Serial Number:\", \"Extension to Serial Number:\", and \"Continuation of Serial Number:\" lines in message point at, which is what makes those chains navigable."New value: +"SWPC serial number, e.g. \"1125\"; null when absent. Unique only within messageCode; the Cancel, Extension to, and Continuation of Serial Number lines in message point at it."
      • changedOutput schema / properties / alerts / items / properties / validFrom / description
        Previous value: -"Validity-window start as ISO 8601 UTC, parsed from the message body (\"Valid From\" or \"Begin Time\"); null when the product carries no start line."New value: +"ISO 8601 UTC validity start stated in the body; null when none."
      • changedOutput schema / properties / alerts / items / properties / validTo / description
        Previous value: -"Validity-window end as ISO 8601 UTC. Read from the message body's \"Valid To\", \"Now Valid Until\", or \"End Time\" label when the product states one. A Watch states none, so its end is derived from the \"Highest Storm Level Predicted by Day:\" list instead: the instant the last listed UTC day forecasting a storm ends (a trailing \"None\" day is a forecast of quiet, not coverage), so a Watch listing Sep 17 as its last storm day ends at 2026-09-18T00:00:00Z. Null when nothing in the body states or implies an end — a point-in-time Alert, or a Watch forecasting no storm on any listed day."New value: +"ISO 8601 UTC validity end; for a Watch, the end of its last listed storm day. Null when nothing states or implies an end."
      • changedOutput schema / properties / appliedCutoff / description
        Previous value: -"ISO 8601 UTC instant the applied window starts at: a product issued before this is outside it. Present only under active_only=true."New value: +"ISO 8601 UTC start of the applied window. Present only under active_only=true."
      • changedOutput schema / properties / appliedWindowHours / description
        Previous value: -"The max_age_hours window as applied, echoed so a caller can see what bounded the candidate set. Present only under active_only=true, where a future validity end can keep an older product in scope."New value: +"max_age_hours as applied. Present only under active_only=true."
      • changedOutput schema / properties / exclusions / description
        Previous value: -"How many products active_only=true left out, by reason. Reasons overlap, so each excluded record is counted under the first that applies, in this field order — these counts plus totalCount equal the number of records the feed carried. Emitted only when something was excluded, and never under active_only=false. Use it to tell \"space weather is quiet\" from \"everything was filtered\" without a second active_only=false call."New value: +"Records active_only=true left out, each counted under its first reason in field order; with totalCount they sum to the feed total. Present only under active_only=true, when something was excluded."
      • changedOutput schema / properties / exclusions / properties / agedOut / description
        Previous value: -"Issued outside the applied window with no validity end still ahead."New value: +"Issued before the window, no validity end ahead."
      • changedOutput schema / properties / exclusions / properties / cancellationRecord / description
        Previous value: -"Cancellation notices themselves."New value: +"Cancellation notices."
      • changedOutput schema / properties / exclusions / properties / cancelledBySerial / description
        Previous value: -"Named by a later cancellation's \"Cancel Serial Number:\" under the same code."New value: +"Named by a later cancellation."
      • changedOutput schema / properties / exclusions / properties / productType / description
        Previous value: -"Summaries and unrecognized products, which are never in force."New value: +"Summaries and unrecognized products."
      • changedOutput schema / properties / exclusions / properties / superseded / description
        Previous value: -"Carries the supersede line but is not the newest record that does."New value: +"Replaced by a newer superseding Watch."
      • changedOutput schema / properties / exclusions / properties / validityElapsed / description
        Previous value: -"Validity end already passed, with nothing newer cancelling or superseding it."New value: +"Validity end already passed."
      • changedOutput schema / properties / fetchedAt / description
        Previous value: -"ISO 8601 timestamp of when this data was fetched."New value: +"ISO 8601 fetch time."
      • changedOutput schema / properties / notice / description
        Previous value: -"Status notice when no products were returned."New value: +"Set when no products were returned."
      • changedOutput schema / properties / totalCount / description
        Previous value: -"Count of records in the alerts array."New value: +"Records in alerts."
    • Changednoaa_spaceweather_get_aurora_forecast7 fields changed
      • changedOutput schema / properties / forecastTime / description
        Previous value: -"Time the aurora forecast is valid for, ISO 8601."New value: +"ISO 8601 time the forecast is valid for."
      • changedOutput schema / properties / gridPointCount / description
        Previous value: -"Total number of grid points in the OVATION model."New value: +"OVATION grid point count."
      • changedOutput schema / properties / localLookup / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "auroraPercent": {
        -        "description": "Aurora probability at the nearest grid point (0–100%).",
        -        "type": "number"
        -      },
        -      "darkness": {
        -        "description": "Sky darkness at the requested coordinates at forecastTime, from sunElevationDeg: day at 0° and above, civil_twilight from −6° up to 0°, nautical_twilight from −12° up to −6°, dark below −12°.",
        -        "enum": [
        -          "day",
        -          "civil_twilight",
        -          "nautical_twilight",
        -          "dark"
        -        ],
        -        "type": "string"
        -      },
        -      "geomagneticLatitude": {
        -        "description": "Centered-dipole geomagnetic latitude the requested coordinates convert to (degrees, −90 to 90). Aurora bands are geomagnetic, so this — not the geographic latitude — is what minKpRequired and the verdict are derived from. It can differ from the geographic latitude by up to ±9.2° in either direction.",
        -        "type": "number"
        -      },
        -      "gridLatitude": {
        -        "description": "Nearest OVATION grid latitude.",
        -        "type": "number"
        -      },
        -      "gridLongitude": {
        -        "description": "Nearest OVATION grid longitude.",
        -        "type": "number"
        -      },
        -      "horizonDistanceKm": {
        -        "description": "Great-circle distance from the requested point to the cell carrying horizonMaxPercent, in km. Null when horizonMaxPercent is null.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "horizonMaxLatitude": {
        -        "description": "Grid latitude of the cell carrying horizonMaxPercent (degrees); the nearest such cell when several tie. Null when horizonMaxPercent is null.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "horizonMaxPercent": {
        -        "description": "Highest aurora probability (0–100%) among grid cells poleward of gridLatitude, within ±2° longitude and 1000 km of the requested point. Null when no grid cell lies in that window, which on the full grid happens only when gridLatitude is ±90.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "minGScale": {
        -        "description": "NOAA G level matching minKpRequired (1–5), 0 inside the quiet-time auroral oval where no storm is needed, and null below 40° geomagnetic where no storm level reaches.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "minKpRequired": {
        -        "description": "Minimum Kp for aurora at this geomagnetic latitude — the floor of the band, in SWPC thirds (4.67, 5.67, 6.67, 7.67, 9.00), or 0 inside the quiet-time auroral oval above 65°. Reported as 9 where no storm level reaches, which minGScale=null distinguishes from a genuine G5 threshold. The 60° G1 band is this server’s interpolation between the oval edge and NOAA’s G2 figure; the rest are the NOAA scales page figures.",
        -        "type": "number"
        -      },
        -      "requestedLatitude": {
        -        "description": "Geographic latitude supplied in the request (degrees, −90 to 90).",
        -        "type": "number"
        -      },
        -      "requestedLongitude": {
        -        "description": "Geographic longitude supplied in the request (degrees, −180 to 180).",
        -        "type": "number"
        -      },
        -      "sunElevationDeg": {
        -        "description": "Geometric solar elevation at the requested coordinates at forecastTime, in degrees (−90 to 90, rounded to 0.1°, no refraction correction). Negative when the sun is below the horizon.",
        -        "type": "number"
        -      },
        -      "verdict": {
        -        "description": "Plain-language visibility verdict for the requested coordinates at forecastTime, e.g. \"Good aurora chance (42%) — Kp≥6.67 (G3) needed at 51.2° geomagnetic.\" Opens \"Not visible — daylight\" when darkness is day.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "requestedLatitude",
        -      "requestedLongitude",
        -      "geomagneticLatitude",
        -      "gridLatitude",
        -      "gridLongitude",
        -      "auroraPercent",
        -      "minKpRequired",
        -      "minGScale",
        -      "sunElevationDeg",
        -      "darkness",
        -      "horizonMaxPercent",
        -      "horizonMaxLatitude",
        -      "horizonDistanceKm",
        -      "verdict"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "auroraPercent": {
        +        "description": "Aurora probability at the nearest grid point (0–100%).",
        +        "type": "number"
        +      },
        +      "darkness": {
        +        "description": "Sky state from sunElevationDeg: day ≥ 0°, civil_twilight ≥ −6°, nautical_twilight ≥ −12°, dark below.",
        +        "enum": [
        +          "day",
        +          "civil_twilight",
        +          "nautical_twilight",
        +          "dark"
        +        ],
        +        "type": "string"
        +      },
        +      "geomagneticLatitude": {
        +        "description": "Geomagnetic latitude of the request, in degrees (up to ±9.2° from geographic); minKpRequired and the verdict use it.",
        +        "type": "number"
        +      },
        +      "gridLatitude": {
        +        "description": "Nearest grid latitude, in degrees.",
        +        "type": "number"
        +      },
        +      "gridLongitude": {
        +        "description": "Nearest grid longitude, in degrees.",
        +        "type": "number"
        +      },
        +      "horizonDistanceKm": {
        +        "description": "Distance in km to the horizonMaxPercent cell; null when it is null.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "horizonMaxLatitude": {
        +        "description": "Grid latitude of horizonMaxPercent, in degrees (nearest on a tie); null when it is null.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "horizonMaxPercent": {
        +        "description": "Highest aurora probability (0–100%) poleward of gridLatitude within ±2° longitude and 1000 km; null when no cell qualifies (gridLatitude ±90).",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "minGScale": {
        +        "description": "G level for minKpRequired (1–5); 0 inside the quiet-time oval; null below 40° geomagnetic, where no storm reaches.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "minKpRequired": {
        +        "description": "Minimum Kp for aurora here: 4.67, 5.67, 6.67, 7.67, or 9; 0 inside the quiet-time oval (above 65°). Also 9 where no storm reaches (minGScale null).",
        +        "type": "number"
        +      },
        +      "requestedLatitude": {
        +        "description": "Requested geographic latitude, in degrees.",
        +        "type": "number"
        +      },
        +      "requestedLongitude": {
        +        "description": "Requested geographic longitude, in degrees.",
        +        "type": "number"
        +      },
        +      "sunElevationDeg": {
        +        "description": "Solar elevation here at forecastTime, in degrees to 0.1° (no refraction); negative below the horizon.",
        +        "type": "number"
        +      },
        +      "verdict": {
        +        "description": "Visibility verdict, e.g. \"Good aurora chance (42%) — Kp≥6.67 (G3) needed at 51.2° geomagnetic.\"; opens \"Not visible — daylight\" when darkness is day.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "requestedLatitude",
        +      "requestedLongitude",
        +      "geomagneticLatitude",
        +      "gridLatitude",
        +      "gridLongitude",
        +      "auroraPercent",
        +      "minKpRequired",
        +      "minGScale",
        +      "sunElevationDeg",
        +      "darkness",
        +      "horizonMaxPercent",
        +      "horizonMaxLatitude",
        +      "horizonDistanceKm",
        +      "verdict"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / localLookup / description
        Previous value: -"Local aurora lookup result. Null when no coordinates were provided."New value: +"Coordinate lookup; null when no coordinates were given."
      • changedOutput schema / properties / observationTime / description
        Previous value: -"Time of the OVATION model observation, ISO 8601."New value: +"ISO 8601 OVATION observation time."
      • changedOutput schema / properties / topAuroraPercent / description
        Previous value: -"Highest aurora probability anywhere on the globe (0–100)."New value: +"Highest aurora probability on the globe (0–100%)."
      • changedOutput schema / properties / topAuroraRegion / description
        Previous value: -"Approximate region of the highest aurora probability grid point."New value: +"Location of the highest grid point, e.g. \"67°N, 20°W\"; \"Unknown\" when every cell is 0%."
    • Changednoaa_spaceweather_get_conditions39 fields changed
      • changedOutput schema / properties / auroraLatitude / description
        Previous value: -"Aurora visibility guidance for current conditions, e.g. \"Aurora possible to ~55° geomagnetic latitude\"."New value: +"Aurora guidance for currentKp, e.g. \"Aurora possible to ~55° geomagnetic latitude\"."
      • changedOutput schema / properties / currentGScale / description
        Previous value: -"NOAA G-scale equivalent for current Kp (0–5)."New value: +"G level (0–5) for currentKp."
      • changedOutput schema / properties / discussion / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "SWPC Forecast Discussion — the forecaster's narrative behind the storm scales. Null when include_discussion is false.",
        -    "properties": {
        -      "issued": {
        -        "description": "ISO 8601 UTC time the discussion was issued, from the product's \":Issued:\" line, e.g. \"2026-06-04T12:30:00Z\". Null when the product carries no such line.",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "sections": {
        -        "description": "One entry per topic section, in product order.",
        -        "items": {
        -          "additionalProperties": false,
        -          "description": "One topic section of the discussion — its heading and the forecaster's text.",
        -          "properties": {
        -            "forecast": {
        -              "description": "Forecast text for the next 3 days, or null when the section carries no \".Forecast...\" block.",
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "summary": {
        -              "description": "Past-24 h summary text, or null when the section carries no \".24 hr Summary...\" text.",
        -              "type": [
        -                "string",
        -                "null"
        -              ]
        -            },
        -            "topic": {
        -              "description": "Section heading, e.g. \"Solar Activity\", \"Energetic Particle\", \"Solar Wind\", \"Geospace\".",
        -              "type": "string"
        -            }
        -          },
        -          "required": [
        -            "topic",
        -            "summary",
        -            "forecast"
        -          ],
        -          "type": "object"
        -        },
        -        "type": "array"
        -      }
        -    },
        -    "required": [
        -      "issued",
        -      "sections"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "SWPC forecaster's narrative behind the scales.",
        +    "properties": {
        +      "issued": {
        +        "description": "ISO 8601 UTC issue time from the \":Issued:\" line; null when absent.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "sections": {
        +        "description": "Topic sections, in product order.",
        +        "items": {
        +          "additionalProperties": false,
        +          "description": "One topic section.",
        +          "properties": {
        +            "forecast": {
        +              "description": "Next-3-day forecast text; null when the section has none.",
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "summary": {
        +              "description": "Past-24 h summary text; null when the section has none.",
        +              "type": [
        +                "string",
        +                "null"
        +              ]
        +            },
        +            "topic": {
        +              "description": "Section heading, e.g. \"Solar Activity\".",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "topic",
        +            "summary",
        +            "forecast"
        +          ],
        +          "type": "object"
        +        },
        +        "type": "array"
        +      }
        +    },
        +    "required": [
        +      "issued",
        +      "sections"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / discussion / description
        Previous value: -"SWPC Forecast Discussion when include_discussion is true, otherwise null."New value: +"SWPC Forecast Discussion; null unless include_discussion is true."
      • changedOutput schema / properties / forecast / description
        Previous value: -"SWPC's 3-day NOAA scale forecast, oldest first. The series starts with today — the same calendar day as observedAt — and covers the next two days."New value: +"3-day scale forecast, oldest first; starts with today (the date of observedAt)."
      • changedOutput schema / properties / forecast / items / description
        Previous value: -"One day of the NOAA scale forecast series."New value: +"One forecast day."
      • changedOutput schema / properties / forecast / items / properties / G / description
        Previous value: -"Geomagnetic storm scale forecast for this day."New value: +"Forecast G level."
      • changedOutput schema / properties / forecast / items / properties / G / properties / label / description
        Previous value: -"NOAA scale string, e.g. \"G2\", \"R1\", \"S0\"."New value: +"Label, e.g. \"G2\"."
      • changedOutput schema / properties / forecast / items / properties / G / properties / scale / description
        Previous value: -"Storm scale level 0–5."New value: +"Level 0–5."
      • changedOutput schema / properties / forecast / items / properties / G / properties / text / description
        Previous value: -"Human-readable scale descriptor, e.g. \"Moderate\". Empty when scale is 0."New value: +"Descriptor, e.g. \"Moderate\"; \"none\" at level 0."
      • changedOutput schema / properties / forecast / items / properties / R / description
        Previous value: -"Radio blackout outlook for this day."New value: +"R outlook: a level, probabilities, or neither."
      • changedOutput schema / properties / forecast / items / properties / R / properties / label / description
        Previous value: -"NOAA scale string, e.g. \"R1\", or null when no level was issued."New value: +"Label, e.g. \"R1\"; null when no level was issued."
      • changedOutput schema / properties / forecast / items / properties / R / properties / majorProbPercent / description
        Previous value: -"Probability (%) of an R3 or greater strong radio blackout on this day, or null when SWPC issued none."New value: +"Chance (%) of an R3+ blackout this day; null when none issued."
      • changedOutput schema / properties / forecast / items / properties / R / properties / minorProbPercent / description
        Previous value: -"Probability (%) of an R1–R2 minor-to-moderate radio blackout on this day, or null when SWPC issued none."New value: +"Chance (%) of an R1–R2 blackout this day; null when none issued."
      • changedOutput schema / properties / forecast / items / properties / R / properties / scale / description
        Previous value: -"R-scale level 0–5, or null — SWPC forecasts a radio-blackout probability for a future day rather than a level."New value: +"R level 0–5; null when SWPC issued a probability, not a level."
      • changedOutput schema / properties / forecast / items / properties / R / properties / text / description
        Previous value: -"Human-readable R-scale descriptor, or null when no level was issued."New value: +"R descriptor; null when no level was issued."
      • changedOutput schema / properties / forecast / items / properties / S / description
        Previous value: -"Solar radiation storm outlook for this day."New value: +"S outlook: a level, a probability, or neither."
      • changedOutput schema / properties / forecast / items / properties / S / properties / label / description
        Previous value: -"NOAA scale string, e.g. \"S1\", or null when no level was issued."New value: +"Label, e.g. \"S1\"; null when no level was issued."
      • changedOutput schema / properties / forecast / items / properties / S / properties / probPercent / description
        Previous value: -"Probability (%) of an S1 or greater solar radiation storm on this day, or null when SWPC issued none."New value: +"Chance (%) of an S1+ radiation storm this day; null when none issued."
      • changedOutput schema / properties / forecast / items / properties / S / properties / scale / description
        Previous value: -"S-scale level 0–5, or null — SWPC forecasts a radiation-storm probability for a future day rather than a level."New value: +"S level 0–5; null when SWPC issued a probability, not a level."
      • changedOutput schema / properties / forecast / items / properties / S / properties / text / description
        Previous value: -"Human-readable S-scale descriptor, or null when no level was issued."New value: +"S descriptor; null when no level was issued."
      • changedOutput schema / properties / forecast / items / properties / date / description
        Previous value: -"Forecast date string, e.g. \"2026-06-04\"."New value: +"Forecast date, e.g. \"2026-06-04\"."
      • changedOutput schema / properties / observedAt / description
        Previous value: -"ISO 8601 UTC date and time of the NOAA scales data period this snapshot reflects, e.g. \"2026-06-04T15:00:00Z\"."New value: +"ISO 8601 UTC time of the scales data period, e.g. \"2026-06-04T15:00:00Z\"."
      • changedOutput schema / properties / summary / description
        Previous value: -"Plain-language status summary suitable for display, e.g. \"Quiet conditions\" or \"G2 moderate geomagnetic storm in progress.\""New value: +"Plain-language status, e.g. \"G2 moderate geomagnetic storm in progress.\""
      • changedOutput schema / properties / today / description
        Previous value: -"Current observed NOAA storm scales for today."New value: +"Observed R/S/G levels for today."
      • changedOutput schema / properties / today / properties / G / description
        Previous value: -"Today's geomagnetic storm scale."New value: +"Today's G level."
      • changedOutput schema / properties / today / properties / G / properties / label / description
        Previous value: -"NOAA scale string, e.g. \"G2\", \"R1\", \"S0\"."New value: +"Label, e.g. \"G2\"."
      • changedOutput schema / properties / today / properties / G / properties / scale / description
        Previous value: -"Storm scale level 0–5."New value: +"Level 0–5."
      • changedOutput schema / properties / today / properties / G / properties / text / description
        Previous value: -"Human-readable scale descriptor, e.g. \"Moderate\". Empty when scale is 0."New value: +"Descriptor, e.g. \"Moderate\"; \"none\" at level 0."
      • changedOutput schema / properties / today / properties / R / description
        Previous value: -"Today's radio blackout scale."New value: +"Today's R level."
      • changedOutput schema / properties / today / properties / R / properties / label / description
        Previous value: -"NOAA scale string, e.g. \"G2\", \"R1\", \"S0\"."New value: +"Label, e.g. \"G2\"."
      • changedOutput schema / properties / today / properties / R / properties / scale / description
        Previous value: -"Storm scale level 0–5."New value: +"Level 0–5."
      • changedOutput schema / properties / today / properties / R / properties / text / description
        Previous value: -"Human-readable scale descriptor, e.g. \"Moderate\". Empty when scale is 0."New value: +"Descriptor, e.g. \"Moderate\"; \"none\" at level 0."
      • changedOutput schema / properties / today / properties / S / description
        Previous value: -"Today's solar radiation storm scale."New value: +"Today's S level."
      • changedOutput schema / properties / today / properties / S / properties / label / description
        Previous value: -"NOAA scale string, e.g. \"G2\", \"R1\", \"S0\"."New value: +"Label, e.g. \"G2\"."
      • changedOutput schema / properties / today / properties / S / properties / scale / description
        Previous value: -"Storm scale level 0–5."New value: +"Level 0–5."
      • changedOutput schema / properties / today / properties / S / properties / text / description
        Previous value: -"Human-readable scale descriptor, e.g. \"Moderate\". Empty when scale is 0."New value: +"Descriptor, e.g. \"Moderate\"; \"none\" at level 0."
      • changedOutput schema / properties / yesterday / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "NOAA R/S/G levels SWPC assessed for the previous UTC day. Carries a date and no time: the feed states when it was generated, not when that day was observed.",
        -    "properties": {
        -      "G": {
        -        "additionalProperties": false,
        -        "description": "Geomagnetic storm level SWPC assessed for the previous UTC day.",
        -        "properties": {
        -          "label": {
        -            "description": "NOAA scale string, e.g. \"G2\", \"R1\", \"S0\".",
        -            "type": "string"
        -          },
        -          "scale": {
        -            "description": "Storm scale level 0–5.",
        -            "type": "number"
        -          },
        -          "text": {
        -            "description": "Human-readable scale descriptor, e.g. \"Moderate\". Empty when scale is 0.",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "scale",
        -          "text",
        -          "label"
        -        ],
        -        "type": "object"
        -      },
        -      "R": {
        -        "additionalProperties": false,
        -        "description": "Radio blackout level SWPC assessed for the previous UTC day.",
        -        "properties": {
        -          "label": {
        -            "description": "NOAA scale string, e.g. \"G2\", \"R1\", \"S0\".",
        -            "type": "string"
        -          },
        -          "scale": {
        -            "description": "Storm scale level 0–5.",
        -            "type": "number"
        -          },
        -          "text": {
        -            "description": "Human-readable scale descriptor, e.g. \"Moderate\". Empty when scale is 0.",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "scale",
        -          "text",
        -          "label"
        -        ],
        -        "type": "object"
        -      },
        -      "S": {
        -        "additionalProperties": false,
        -        "description": "Solar radiation storm level SWPC assessed for the previous UTC day.",
        -        "properties": {
        -          "label": {
        -            "description": "NOAA scale string, e.g. \"G2\", \"R1\", \"S0\".",
        -            "type": "string"
        -          },
        -          "scale": {
        -            "description": "Storm scale level 0–5.",
        -            "type": "number"
        -          },
        -          "text": {
        -            "description": "Human-readable scale descriptor, e.g. \"Moderate\". Empty when scale is 0.",
        -            "type": "string"
        -          }
        -        },
        -        "required": [
        -          "scale",
        -          "text",
        -          "label"
        -        ],
        -        "type": "object"
        -      },
        -      "date": {
        -        "description": "The previous UTC calendar day these levels were assessed for, e.g. \"2026-06-03\".",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "date",
        -      "G",
        -      "R",
        -      "S"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "Levels SWPC assessed for the previous UTC day.",
        +    "properties": {
        +      "G": {
        +        "additionalProperties": false,
        +        "description": "Assessed G level.",
        +        "properties": {
        +          "label": {
        +            "description": "Label, e.g. \"G2\".",
        +            "type": "string"
        +          },
        +          "scale": {
        +            "description": "Level 0–5.",
        +            "type": "number"
        +          },
        +          "text": {
        +            "description": "Descriptor, e.g. \"Moderate\"; \"none\" at level 0.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "scale",
        +          "text",
        +          "label"
        +        ],
        +        "type": "object"
        +      },
        +      "R": {
        +        "additionalProperties": false,
        +        "description": "Assessed R level.",
        +        "properties": {
        +          "label": {
        +            "description": "Label, e.g. \"G2\".",
        +            "type": "string"
        +          },
        +          "scale": {
        +            "description": "Level 0–5.",
        +            "type": "number"
        +          },
        +          "text": {
        +            "description": "Descriptor, e.g. \"Moderate\"; \"none\" at level 0.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "scale",
        +          "text",
        +          "label"
        +        ],
        +        "type": "object"
        +      },
        +      "S": {
        +        "additionalProperties": false,
        +        "description": "Assessed S level.",
        +        "properties": {
        +          "label": {
        +            "description": "Label, e.g. \"G2\".",
        +            "type": "string"
        +          },
        +          "scale": {
        +            "description": "Level 0–5.",
        +            "type": "number"
        +          },
        +          "text": {
        +            "description": "Descriptor, e.g. \"Moderate\"; \"none\" at level 0.",
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "scale",
        +          "text",
        +          "label"
        +        ],
        +        "type": "object"
        +      },
        +      "date": {
        +        "description": "Previous UTC day, e.g. \"2026-06-03\".",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "date",
        +      "G",
        +      "R",
        +      "S"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / yesterday / description
        Previous value: -"NOAA R/S/G levels SWPC assessed for the previous UTC day — answers what happened yesterday without a history call. Null when the scales feed carries no previous-day period, or carries one missing a level; null never means level 0."New value: +"R/S/G levels assessed for the previous UTC day (a date, no time). Null when the feed lacks that period or a level; null never means level 0."
    • Changednoaa_spaceweather_get_kp_index18 fields changed
      • changedOutput schema / properties / auroraLatitude / description
        Previous value: -"Aurora visibility guidance for current conditions."New value: +"Aurora guidance for currentKp."
      • changedOutput schema / properties / currentGScale / description
        Previous value: -"NOAA G-scale for current Kp."New value: +"G level (0–5) for currentKp."
      • changedOutput schema / properties / currentKp / description
        Previous value: -"Latest observed Kp value."New value: +"Latest observed Kp; 0 when the window has none."
      • changedOutput schema / properties / forecast / description
        Previous value: -"Forward-looking Kp forecast series (estimated and predicted entries only; observed history excluded)."New value: +"Kp forecast series: estimated and predicted entries, no observed history."
      • changedOutput schema / properties / forecast / items / description
        Previous value: -"One forward-looking Kp forecast interval (estimated or predicted)."New value: +"One Kp forecast interval."
      • changedOutput schema / properties / forecast / items / properties / gLabel / description
        Previous value: -"NOAA G-scale label, e.g. \"G0\", \"G3\"."New value: +"G label, e.g. \"G3\"."
      • changedOutput schema / properties / forecast / items / properties / gScale / description
        Previous value: -"NOAA G-scale equivalent (0–5) derived from Kp, on the same minus-third band floors SWPC uses — it agrees with noaaScale when the feed states one."New value: +"G level (0–5) derived from kp; matches noaaScale when stated."
      • changedOutput schema / properties / forecast / items / properties / kp / description
        Previous value: -"Forecasted Kp value."New value: +"Forecast Kp value (0–9)."
      • changedOutput schema / properties / forecast / items / properties / noaaScale / description
        Previous value: -"NOAA scale string, e.g. \"G1\", null when not available."New value: +"NOAA scale the feed states, e.g. \"G1\"; null when none."
      • changedOutput schema / properties / forecast / items / properties / observed / description
        Previous value: -"\"estimated\" for near-real-time model points, \"predicted\" for forecast points."New value: +"\"estimated\" (near-real-time model) or \"predicted\"."
      • changedOutput schema / properties / forecast / items / properties / timeTag / description
        Previous value: -"ISO 8601 time tag for the forecast interval."New value: +"ISO 8601 forecast interval time tag."
      • changedOutput schema / properties / observed / description
        Previous value: -"Observed Kp readings within the requested window, oldest first."New value: +"Observed Kp in the window, oldest first."
      • changedOutput schema / properties / observed / items / description
        Previous value: -"One observed Kp 3-hour interval reading."New value: +"One observed 3-hour Kp interval."
      • changedOutput schema / properties / observed / items / properties / auroraLatitude / description
        Previous value: -"Aurora visibility guidance for this Kp level, in geomagnetic latitude."New value: +"Aurora guidance for this Kp, in geomagnetic latitude."
      • changedOutput schema / properties / observed / items / properties / gLabel / description
        Previous value: -"NOAA G-scale label, e.g. \"G0\", \"G3\"."New value: +"G label, e.g. \"G3\"."
      • changedOutput schema / properties / observed / items / properties / gScale / description
        Previous value: -"NOAA G-scale equivalent (0–5). Each level starts at its \"minus\" third — G1 at Kp 4.67, G2 at 5.67, G3 at 6.67, G4 at 7.67 (through 8.67), G5 at 9."New value: +"G level (0–5) for this Kp; G1 starts at 4.67, G5 at 9."
      • changedOutput schema / properties / observed / items / properties / kp / description
        Previous value: -"Kp index value 0–9."New value: +"Kp value (0–9)."
      • changedOutput schema / properties / observedCount / description
        Previous value: -"Number of Kp observations in the observed array, matching the requested window."New value: +"Entries in observed."
    • Changednoaa_spaceweather_get_solar_activity53 fields changed
      • changedOutput schema / properties / activeRegions / description
        Previous value: -"Currently active solar regions with same-day flare counts and next-day flare probabilities. Empty when include_regions=false or no regions are active."New value: +"Active regions; empty when include_regions=false or none are active."
      • changedOutput schema / properties / activeRegions / items / description
        Previous value: -"One active solar region: morphology, the flares SWPC attributed to it that day, and the next day's flare probabilities."New value: +"One active solar region."
      • changedOutput schema / properties / activeRegions / items / properties / areaMillionths / description
        Previous value: -"Sunspot area in millionths of the solar hemisphere. Null for a spotless region (plage)."New value: +"Sunspot area in millionths of the hemisphere; null for a spotless region."
      • changedOutput schema / properties / activeRegions / items / properties / cFlareCount / description
        Previous value: -"C-class flares SWPC attributed to this region on observedDate itself — a same-day tally updated during that day, unlike the probability fields, which cover the following day."New value: +"C-class flares SWPC credited to this region on observedDate."
      • changedOutput schema / properties / activeRegions / items / properties / cFlareProbability / description
        Previous value: -"Probability of a C-class flare from this region (%), for the UTC day AFTER observedDate — SWPC issues each day’s region probabilities against the previous day’s observation."New value: +"C-class flare chance (%) for the UTC day after observedDate."
      • changedOutput schema / properties / activeRegions / items / properties / firstObserved / description
        Previous value: -"ISO 8601 UTC time SWPC first recorded this region, e.g. \"2026-09-21T07:29:27Z\"."New value: +"ISO 8601 UTC time SWPC first recorded this region."
      • changedOutput schema / properties / activeRegions / items / properties / mFlareCount / description
        Previous value: -"M-class flares SWPC attributed to this region on observedDate itself — a same-day tally updated during that day, unlike the probability fields, which cover the following day."New value: +"M-class flares SWPC credited to this region on observedDate."
      • changedOutput schema / properties / activeRegions / items / properties / mFlareProbability / description
        Previous value: -"Probability of an M-class flare from this region (%), for the UTC day AFTER observedDate — SWPC issues each day’s region probabilities against the previous day’s observation."New value: +"M-class flare chance (%) for the UTC day after observedDate."
      • changedOutput schema / properties / activeRegions / items / properties / magClass / description
        Previous value: -"Magnetic field class, e.g. \"B\"; empty for a spotless region."New value: +"Magnetic class, e.g. \"B\"; empty for a spotless region."
      • changedOutput schema / properties / activeRegions / items / properties / numberSpots / description
        Previous value: -"Number of sunspots in this region; 0 for a spotless region."New value: +"Sunspot count; 0 for a spotless region."
      • changedOutput schema / properties / activeRegions / items / properties / observedDate / description
        Previous value: -"UTC date this region was observed. The three flare counts cover this day; the four probability fields cover the following day, not this one."New value: +"UTC observation date: the flare counts cover it, the probabilities the next day."
      • changedOutput schema / properties / activeRegions / items / properties / protonProbability / description
        Previous value: -"Probability of a proton event from this region (%), for the UTC day AFTER observedDate — SWPC issues each day’s region probabilities against the previous day’s observation."New value: +"Proton event chance (%) for the UTC day after observedDate."
      • changedOutput schema / properties / activeRegions / items / properties / spotClass / description
        Previous value: -"Sunspot morphology class, e.g. \"Dsi\". Empty for a spotless region (plage), where magClass is empty and numberSpots is 0 too."New value: +"Sunspot class, e.g. \"Dsi\"; empty for a spotless region (plage)."
      • changedOutput schema / properties / activeRegions / items / properties / xFlareCount / description
        Previous value: -"X-class flares SWPC attributed to this region on observedDate itself — a same-day tally updated during that day, unlike the probability fields, which cover the following day."New value: +"X-class flares SWPC credited to this region on observedDate."
      • changedOutput schema / properties / activeRegions / items / properties / xFlareProbability / description
        Previous value: -"Probability of an X-class flare from this region (%), for the UTC day AFTER observedDate — SWPC issues each day’s region probabilities against the previous day’s observation."New value: +"X-class flare chance (%) for the UTC day after observedDate."
      • changedOutput schema / properties / f107 / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "Latest daily F10.7 index.",
        -    "properties": {
        -      "fluxSfu": {
        -        "description": "10.7 cm solar radio flux in solar flux units (sfu), measured at 2800 MHz.",
        -        "type": "number"
        -      },
        -      "ninetyDayMeanSfu": {
        -        "description": "90-day mean flux in sfu; null when the selected record does not carry one.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "observedTime": {
        -        "description": "ISO 8601 UTC time of the observation (normalized from the feed's Z-less tag). Up to ~24 h old — read it rather than treating the value as now.",
        -        "type": "string"
        -      },
        -      "reportingSchedule": {
        -        "description": "Which of the three daily Penticton reports this is: \"Morning\", \"Noon\", or \"Afternoon\".",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "observedTime",
        -      "fluxSfu",
        -      "ninetyDayMeanSfu",
        -      "reportingSchedule"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "Daily F10.7 reading.",
        +    "properties": {
        +      "fluxSfu": {
        +        "description": "10.7 cm (2800 MHz) solar radio flux, in sfu.",
        +        "type": "number"
        +      },
        +      "ninetyDayMeanSfu": {
        +        "description": "90-day mean flux in sfu; null when the record carries none.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "observedTime": {
        +        "description": "ISO 8601 UTC observation time; can be ~24 h old.",
        +        "type": "string"
        +      },
        +      "reportingSchedule": {
        +        "description": "Penticton report: \"Morning\", \"Noon\", or \"Afternoon\".",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "observedTime",
        +      "fluxSfu",
        +      "ninetyDayMeanSfu",
        +      "reportingSchedule"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / f107 / description
        Previous value: -"Latest daily F10.7 solar radio flux — the Noon Penticton report, which is the value SWPC reports for the day. Null when the feed carries no such record."New value: +"Latest Noon report, SWPC's daily F10.7 value; null when the feed has none."
      • changedOutput schema / properties / fetchedAt / description
        Previous value: -"ISO 8601 timestamp of when this data was fetched."New value: +"ISO 8601 fetch time."
      • changedOutput schema / properties / latestProton / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "One GOES integral proton flux reading with S-scale.",
        -    "properties": {
        -      "energy": {
        -        "description": "Energy channel, e.g. \">=10 MeV\".",
        -        "type": "string"
        -      },
        -      "fluxPfu": {
        -        "description": "Integral proton flux in particle flux units (pfu) at ≥10 MeV, rounded to 3 significant figures.",
        -        "type": "number"
        -      },
        -      "sScale": {
        -        "description": "NOAA S-scale level (0–5) for this flux reading.",
        -        "type": "number"
        -      },
        -      "timeTag": {
        -        "description": "ISO 8601 measurement time tag.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "timeTag",
        -      "fluxPfu",
        -      "sScale",
        -      "energy"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "One GOES proton flux reading.",
        +    "properties": {
        +      "energy": {
        +        "description": "Energy channel, e.g. \">=10 MeV\".",
        +        "type": "string"
        +      },
        +      "fluxPfu": {
        +        "description": "≥10 MeV integral proton flux in pfu, to 3 significant figures.",
        +        "type": "number"
        +      },
        +      "sScale": {
        +        "description": "S level (0–5) for this flux.",
        +        "type": "number"
        +      },
        +      "timeTag": {
        +        "description": "ISO 8601 measurement time.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "timeTag",
        +      "fluxPfu",
        +      "sScale",
        +      "energy"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / latestProton / description
        Previous value: -"Most recent ≥10 MeV proton flux reading, null if unavailable."New value: +"Newest ≥10 MeV proton reading; null when the feed is empty."
      • changedOutput schema / properties / latestXray / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "One GOES X-ray flux reading with flare class.",
        -    "properties": {
        -      "flareClass": {
        -        "description": "Flare classification letter: A, B, C, M, or X.",
        -        "type": "string"
        -      },
        -      "flareClassFull": {
        -        "description": "Flare class with magnitude, e.g. \"B2.5\" — null below the A1 floor of 1e-8 W/m² (zero and negative readings included), where SWPC's class scheme defines none.",
        -        "type": [
        -          "string",
        -          "null"
        -        ]
        -      },
        -      "fluxWm2": {
        -        "description": "X-ray flux in W/m² (0.1-0.8nm long channel from GOES), formatted as scientific notation with 2 significant digits, e.g. \"1.4e-6 W/m²\".",
        -        "type": "string"
        -      },
        -      "fluxWm2Value": {
        -        "description": "Same quantity as fluxWm2, unformatted, so it can be compared without parsing the display string.",
        -        "type": "number"
        -      },
        -      "satellite": {
        -        "description": "GOES satellite number.",
        -        "type": "number"
        -      },
        -      "timeTag": {
        -        "description": "ISO 8601 measurement time tag.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "timeTag",
        -      "fluxWm2",
        -      "fluxWm2Value",
        -      "flareClass",
        -      "flareClassFull",
        -      "satellite"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "One GOES X-ray reading.",
        +    "properties": {
        +      "flareClass": {
        +        "description": "Flare class letter: A, B, C, M, or X.",
        +        "type": "string"
        +      },
        +      "flareClassFull": {
        +        "description": "Class with magnitude, e.g. \"B2.5\"; null below A1 (1e-8 W/m²), zero and negative readings included.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fluxWm2": {
        +        "description": "Long-channel (0.1–0.8 nm) X-ray flux for display, e.g. \"1.4e-6 W/m²\".",
        +        "type": "string"
        +      },
        +      "fluxWm2Value": {
        +        "description": "fluxWm2 as an unformatted number, in W/m².",
        +        "type": "number"
        +      },
        +      "satellite": {
        +        "description": "GOES satellite number.",
        +        "type": "number"
        +      },
        +      "timeTag": {
        +        "description": "ISO 8601 measurement time.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "timeTag",
        +      "fluxWm2",
        +      "fluxWm2Value",
        +      "flareClass",
        +      "flareClassFull",
        +      "satellite"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / latestXray / description
        Previous value: -"Most recent GOES X-ray flux reading, null if unavailable."New value: +"Newest X-ray reading; null when the feed is empty."
      • changedOutput schema / properties / notice / description
        Previous value: -"Guidance when the requested flare_hours window returned no flare events — names the newest flare the feed carries, or reports that the feed itself returned none."New value: +"Set when no flare began in the flare_hours window: names the newest flare in the feed, or says the feed has none."
      • changedOutput schema / properties / probabilities / description
        Previous value: -"3-day flare probability forecasts."New value: +"3-day flare probability forecast."
      • changedOutput schema / properties / probabilities / items / description
        Previous value: -"Solar flare probability forecast for one day."New value: +"Flare probabilities for one day."
      • changedOutput schema / properties / probabilities / items / properties / cClass1Day / description
        Previous value: -"Total probability of a C-class flare for this date (%)."New value: +"Deprecated: use cClassProbability (same value)."
      • changedOutput schema / properties / probabilities / items / properties / cClassProbability / description
        Previous value: -"Total probability of a C-class flare for this date (%). Date-neutral alias of cClass1Day."New value: +"C-class flare chance (%) for this date."
      • changedOutput schema / properties / probabilities / items / properties / mClass1Day / description
        Previous value: -"Total probability of an M-class flare for this date (%)."New value: +"Deprecated: use mClassProbability (same value)."
      • changedOutput schema / properties / probabilities / items / properties / mClassProbability / description
        Previous value: -"Total probability of an M-class flare for this date (%). Date-neutral alias of mClass1Day."New value: +"M-class flare chance (%) for this date."
      • changedOutput schema / properties / probabilities / items / properties / protonEventProbability / description
        Previous value: -"Probability of a ≥10 MeV proton event for this date (%). Date-neutral alias of protons1Day."New value: +"≥10 MeV proton event chance (%) for this date."
      • changedOutput schema / properties / probabilities / items / properties / protons1Day / description
        Previous value: -"Probability of a ≥10 MeV proton event for this date (%)."New value: +"Deprecated: use protonEventProbability (same value)."
      • changedOutput schema / properties / probabilities / items / properties / xClass1Day / description
        Previous value: -"Total probability of an X-class flare for this date (%)."New value: +"Deprecated: use xClassProbability (same value)."
      • changedOutput schema / properties / probabilities / items / properties / xClassProbability / description
        Previous value: -"Total probability of an X-class flare for this date (%). Date-neutral alias of xClass1Day."New value: +"X-class flare chance (%) for this date."
      • changedOutput schema / properties / recentFlares / description
        Previous value: -"Discrete flare events whose onset falls within the flare_hours window, oldest first. Empty when no flare began in the window."New value: +"Flares with onset inside flare_hours, oldest first; empty when none began."
      • changedOutput schema / properties / recentFlares / items / description
        Previous value: -"One discrete GOES X-ray flare event."New value: +"One GOES X-ray flare event."
      • changedOutput schema / properties / recentFlares / items / properties / beginClass / description
        Previous value: -"GOES class with magnitude at onset, e.g. \"B4.2\"."New value: +"Class at onset, e.g. \"B4.2\"."
      • changedOutput schema / properties / recentFlares / items / properties / beginTime / description
        Previous value: -"ISO 8601 UTC onset time (SWPC begin_time)."New value: +"ISO 8601 UTC onset time."
      • changedOutput schema / properties / recentFlares / items / properties / endClass / description
        Previous value: -"GOES class with magnitude at decay; null while the flare is still in progress."New value: +"Class at decay; null while in progress."
      • changedOutput schema / properties / recentFlares / items / properties / endTime / description
        Previous value: -"ISO 8601 UTC decay time; null while the flare is still in progress."New value: +"ISO 8601 UTC decay time; null while in progress."
      • changedOutput schema / properties / recentFlares / items / properties / maxClass / description
        Previous value: -"Peak GOES class with magnitude, e.g. \"M5.2\" — SWPC max_class, read as published."New value: +"Peak class as SWPC publishes it, e.g. \"M5.2\"."
      • changedOutput schema / properties / recentFlares / items / properties / maxTime / description
        Previous value: -"ISO 8601 UTC time of peak flux (SWPC max_time)."New value: +"ISO 8601 UTC peak time."
      • changedOutput schema / properties / recentFlares / items / properties / peakFluxWm2 / description
        Previous value: -"Peak long-channel (0.1–0.8 nm) flux in W/m² — SWPC max_xrlong."New value: +"Peak long-channel (0.1–0.8 nm) flux, in W/m²."
      • changedOutput schema / properties / recentFlares / items / properties / rScale / description
        Previous value: -"NOAA R-scale level implied by the peak flux (0–5); 0 means below the R1 threshold."New value: +"R level (0–5) the peak flux implies; 0 is below R1."
      • changedOutput schema / properties / recentFlares / items / properties / satellite / description
        Previous value: -"GOES satellite number the record came from."New value: +"GOES satellite number."
      • changedOutput schema / properties / recentXray / description
        Previous value: -"GOES X-ray flux readings from the past hour, oldest first."New value: +"X-ray readings from the past hour, oldest first."
      • changedOutput schema / properties / recentXray / items / description
        Previous value: -"One GOES X-ray flux reading with flare class."New value: +"One GOES X-ray reading."
      • changedOutput schema / properties / recentXray / items / properties / flareClass / description
        Previous value: -"Flare classification letter: A, B, C, M, or X."New value: +"Flare class letter: A, B, C, M, or X."
      • changedOutput schema / properties / recentXray / items / properties / flareClassFull / description
        Previous value: -"Flare class with magnitude, e.g. \"B2.5\" — null below the A1 floor of 1e-8 W/m² (zero and negative readings included), where SWPC's class scheme defines none."New value: +"Class with magnitude, e.g. \"B2.5\"; null below A1 (1e-8 W/m²), zero and negative readings included."
      • changedOutput schema / properties / recentXray / items / properties / fluxWm2 / description
        Previous value: -"X-ray flux in W/m² (0.1-0.8nm long channel from GOES), formatted as scientific notation with 2 significant digits, e.g. \"1.4e-6 W/m²\"."New value: +"Long-channel (0.1–0.8 nm) X-ray flux for display, e.g. \"1.4e-6 W/m²\"."
      • changedOutput schema / properties / recentXray / items / properties / fluxWm2Value / description
        Previous value: -"Same quantity as fluxWm2, unformatted, so it can be compared without parsing the display string."New value: +"fluxWm2 as an unformatted number, in W/m²."
      • changedOutput schema / properties / recentXray / items / properties / timeTag / description
        Previous value: -"ISO 8601 measurement time tag."New value: +"ISO 8601 measurement time."
      • changedOutput schema / properties / sScale / description
        Previous value: -"Current NOAA S-scale for solar radiation storms (0–5), derived from latest proton flux."New value: +"Current S level (0–5) from latestProton; 0 without a reading."
      • changedOutput schema / properties / sScaleText / description
        Previous value: -"Plain-language S-scale description, e.g. \"S2 moderate radiation storm\"."New value: +"S level descriptor, e.g. \"S2 moderate radiation storm\"."
    • Changednoaa_spaceweather_get_solar_wind37 fields changed
      • changedOutput schema / properties / btMaxInWindow / description
        Previous value: -"Highest total field magnitude Bt in nT across the whole window, computed before any reduction. Null when the window is empty or every bt in it is null."New value: +"Peak Bt in nT across the whole window; null when it has no Bt."
      • changedOutput schema / properties / bzMinInWindow / description
        Previous value: -"Lowest (most southward) Bz reading in nT across the whole window, computed before any reduction — the number storm work reads next to the latest value. Null when the window is empty or every bzGsm in it is null."New value: +"Most southward Bz in nT across the whole window; null when it has no Bz."
      • changedOutput schema / properties / bzMinTimeTag / description
        Previous value: -"ISO 8601 time tag of the record that carried bzMinInWindow. Null whenever bzMinInWindow is null."New value: +"ISO 8601 time of bzMinInWindow; null when it is null."
      • changedOutput schema / properties / bzSouthMinutesInWindow / description
        Previous value: -"Minutes of southward Bz in the window: the count of 1-minute mag records with bzGsm below 0, across the whole window before any reduction. Gaps in the feed are not counted, so it can fall short of the wall-clock time Bz spent southward. 0 on an empty window, an all-null window, or one with no southward Bz."New value: +"Minutes of Bz < 0: 1-minute mag records across the whole window. Feed gaps are not counted. 0 when none."
      • changedOutput schema / properties / bzStatus / description
        Previous value: -"Plain-language Bz status, e.g. \"Southward Bz −14 nT — storm-driving conditions\" or \"Northward Bz +5 nT — quiescent\"."New value: +"Bz status from latestMag, e.g. \"Southward Bz -14 nT — storm-driving conditions.\"; \"Bz data unavailable.\" without a reading."
      • changedOutput schema / properties / densityMaxInWindow / description
        Previous value: -"Highest proton density in particles/cm³ across the whole window, computed before any reduction. Null when the window is empty or every densityPerCm3 in it is null."New value: +"Peak proton density in particles/cm³ across the whole window; null when none."
      • changedOutput schema / properties / feedStalenessHours / description
        Previous value: -"Hours between now and the newest record across both feeds — how far behind real time the upstream data is. Null when both feeds returned no active-spacecraft records."New value: +"Hours from the newest record in either feed to now; null when both are empty."
      • changedOutput schema / properties / latestFeedMagTime / description
        Previous value: -"ISO 8601 time of the newest magnetic field record the feed carries, ignoring the window. Null when the feed returned no active-spacecraft mag records."New value: +"ISO 8601 time of the newest mag record in the feed, window aside; null when none."
      • changedOutput schema / properties / latestFeedPlasmaTime / description
        Previous value: -"ISO 8601 time of the newest plasma record the feed carries, ignoring the window. Null when the feed returned no active-spacecraft plasma records. Compare against the window to tell a quiet feed from a stale one."New value: +"ISO 8601 time of the newest plasma record in the feed, window aside; null when none."
      • changedOutput schema / properties / latestMag / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "One magnetic field measurement from the active L1 spacecraft.",
        -    "properties": {
        -      "bt": {
        -        "description": "Total field magnitude Bt (nT). Null when the feed omits the value.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "bxGsm": {
        -        "description": "Bx component in GSM coordinates (nT). Null when the feed omits the value.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "byGsm": {
        -        "description": "By component in GSM coordinates (nT). Null when the feed omits the value.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "bzGsm": {
        -        "description": "Bz component in GSM coordinates (nT). Southward (negative) drives geomagnetic storms. Null when the feed omits the value.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "source": {
        -        "description": "Spacecraft that reported this measurement, as named by the feed, e.g. \"SOLAR1\".",
        -        "type": "string"
        -      },
        -      "timeTag": {
        -        "description": "ISO 8601 measurement time tag.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "timeTag",
        -      "source",
        -      "bxGsm",
        -      "byGsm",
        -      "bzGsm",
        -      "bt"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "One L1 magnetic field record.",
        +    "properties": {
        +      "bt": {
        +        "description": "Total field Bt in nT; null when missing.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "bxGsm": {
        +        "description": "Bx, GSM, in nT; null when missing.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "byGsm": {
        +        "description": "By, GSM, in nT; null when missing.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "bzGsm": {
        +        "description": "Bz, GSM, in nT; negative (southward) drives storms; null when missing.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "source": {
        +        "description": "Reporting spacecraft, e.g. \"SOLAR1\".",
        +        "type": "string"
        +      },
        +      "timeTag": {
        +        "description": "ISO 8601 measurement time.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "timeTag",
        +      "source",
        +      "bxGsm",
        +      "byGsm",
        +      "bzGsm",
        +      "bt"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / latestMag / description
        Previous value: -"Most recent magnetic field reading, null if no data in window."New value: +"Newest mag record in the window; null when the window has none."
      • changedOutput schema / properties / latestPlasma / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "One plasma measurement from the active L1 spacecraft.",
        -    "properties": {
        -      "densityPerCm3": {
        -        "description": "Proton density in particles/cm³. Null when the feed omits the value.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "source": {
        -        "description": "Spacecraft that reported this measurement, as named by the feed, e.g. \"SOLAR1\".",
        -        "type": "string"
        -      },
        -      "speedKmS": {
        -        "description": "Solar wind speed in km/s. Null when the feed omits the value.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "temperatureK": {
        -        "description": "Proton temperature in Kelvin. Null when the feed omits the value.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "timeTag": {
        -        "description": "ISO 8601 measurement time tag.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "timeTag",
        -      "source",
        -      "densityPerCm3",
        -      "speedKmS",
        -      "temperatureK"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "One L1 plasma record.",
        +    "properties": {
        +      "densityPerCm3": {
        +        "description": "Proton density in particles/cm³; null when missing.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "source": {
        +        "description": "Reporting spacecraft, e.g. \"SOLAR1\".",
        +        "type": "string"
        +      },
        +      "speedKmS": {
        +        "description": "Solar wind speed in km/s; null when missing.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "temperatureK": {
        +        "description": "Proton temperature in K; null when missing.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "timeTag": {
        +        "description": "ISO 8601 measurement time.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "timeTag",
        +      "source",
        +      "densityPerCm3",
        +      "speedKmS",
        +      "temperatureK"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / latestPlasma / description
        Previous value: -"Most recent plasma reading, null if no data in window."New value: +"Newest plasma record in the window; null when the window has none."
      • changedOutput schema / properties / mag / description
        Previous value: -"Magnetic field measurements (Bx, By, Bz, Bt) within the window, oldest first. Under resolution=\"reduced\" this is at most 200 real records — one per equal-size bucket of the window, each the bucket's most southward Bz — with the newest windowed record last, so the final element always equals latestMag. Empty under resolution=\"summary\"."New value: +"Mag records in the window, oldest first. \"reduced\": at most 200, each its bucket's most southward Bz; the last equals latestMag. Empty under \"summary\"."
      • changedOutput schema / properties / mag / items / description
        Previous value: -"One magnetic field measurement from the active L1 spacecraft."New value: +"One L1 magnetic field record."
      • changedOutput schema / properties / mag / items / properties / bt / description
        Previous value: -"Total field magnitude Bt (nT). Null when the feed omits the value."New value: +"Total field Bt in nT; null when missing."
      • changedOutput schema / properties / mag / items / properties / bxGsm / description
        Previous value: -"Bx component in GSM coordinates (nT). Null when the feed omits the value."New value: +"Bx, GSM, in nT; null when missing."
      • changedOutput schema / properties / mag / items / properties / byGsm / description
        Previous value: -"By component in GSM coordinates (nT). Null when the feed omits the value."New value: +"By, GSM, in nT; null when missing."
      • changedOutput schema / properties / mag / items / properties / bzGsm / description
        Previous value: -"Bz component in GSM coordinates (nT). Southward (negative) drives geomagnetic storms. Null when the feed omits the value."New value: +"Bz, GSM, in nT; negative (southward) drives storms; null when missing."
      • changedOutput schema / properties / mag / items / properties / source / description
        Previous value: -"Spacecraft that reported this measurement, as named by the feed, e.g. \"SOLAR1\"."New value: +"Reporting spacecraft, e.g. \"SOLAR1\"."
      • changedOutput schema / properties / mag / items / properties / timeTag / description
        Previous value: -"ISO 8601 measurement time tag."New value: +"ISO 8601 measurement time."
      • changedOutput schema / properties / magBucketRecords / description
        Previous value: -"Magnetic field records per emitted record — the bucket size the window was reduced by, or 1 when this series was returned untouched. The two series differ in length, so each carries its own factor. Present only when a reduction was applied to either series."New value: +"Mag records per emitted record, 1 if untouched. Present only after a reduction."
      • changedOutput schema / properties / magCount / description
        Previous value: -"Number of magnetic field records in the mag array. Equal to the records in the window at full resolution; under a reduction it is the emitted count, and magWindowRecords carries the pre-reduction total. Under resolution=\"summary\" the array is empty and this is the records the window held."New value: +"Records in mag (magWindowRecords has the pre-reduction total); under \"summary\", the records the window held."
      • changedOutput schema / properties / magWindowRecords / description
        Previous value: -"Magnetic field records the window held before reduction. Present only when a reduction was applied to either series, or under resolution=\"summary\"."New value: +"Mag records in the window before reduction. Present after a reduction or under \"summary\"."
      • changedOutput schema / properties / notice / description
        Previous value: -"Guidance on what shaped this response: that the requested window returned no plasma or magnetic field records — naming the newest record the feed carries, or reporting that the feed itself returned nothing from an active spacecraft — that a series was bounded to 200 records, with the per-series factors, or that resolution=\"summary\" omitted both series."New value: +"What shaped the response: an empty window (with the newest feed record), series bounded to 200 records, or series omitted under \"summary\"."
      • changedOutput schema / properties / plasma / description
        Previous value: -"Plasma measurements (speed, density, temperature) within the window, oldest first. Under resolution=\"reduced\" this is at most 200 real records — one per equal-size bucket of the window, each the bucket's fastest speed — with the newest windowed record last. Empty under resolution=\"summary\"."New value: +"Plasma records in the window, oldest first. \"reduced\": at most 200, each its bucket's fastest speed, newest last. Empty under \"summary\"."
      • changedOutput schema / properties / plasma / items / description
        Previous value: -"One plasma measurement from the active L1 spacecraft."New value: +"One L1 plasma record."
      • changedOutput schema / properties / plasma / items / properties / densityPerCm3 / description
        Previous value: -"Proton density in particles/cm³. Null when the feed omits the value."New value: +"Proton density in particles/cm³; null when missing."
      • changedOutput schema / properties / plasma / items / properties / source / description
        Previous value: -"Spacecraft that reported this measurement, as named by the feed, e.g. \"SOLAR1\"."New value: +"Reporting spacecraft, e.g. \"SOLAR1\"."
      • changedOutput schema / properties / plasma / items / properties / speedKmS / description
        Previous value: -"Solar wind speed in km/s. Null when the feed omits the value."New value: +"Solar wind speed in km/s; null when missing."
      • changedOutput schema / properties / plasma / items / properties / temperatureK / description
        Previous value: -"Proton temperature in Kelvin. Null when the feed omits the value."New value: +"Proton temperature in K; null when missing."
      • changedOutput schema / properties / plasma / items / properties / timeTag / description
        Previous value: -"ISO 8601 measurement time tag."New value: +"ISO 8601 measurement time."
      • changedOutput schema / properties / plasmaBucketRecords / description
        Previous value: -"Plasma records per emitted record — the bucket size the window was reduced by, or 1 when this series was returned untouched. Records rather than a minute cadence: the feed skips minutes, so a bucket spans a variable stretch of wall-clock time. Present only when a reduction was applied to either series."New value: +"Plasma records per emitted record, 1 if untouched. Present only after a reduction."
      • changedOutput schema / properties / plasmaCount / description
        Previous value: -"Number of plasma records in the plasma array. Equal to the records in the window at full resolution; under a reduction it is the emitted count, and plasmaWindowRecords carries the pre-reduction total. Under resolution=\"summary\" the array is empty and this is the records the window held."New value: +"Records in plasma (plasmaWindowRecords has the pre-reduction total); under \"summary\", the records the window held."
      • changedOutput schema / properties / plasmaWindowRecords / description
        Previous value: -"Plasma records the window held before reduction. Present only when a reduction was applied to either series, or under resolution=\"summary\"."New value: +"Plasma records in the window before reduction. Present after a reduction or under \"summary\"."
      • changedOutput schema / properties / speedMaxInWindow / description
        Previous value: -"Highest solar wind speed in km/s across the whole window, computed before any reduction. Null when the window is empty or every speedKmS in it is null."New value: +"Peak speed in km/s across the whole window; null when it has no speed."
      • changedOutput schema / properties / speedMaxTimeTag / description
        Previous value: -"ISO 8601 time tag of the record that carried speedMaxInWindow. Null whenever speedMaxInWindow is null."New value: +"ISO 8601 time of speedMaxInWindow; null when it is null."
  2. 6 tool updates
    • Changednoaa_spaceweather_get_alerts1 field changed
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403). Fails in one attempt. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried for up to 45 seconds in total before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403). Fails in one attempt. Other values are possible when a failure originates below the handler."
    • Changednoaa_spaceweather_get_aurora_forecast1 field changed
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403), or a coordinate lookup finds no parseable Forecast Time in the feed. Fails in one attempt. `invalid_coordinates`: One coordinate provided without the other. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried for up to 45 seconds in total before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403), or a coordinate lookup finds no parseable Forecast Time in the feed. Fails in one attempt. `invalid_coordinates`: One coordinate provided without the other. Other values are possible when a failure originates below the handler."
    • Changednoaa_spaceweather_get_conditions3 fields changed
      • changedOutput schema / anyOf
        Previous value: -[
        -  {
        -    "not": {
        -      "required": [
        -        "error"
        -      ]
        -    },
        -    "required": [
        -      "observedAt",
        -      "currentKp",
        -      "currentGScale",
        -      "auroraLatitude",
        -      "today",
        -      "forecast",
        -      "summary",
        -      "discussion"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "error"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "observedAt",
        +      "currentKp",
        +      "currentGScale",
        +      "auroraLatitude",
        +      "yesterday",
        +      "today",
        +      "forecast",
        +      "summary",
        +      "discussion"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403), or a feed answers without the shape it is documented to have — the scales feed no longer carrying its \"0\" (today) period, or the forecast discussion carrying no topic section. Fails in one attempt. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried for up to 45 seconds in total before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403), or a feed answers without the shape it is documented to have — the scales feed no longer carrying its \"0\" (today) period, or the forecast discussion carrying no topic section. Fails in one attempt. Other values are possible when a failure originates below the handler."
      • addedOutput schema / properties / yesterday
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "NOAA R/S/G levels SWPC assessed for the previous UTC day. Carries a date and no time: the feed states when it was generated, not when that day was observed.",
        +      "properties": {
        +        "G": {
        +          "additionalProperties": false,
        +          "description": "Geomagnetic storm level SWPC assessed for the previous UTC day.",
        +          "properties": {
        +            "label": {
        +              "description": "NOAA scale string, e.g. \"G2\", \"R1\", \"S0\".",
        +              "type": "string"
        +            },
        +            "scale": {
        +              "description": "Storm scale level 0–5.",
        +              "type": "number"
        +            },
        +            "text": {
        +              "description": "Human-readable scale descriptor, e.g. \"Moderate\". Empty when scale is 0.",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "scale",
        +            "text",
        +            "label"
        +          ],
        +          "type": "object"
        +        },
        +        "R": {
        +          "additionalProperties": false,
        +          "description": "Radio blackout level SWPC assessed for the previous UTC day.",
        +          "properties": {
        +            "label": {
        +              "description": "NOAA scale string, e.g. \"G2\", \"R1\", \"S0\".",
        +              "type": "string"
        +            },
        +            "scale": {
        +              "description": "Storm scale level 0–5.",
        +              "type": "number"
        +            },
        +            "text": {
        +              "description": "Human-readable scale descriptor, e.g. \"Moderate\". Empty when scale is 0.",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "scale",
        +            "text",
        +            "label"
        +          ],
        +          "type": "object"
        +        },
        +        "S": {
        +          "additionalProperties": false,
        +          "description": "Solar radiation storm level SWPC assessed for the previous UTC day.",
        +          "properties": {
        +            "label": {
        +              "description": "NOAA scale string, e.g. \"G2\", \"R1\", \"S0\".",
        +              "type": "string"
        +            },
        +            "scale": {
        +              "description": "Storm scale level 0–5.",
        +              "type": "number"
        +            },
        +            "text": {
        +              "description": "Human-readable scale descriptor, e.g. \"Moderate\". Empty when scale is 0.",
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "scale",
        +            "text",
        +            "label"
        +          ],
        +          "type": "object"
        +        },
        +        "date": {
        +          "description": "The previous UTC calendar day these levels were assessed for, e.g. \"2026-06-03\".",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "date",
        +        "G",
        +        "R",
        +        "S"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "NOAA R/S/G levels SWPC assessed for the previous UTC day — answers what happened yesterday without a history call. Null when the scales feed carries no previous-day period, or carries one missing a level; null never means level 0."
        +}
    • Changednoaa_spaceweather_get_kp_index1 field changed
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403). Fails in one attempt. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried for up to 45 seconds in total before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403). Fails in one attempt. Other values are possible when a failure originates below the handler."
    • Changednoaa_spaceweather_get_solar_activity13 fields changed
      • changedOutput schema / properties / activeRegions / description
        Previous value: -"Currently active solar regions with per-region flare probabilities. Empty when include_regions=false or no regions are active."New value: +"Currently active solar regions with same-day flare counts and next-day flare probabilities. Empty when include_regions=false or no regions are active."
      • changedOutput schema / properties / activeRegions / items / description
        Previous value: -"One active solar region with flare probabilities."New value: +"One active solar region: morphology, the flares SWPC attributed to it that day, and the next day's flare probabilities."
      • addedOutput schema / properties / activeRegions / items / properties / areaMillionths
        Added value: +{
        +  "description": "Sunspot area in millionths of the solar hemisphere. Null for a spotless region (plage).",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / activeRegions / items / properties / cFlareCount
        Added value: +{
        +  "description": "C-class flares SWPC attributed to this region on observedDate itself — a same-day tally updated during that day, unlike the probability fields, which cover the following day.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / activeRegions / items / properties / firstObserved
        Added value: +{
        +  "description": "ISO 8601 UTC time SWPC first recorded this region, e.g. \"2026-09-21T07:29:27Z\".",
        +  "type": "string"
        +}
      • addedOutput schema / properties / activeRegions / items / properties / mFlareCount
        Added value: +{
        +  "description": "M-class flares SWPC attributed to this region on observedDate itself — a same-day tally updated during that day, unlike the probability fields, which cover the following day.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / activeRegions / items / properties / magClass / description
        Previous value: -"Magnetic field class."New value: +"Magnetic field class, e.g. \"B\"; empty for a spotless region."
      • changedOutput schema / properties / activeRegions / items / properties / numberSpots / description
        Previous value: -"Number of sunspots in this region."New value: +"Number of sunspots in this region; 0 for a spotless region."
      • changedOutput schema / properties / activeRegions / items / properties / observedDate / description
        Previous value: -"UTC date this region was observed. The four probability fields on this record cover the following day, not this one."New value: +"UTC date this region was observed. The three flare counts cover this day; the four probability fields cover the following day, not this one."
      • changedOutput schema / properties / activeRegions / items / properties / spotClass / description
        Previous value: -"Sunspot morphology class."New value: +"Sunspot morphology class, e.g. \"Dsi\". Empty for a spotless region (plage), where magClass is empty and numberSpots is 0 too."
      • addedOutput schema / properties / activeRegions / items / properties / xFlareCount
        Added value: +{
        +  "description": "X-class flares SWPC attributed to this region on observedDate itself — a same-day tally updated during that day, unlike the probability fields, which cover the following day.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / activeRegions / items / required
        Previous value: -[
        -  "region",
        -  "location",
        -  "latitude",
        -  "spotClass",
        -  "numberSpots",
        -  "magClass",
        -  "cFlareProbability",
        -  "mFlareProbability",
        -  "xFlareProbability",
        -  "protonProbability",
        -  "observedDate"
        -]New value: +[
        +  "region",
        +  "location",
        +  "latitude",
        +  "spotClass",
        +  "numberSpots",
        +  "magClass",
        +  "areaMillionths",
        +  "firstObserved",
        +  "cFlareCount",
        +  "mFlareCount",
        +  "xFlareCount",
        +  "cFlareProbability",
        +  "mFlareProbability",
        +  "xFlareProbability",
        +  "protonProbability",
        +  "observedDate"
        +]
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403). Fails in one attempt. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried for up to 45 seconds in total before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403). Fails in one attempt. Other values are possible when a failure originates below the handler."
    • Changednoaa_spaceweather_get_solar_wind16 fields changed
      • changedInput schema / properties / resolution / description
        Previous value: -"Detail level of the returned plasma and mag series. \"reduced\" (default) bounds each series to at most 200 records: the window is bucketed by record count and one real measurement is emitted per bucket — the bucket's fastest speed for plasma, its most southward Bz for mag — with the newest record in the window always last. A series already inside the bound is returned untouched, so a default 3-hour call is unaffected. \"full\" returns every record in the window (~1,400 per series over 24 hours, a ~540 KB response). bzStatus, bzMinInWindow, latestPlasma, and latestMag are computed from the full window either way."New value: +"Detail level of the returned plasma and mag series. \"summary\" returns both series empty and keeps every headline field — about 2 KB whatever the window. \"reduced\" (default) bounds each series to at most 200 records: the window is bucketed by record count and one real measurement is emitted per bucket — the bucket's fastest speed for plasma, its most southward Bz for mag — with the newest record in the window always last. A series already inside the bound is returned untouched, so a default 3-hour call is unaffected. \"full\" returns every record in the window (~1,400 per series over 24 hours, a ~540 KB response). The headline fields — latestPlasma, latestMag, bzStatus, bzMinInWindow, and the window maxima and southward-Bz minutes — are computed from the full window at every resolution."
      • changedInput schema / properties / resolution / enum
        Previous value: -[
        -  "reduced",
        -  "full"
        -]New value: +[
        +  "summary",
        +  "reduced",
        +  "full"
        +]
      • changedOutput schema / anyOf
        Previous value: -[
        -  {
        -    "not": {
        -      "required": [
        -        "error"
        -      ]
        -    },
        -    "required": [
        -      "plasma",
        -      "mag",
        -      "latestPlasma",
        -      "latestMag",
        -      "bzStatus",
        -      "plasmaCount",
        -      "magCount",
        -      "bzMinInWindow",
        -      "bzMinTimeTag",
        -      "latestFeedPlasmaTime",
        -      "latestFeedMagTime",
        -      "feedStalenessHours"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "error"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "plasma",
        +      "mag",
        +      "latestPlasma",
        +      "latestMag",
        +      "bzStatus",
        +      "plasmaCount",
        +      "magCount",
        +      "bzMinInWindow",
        +      "bzMinTimeTag",
        +      "bzSouthMinutesInWindow",
        +      "speedMaxInWindow",
        +      "speedMaxTimeTag",
        +      "densityMaxInWindow",
        +      "btMaxInWindow",
        +      "latestFeedPlasmaTime",
        +      "latestFeedMagTime",
        +      "feedStalenessHours"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / btMaxInWindow
        Added value: +{
        +  "description": "Highest total field magnitude Bt in nT across the whole window, computed before any reduction. Null when the window is empty or every bt in it is null.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / bzSouthMinutesInWindow
        Added value: +{
        +  "description": "Minutes of southward Bz in the window: the count of 1-minute mag records with bzGsm below 0, across the whole window before any reduction. Gaps in the feed are not counted, so it can fall short of the wall-clock time Bz spent southward. 0 on an empty window, an all-null window, or one with no southward Bz.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / densityMaxInWindow
        Added value: +{
        +  "description": "Highest proton density in particles/cm³ across the whole window, computed before any reduction. Null when the window is empty or every densityPerCm3 in it is null.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403). Fails in one attempt. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried for up to 45 seconds in total before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403). Fails in one attempt. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / mag / description
        Previous value: -"Magnetic field measurements (Bx, By, Bz, Bt) within the window, oldest first. Under resolution=\"reduced\" this is at most 200 real records — one per equal-size bucket of the window, each the bucket's most southward Bz — with the newest windowed record last, so the final element always equals latestMag."New value: +"Magnetic field measurements (Bx, By, Bz, Bt) within the window, oldest first. Under resolution=\"reduced\" this is at most 200 real records — one per equal-size bucket of the window, each the bucket's most southward Bz — with the newest windowed record last, so the final element always equals latestMag. Empty under resolution=\"summary\"."
      • changedOutput schema / properties / magCount / description
        Previous value: -"Number of magnetic field records in the mag array. Equal to the records in the window at full resolution; under a reduction it is the emitted count, and magWindowRecords carries the pre-reduction total."New value: +"Number of magnetic field records in the mag array. Equal to the records in the window at full resolution; under a reduction it is the emitted count, and magWindowRecords carries the pre-reduction total. Under resolution=\"summary\" the array is empty and this is the records the window held."
      • changedOutput schema / properties / magWindowRecords / description
        Previous value: -"Magnetic field records the window held before reduction. Present only when a reduction was applied to either series."New value: +"Magnetic field records the window held before reduction. Present only when a reduction was applied to either series, or under resolution=\"summary\"."
      • changedOutput schema / properties / notice / description
        Previous value: -"Guidance on what shaped this response: that the requested window returned no plasma or magnetic field records — naming the newest record the feed carries, or reporting that the feed itself returned nothing from an active spacecraft — and that a series was bounded to 200 records, with the per-series factors."New value: +"Guidance on what shaped this response: that the requested window returned no plasma or magnetic field records — naming the newest record the feed carries, or reporting that the feed itself returned nothing from an active spacecraft — that a series was bounded to 200 records, with the per-series factors, or that resolution=\"summary\" omitted both series."
      • changedOutput schema / properties / plasma / description
        Previous value: -"Plasma measurements (speed, density, temperature) within the window, oldest first. Under resolution=\"reduced\" this is at most 200 real records — one per equal-size bucket of the window, each the bucket's fastest speed — with the newest windowed record last."New value: +"Plasma measurements (speed, density, temperature) within the window, oldest first. Under resolution=\"reduced\" this is at most 200 real records — one per equal-size bucket of the window, each the bucket's fastest speed — with the newest windowed record last. Empty under resolution=\"summary\"."
      • changedOutput schema / properties / plasmaCount / description
        Previous value: -"Number of plasma records in the plasma array. Equal to the records in the window at full resolution; under a reduction it is the emitted count, and plasmaWindowRecords carries the pre-reduction total."New value: +"Number of plasma records in the plasma array. Equal to the records in the window at full resolution; under a reduction it is the emitted count, and plasmaWindowRecords carries the pre-reduction total. Under resolution=\"summary\" the array is empty and this is the records the window held."
      • changedOutput schema / properties / plasmaWindowRecords / description
        Previous value: -"Plasma records the window held before reduction. Present only when a reduction was applied to either series."New value: +"Plasma records the window held before reduction. Present only when a reduction was applied to either series, or under resolution=\"summary\"."
      • addedOutput schema / properties / speedMaxInWindow
        Added value: +{
        +  "description": "Highest solar wind speed in km/s across the whole window, computed before any reduction. Null when the window is empty or every speedKmS in it is null.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / speedMaxTimeTag
        Added value: +{
        +  "description": "ISO 8601 time tag of the record that carried speedMaxInWindow. Null whenever speedMaxInWindow is null.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
  3. 1 tool update
    • Changednoaa_spaceweather_get_aurora_forecast2 fields changed
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403). Fails in one attempt. `invalid_coordinates`: One coordinate provided without the other. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403), or a coordinate lookup finds no parseable Forecast Time in the feed. Fails in one attempt. `invalid_coordinates`: One coordinate provided without the other. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / localLookup / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "auroraPercent": {
        -        "description": "Aurora probability at the nearest grid point (0–100%).",
        -        "type": "number"
        -      },
        -      "geomagneticLatitude": {
        -        "description": "Centered-dipole geomagnetic latitude the requested coordinates convert to (degrees, −90 to 90). Aurora bands are geomagnetic, so this — not the geographic latitude — is what minKpRequired and the verdict are derived from. It can differ from the geographic latitude by up to ±9.2° in either direction.",
        -        "type": "number"
        -      },
        -      "gridLatitude": {
        -        "description": "Nearest OVATION grid latitude.",
        -        "type": "number"
        -      },
        -      "gridLongitude": {
        -        "description": "Nearest OVATION grid longitude.",
        -        "type": "number"
        -      },
        -      "minGScale": {
        -        "description": "NOAA G level matching minKpRequired (1–5), 0 inside the quiet-time auroral oval where no storm is needed, and null below 40° geomagnetic where no storm level reaches.",
        -        "type": [
        -          "number",
        -          "null"
        -        ]
        -      },
        -      "minKpRequired": {
        -        "description": "Minimum Kp for aurora at this geomagnetic latitude — the floor of the band, in SWPC thirds (4.67, 5.67, 6.67, 7.67, 9.00), or 0 inside the quiet-time auroral oval above 65°. Reported as 9 where no storm level reaches, which minGScale=null distinguishes from a genuine G5 threshold. The 60° G1 band is this server’s interpolation between the oval edge and NOAA’s G2 figure; the rest are the NOAA scales page figures.",
        -        "type": "number"
        -      },
        -      "requestedLatitude": {
        -        "description": "Geographic latitude supplied in the request (degrees, −90 to 90).",
        -        "type": "number"
        -      },
        -      "requestedLongitude": {
        -        "description": "Geographic longitude supplied in the request (degrees, −180 to 180).",
        -        "type": "number"
        -      },
        -      "verdict": {
        -        "description": "Plain-language visibility verdict at this geomagnetic latitude, e.g. \"Good aurora chance (42%) — Kp≥6.67 (G3) needed at 51.2° geomagnetic latitude.\"",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "requestedLatitude",
        -      "requestedLongitude",
        -      "geomagneticLatitude",
        -      "gridLatitude",
        -      "gridLongitude",
        -      "auroraPercent",
        -      "minKpRequired",
        -      "minGScale",
        -      "verdict"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "auroraPercent": {
        +        "description": "Aurora probability at the nearest grid point (0–100%).",
        +        "type": "number"
        +      },
        +      "darkness": {
        +        "description": "Sky darkness at the requested coordinates at forecastTime, from sunElevationDeg: day at 0° and above, civil_twilight from −6° up to 0°, nautical_twilight from −12° up to −6°, dark below −12°.",
        +        "enum": [
        +          "day",
        +          "civil_twilight",
        +          "nautical_twilight",
        +          "dark"
        +        ],
        +        "type": "string"
        +      },
        +      "geomagneticLatitude": {
        +        "description": "Centered-dipole geomagnetic latitude the requested coordinates convert to (degrees, −90 to 90). Aurora bands are geomagnetic, so this — not the geographic latitude — is what minKpRequired and the verdict are derived from. It can differ from the geographic latitude by up to ±9.2° in either direction.",
        +        "type": "number"
        +      },
        +      "gridLatitude": {
        +        "description": "Nearest OVATION grid latitude.",
        +        "type": "number"
        +      },
        +      "gridLongitude": {
        +        "description": "Nearest OVATION grid longitude.",
        +        "type": "number"
        +      },
        +      "horizonDistanceKm": {
        +        "description": "Great-circle distance from the requested point to the cell carrying horizonMaxPercent, in km. Null when horizonMaxPercent is null.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "horizonMaxLatitude": {
        +        "description": "Grid latitude of the cell carrying horizonMaxPercent (degrees); the nearest such cell when several tie. Null when horizonMaxPercent is null.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "horizonMaxPercent": {
        +        "description": "Highest aurora probability (0–100%) among grid cells poleward of gridLatitude, within ±2° longitude and 1000 km of the requested point. Null when no grid cell lies in that window, which on the full grid happens only when gridLatitude is ±90.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "minGScale": {
        +        "description": "NOAA G level matching minKpRequired (1–5), 0 inside the quiet-time auroral oval where no storm is needed, and null below 40° geomagnetic where no storm level reaches.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "minKpRequired": {
        +        "description": "Minimum Kp for aurora at this geomagnetic latitude — the floor of the band, in SWPC thirds (4.67, 5.67, 6.67, 7.67, 9.00), or 0 inside the quiet-time auroral oval above 65°. Reported as 9 where no storm level reaches, which minGScale=null distinguishes from a genuine G5 threshold. The 60° G1 band is this server’s interpolation between the oval edge and NOAA’s G2 figure; the rest are the NOAA scales page figures.",
        +        "type": "number"
        +      },
        +      "requestedLatitude": {
        +        "description": "Geographic latitude supplied in the request (degrees, −90 to 90).",
        +        "type": "number"
        +      },
        +      "requestedLongitude": {
        +        "description": "Geographic longitude supplied in the request (degrees, −180 to 180).",
        +        "type": "number"
        +      },
        +      "sunElevationDeg": {
        +        "description": "Geometric solar elevation at the requested coordinates at forecastTime, in degrees (−90 to 90, rounded to 0.1°, no refraction correction). Negative when the sun is below the horizon.",
        +        "type": "number"
        +      },
        +      "verdict": {
        +        "description": "Plain-language visibility verdict for the requested coordinates at forecastTime, e.g. \"Good aurora chance (42%) — Kp≥6.67 (G3) needed at 51.2° geomagnetic.\" Opens \"Not visible — daylight\" when darkness is day.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "requestedLatitude",
        +      "requestedLongitude",
        +      "geomagneticLatitude",
        +      "gridLatitude",
        +      "gridLongitude",
        +      "auroraPercent",
        +      "minKpRequired",
        +      "minGScale",
        +      "sunElevationDeg",
        +      "darkness",
        +      "horizonMaxPercent",
        +      "horizonMaxLatitude",
        +      "horizonDistanceKm",
        +      "verdict"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  4. 3 tool updates
    • Changednoaa_spaceweather_get_conditions28 fields changed
      • addedInput schema / properties / include_discussion
        Added value: +{
        +  "default": false,
        +  "description": "Also fetch SWPC's forecaster-written Forecast Discussion, which explains why the forecast looks the way it does (CME versus coronal-hole stream, expected arrival). Costs one extra upstream request.",
        +  "type": "boolean"
        +}
      • changedOutput schema / anyOf
        Previous value: -[
        -  {
        -    "not": {
        -      "required": [
        -        "error"
        -      ]
        -    },
        -    "required": [
        -      "observedAt",
        -      "currentKp",
        -      "currentGScale",
        -      "auroraLatitude",
        -      "today",
        -      "forecast",
        -      "summary"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "error"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "observedAt",
        +      "currentKp",
        +      "currentGScale",
        +      "auroraLatitude",
        +      "today",
        +      "forecast",
        +      "summary",
        +      "discussion"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / discussion
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "SWPC Forecast Discussion — the forecaster's narrative behind the storm scales. Null when include_discussion is false.",
        +      "properties": {
        +        "issued": {
        +          "description": "ISO 8601 UTC time the discussion was issued, from the product's \":Issued:\" line, e.g. \"2026-06-04T12:30:00Z\". Null when the product carries no such line.",
        +          "type": [
        +            "string",
        +            "null"
        +          ]
        +        },
        +        "sections": {
        +          "description": "One entry per topic section, in product order.",
        +          "items": {
        +            "additionalProperties": false,
        +            "description": "One topic section of the discussion — its heading and the forecaster's text.",
        +            "properties": {
        +              "forecast": {
        +                "description": "Forecast text for the next 3 days, or null when the section carries no \".Forecast...\" block.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "summary": {
        +                "description": "Past-24 h summary text, or null when the section carries no \".24 hr Summary...\" text.",
        +                "type": [
        +                  "string",
        +                  "null"
        +                ]
        +              },
        +              "topic": {
        +                "description": "Section heading, e.g. \"Solar Activity\", \"Energetic Particle\", \"Solar Wind\", \"Geospace\".",
        +                "type": "string"
        +              }
        +            },
        +            "required": [
        +              "topic",
        +              "summary",
        +              "forecast"
        +            ],
        +            "type": "object"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "issued",
        +        "sections"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "SWPC Forecast Discussion when include_discussion is true, otherwise null."
        +}
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403), or the scales feed no longer carries its \"0\" (today) period. Fails in one attempt. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403), or a feed answers without the shape it is documented to have — the scales feed no longer carrying its \"0\" (today) period, or the forecast discussion carrying no topic section. Fails in one attempt. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / forecast / description
        Previous value: -"3-day NOAA scale forecast (next 1–3 days)."New value: +"SWPC's 3-day NOAA scale forecast, oldest first. The series starts with today — the same calendar day as observedAt — and covers the next two days."
      • changedOutput schema / properties / forecast / items / description
        Previous value: -"3-day NOAA scale forecast for one calendar day."New value: +"One day of the NOAA scale forecast series."
      • changedOutput schema / properties / forecast / items / properties / G / description
        Previous value: -"Geomagnetic storm scale for this day."New value: +"Geomagnetic storm scale forecast for this day."
      • changedOutput schema / properties / forecast / items / properties / R / description
        Previous value: -"Radio blackout scale for this day."New value: +"Radio blackout outlook for this day."
      • changedOutput schema / properties / forecast / items / properties / R / properties / label / description
        Previous value: -"NOAA scale string, e.g. \"G2\", \"R1\", \"S0\"."New value: +"NOAA scale string, e.g. \"R1\", or null when no level was issued."
      • changedOutput schema / properties / forecast / items / properties / R / properties / label / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • addedOutput schema / properties / forecast / items / properties / R / properties / majorProbPercent
        Added value: +{
        +  "description": "Probability (%) of an R3 or greater strong radio blackout on this day, or null when SWPC issued none.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / forecast / items / properties / R / properties / minorProbPercent
        Added value: +{
        +  "description": "Probability (%) of an R1–R2 minor-to-moderate radio blackout on this day, or null when SWPC issued none.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / forecast / items / properties / R / properties / scale / description
        Previous value: -"Storm scale level 0–5."New value: +"R-scale level 0–5, or null — SWPC forecasts a radio-blackout probability for a future day rather than a level."
      • changedOutput schema / properties / forecast / items / properties / R / properties / scale / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / forecast / items / properties / R / properties / text / description
        Previous value: -"Human-readable scale descriptor, e.g. \"Moderate\". Empty when scale is 0."New value: +"Human-readable R-scale descriptor, or null when no level was issued."
      • changedOutput schema / properties / forecast / items / properties / R / properties / text / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / forecast / items / properties / R / required
        Previous value: -[
        -  "scale",
        -  "text",
        -  "label"
        -]New value: +[
        +  "scale",
        +  "text",
        +  "label",
        +  "minorProbPercent",
        +  "majorProbPercent"
        +]
      • changedOutput schema / properties / forecast / items / properties / S / description
        Previous value: -"Solar radiation storm scale for this day."New value: +"Solar radiation storm outlook for this day."
      • changedOutput schema / properties / forecast / items / properties / S / properties / label / description
        Previous value: -"NOAA scale string, e.g. \"G2\", \"R1\", \"S0\"."New value: +"NOAA scale string, e.g. \"S1\", or null when no level was issued."
      • changedOutput schema / properties / forecast / items / properties / S / properties / label / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • addedOutput schema / properties / forecast / items / properties / S / properties / probPercent
        Added value: +{
        +  "description": "Probability (%) of an S1 or greater solar radiation storm on this day, or null when SWPC issued none.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / forecast / items / properties / S / properties / scale / description
        Previous value: -"Storm scale level 0–5."New value: +"S-scale level 0–5, or null — SWPC forecasts a radiation-storm probability for a future day rather than a level."
      • changedOutput schema / properties / forecast / items / properties / S / properties / scale / type
        Previous value: -"number"New value: +[
        +  "number",
        +  "null"
        +]
      • changedOutput schema / properties / forecast / items / properties / S / properties / text / description
        Previous value: -"Human-readable scale descriptor, e.g. \"Moderate\". Empty when scale is 0."New value: +"Human-readable S-scale descriptor, or null when no level was issued."
      • changedOutput schema / properties / forecast / items / properties / S / properties / text / type
        Previous value: -"string"New value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / forecast / items / properties / S / required
        Previous value: -[
        -  "scale",
        -  "text",
        -  "label"
        -]New value: +[
        +  "scale",
        +  "text",
        +  "label",
        +  "probPercent"
        +]
      • changedOutput schema / properties / forecast / items / properties / date / description
        Previous value: -"Forecast date string."New value: +"Forecast date string, e.g. \"2026-06-04\"."
      • changedOutput schema / properties / observedAt / description
        Previous value: -"UTC date and time of the NOAA scales data period this snapshot reflects, e.g. \"2026-06-04 15:00:00\"."New value: +"ISO 8601 UTC date and time of the NOAA scales data period this snapshot reflects, e.g. \"2026-06-04T15:00:00Z\"."
    • Changednoaa_spaceweather_get_solar_activity9 fields changed
      • addedInput schema / properties / flare_hours
        Added value: +{
        +  "default": 24,
        +  "description": "How far back to report discrete flare events, in hours before now, filtered on each flare’s onset time (1–168, default 24). The feed keeps a rolling 7 days, so 168 returns everything it carries. When the window comes back empty, the response names the newest flare the feed holds.",
        +  "maximum": 168,
        +  "minimum": 1,
        +  "type": "integer"
        +}
      • changedOutput schema / anyOf
        Previous value: -[
        -  {
        -    "not": {
        -      "required": [
        -        "error"
        -      ]
        -    },
        -    "required": [
        -      "latestXray",
        -      "recentXray",
        -      "probabilities",
        -      "latestProton",
        -      "sScale",
        -      "sScaleText",
        -      "activeRegions",
        -      "fetchedAt"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "error"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "latestXray",
        +      "recentXray",
        +      "recentFlares",
        +      "f107",
        +      "probabilities",
        +      "latestProton",
        +      "sScale",
        +      "sScaleText",
        +      "activeRegions",
        +      "fetchedAt"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / f107
        Added value: +{
        +  "anyOf": [
        +    {
        +      "additionalProperties": false,
        +      "description": "Latest daily F10.7 index.",
        +      "properties": {
        +        "fluxSfu": {
        +          "description": "10.7 cm solar radio flux in solar flux units (sfu), measured at 2800 MHz.",
        +          "type": "number"
        +        },
        +        "ninetyDayMeanSfu": {
        +          "description": "90-day mean flux in sfu; null when the selected record does not carry one.",
        +          "type": [
        +            "number",
        +            "null"
        +          ]
        +        },
        +        "observedTime": {
        +          "description": "ISO 8601 UTC time of the observation (normalized from the feed's Z-less tag). Up to ~24 h old — read it rather than treating the value as now.",
        +          "type": "string"
        +        },
        +        "reportingSchedule": {
        +          "description": "Which of the three daily Penticton reports this is: \"Morning\", \"Noon\", or \"Afternoon\".",
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "observedTime",
        +        "fluxSfu",
        +        "ninetyDayMeanSfu",
        +        "reportingSchedule"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Latest daily F10.7 solar radio flux — the Noon Penticton report, which is the value SWPC reports for the day. Null when the feed carries no such record."
        +}
      • changedOutput schema / properties / latestXray / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "One GOES X-ray flux reading with flare class.",
        -    "properties": {
        -      "flareClass": {
        -        "description": "Flare classification letter: A, B, C, M, or X.",
        -        "type": "string"
        -      },
        -      "fluxWm2": {
        -        "description": "X-ray flux in W/m² (0.1-0.8nm long channel from GOES), formatted as scientific notation with 2 significant digits, e.g. \"1.4e-6 W/m²\".",
        -        "type": "string"
        -      },
        -      "satellite": {
        -        "description": "GOES satellite number.",
        -        "type": "number"
        -      },
        -      "timeTag": {
        -        "description": "ISO 8601 measurement time tag.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "timeTag",
        -      "fluxWm2",
        -      "flareClass",
        -      "satellite"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "One GOES X-ray flux reading with flare class.",
        +    "properties": {
        +      "flareClass": {
        +        "description": "Flare classification letter: A, B, C, M, or X.",
        +        "type": "string"
        +      },
        +      "flareClassFull": {
        +        "description": "Flare class with magnitude, e.g. \"B2.5\" — null below the A1 floor of 1e-8 W/m² (zero and negative readings included), where SWPC's class scheme defines none.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "fluxWm2": {
        +        "description": "X-ray flux in W/m² (0.1-0.8nm long channel from GOES), formatted as scientific notation with 2 significant digits, e.g. \"1.4e-6 W/m²\".",
        +        "type": "string"
        +      },
        +      "fluxWm2Value": {
        +        "description": "Same quantity as fluxWm2, unformatted, so it can be compared without parsing the display string.",
        +        "type": "number"
        +      },
        +      "satellite": {
        +        "description": "GOES satellite number.",
        +        "type": "number"
        +      },
        +      "timeTag": {
        +        "description": "ISO 8601 measurement time tag.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "timeTag",
        +      "fluxWm2",
        +      "fluxWm2Value",
        +      "flareClass",
        +      "flareClassFull",
        +      "satellite"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Guidance when the requested flare_hours window returned no flare events — names the newest flare the feed carries, or reports that the feed itself returned none.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / recentFlares
        Added value: +{
        +  "description": "Discrete flare events whose onset falls within the flare_hours window, oldest first. Empty when no flare began in the window.",
        +  "items": {
        +    "additionalProperties": false,
        +    "description": "One discrete GOES X-ray flare event.",
        +    "properties": {
        +      "beginClass": {
        +        "description": "GOES class with magnitude at onset, e.g. \"B4.2\".",
        +        "type": "string"
        +      },
        +      "beginTime": {
        +        "description": "ISO 8601 UTC onset time (SWPC begin_time).",
        +        "type": "string"
        +      },
        +      "endClass": {
        +        "description": "GOES class with magnitude at decay; null while the flare is still in progress.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "endTime": {
        +        "description": "ISO 8601 UTC decay time; null while the flare is still in progress.",
        +        "type": [
        +          "string",
        +          "null"
        +        ]
        +      },
        +      "maxClass": {
        +        "description": "Peak GOES class with magnitude, e.g. \"M5.2\" — SWPC max_class, read as published.",
        +        "type": "string"
        +      },
        +      "maxTime": {
        +        "description": "ISO 8601 UTC time of peak flux (SWPC max_time).",
        +        "type": "string"
        +      },
        +      "peakFluxWm2": {
        +        "description": "Peak long-channel (0.1–0.8 nm) flux in W/m² — SWPC max_xrlong.",
        +        "type": "number"
        +      },
        +      "rScale": {
        +        "description": "NOAA R-scale level implied by the peak flux (0–5); 0 means below the R1 threshold.",
        +        "type": "number"
        +      },
        +      "satellite": {
        +        "description": "GOES satellite number the record came from.",
        +        "type": "number"
        +      }
        +    },
        +    "required": [
        +      "beginTime",
        +      "maxTime",
        +      "endTime",
        +      "beginClass",
        +      "maxClass",
        +      "endClass",
        +      "peakFluxWm2",
        +      "rScale",
        +      "satellite"
        +    ],
        +    "type": "object"
        +  },
        +  "type": "array"
        +}
      • addedOutput schema / properties / recentXray / items / properties / flareClassFull
        Added value: +{
        +  "description": "Flare class with magnitude, e.g. \"B2.5\" — null below the A1 floor of 1e-8 W/m² (zero and negative readings included), where SWPC's class scheme defines none.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / recentXray / items / properties / fluxWm2Value
        Added value: +{
        +  "description": "Same quantity as fluxWm2, unformatted, so it can be compared without parsing the display string.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / recentXray / items / required
        Previous value: -[
        -  "timeTag",
        -  "fluxWm2",
        -  "flareClass",
        -  "satellite"
        -]New value: +[
        +  "timeTag",
        +  "fluxWm2",
        +  "fluxWm2Value",
        +  "flareClass",
        +  "flareClassFull",
        +  "satellite"
        +]
    • Changednoaa_spaceweather_get_solar_wind14 fields changed
      • addedInput schema / properties / resolution
        Added value: +{
        +  "default": "reduced",
        +  "description": "Detail level of the returned plasma and mag series. \"reduced\" (default) bounds each series to at most 200 records: the window is bucketed by record count and one real measurement is emitted per bucket — the bucket's fastest speed for plasma, its most southward Bz for mag — with the newest record in the window always last. A series already inside the bound is returned untouched, so a default 3-hour call is unaffected. \"full\" returns every record in the window (~1,400 per series over 24 hours, a ~540 KB response). bzStatus, bzMinInWindow, latestPlasma, and latestMag are computed from the full window either way.",
        +  "enum": [
        +    "reduced",
        +    "full"
        +  ],
        +  "type": "string"
        +}
      • changedInput schema / properties / window_hours / description
        Previous value: -"Hours of recent solar wind history to return (1–168, default 3). Records update ~every 1 min, but the feed only carries roughly the last 24 hours — a larger window returns the whole feed, not more history. When a window comes back empty, feedStalenessHours and latestFeedPlasmaTime/latestFeedMagTime report how current the feed actually is."New value: +"Hours of recent solar wind history to return (1–168, default 3). Records update ~every 1 min, but the feed only carries roughly the last 24 hours — a larger window returns the whole feed, not more history, and at the default resolution the returned series stay bounded to 200 records each rather than growing with the window. When a window comes back empty, feedStalenessHours and latestFeedPlasmaTime/latestFeedMagTime report how current the feed actually is."
      • changedOutput schema / anyOf
        Previous value: -[
        -  {
        -    "not": {
        -      "required": [
        -        "error"
        -      ]
        -    },
        -    "required": [
        -      "plasma",
        -      "mag",
        -      "latestPlasma",
        -      "latestMag",
        -      "bzStatus",
        -      "plasmaCount",
        -      "magCount",
        -      "latestFeedPlasmaTime",
        -      "latestFeedMagTime",
        -      "feedStalenessHours"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "error"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "plasma",
        +      "mag",
        +      "latestPlasma",
        +      "latestMag",
        +      "bzStatus",
        +      "plasmaCount",
        +      "magCount",
        +      "bzMinInWindow",
        +      "bzMinTimeTag",
        +      "latestFeedPlasmaTime",
        +      "latestFeedMagTime",
        +      "feedStalenessHours"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / bzMinInWindow
        Added value: +{
        +  "description": "Lowest (most southward) Bz reading in nT across the whole window, computed before any reduction — the number storm work reads next to the latest value. Null when the window is empty or every bzGsm in it is null.",
        +  "type": [
        +    "number",
        +    "null"
        +  ]
        +}
      • addedOutput schema / properties / bzMinTimeTag
        Added value: +{
        +  "description": "ISO 8601 time tag of the record that carried bzMinInWindow. Null whenever bzMinInWindow is null.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / mag / description
        Previous value: -"Magnetic field measurements (Bx, By, Bz, Bt) within the window, oldest first."New value: +"Magnetic field measurements (Bx, By, Bz, Bt) within the window, oldest first. Under resolution=\"reduced\" this is at most 200 real records — one per equal-size bucket of the window, each the bucket's most southward Bz — with the newest windowed record last, so the final element always equals latestMag."
      • addedOutput schema / properties / magBucketRecords
        Added value: +{
        +  "description": "Magnetic field records per emitted record — the bucket size the window was reduced by, or 1 when this series was returned untouched. The two series differ in length, so each carries its own factor. Present only when a reduction was applied to either series.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / magCount / description
        Previous value: -"Number of magnetic field records in the mag array, spanning the requested window."New value: +"Number of magnetic field records in the mag array. Equal to the records in the window at full resolution; under a reduction it is the emitted count, and magWindowRecords carries the pre-reduction total."
      • addedOutput schema / properties / magWindowRecords
        Added value: +{
        +  "description": "Magnetic field records the window held before reduction. Present only when a reduction was applied to either series.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / notice / description
        Previous value: -"Guidance when the requested window returned no plasma or magnetic field records — names the newest record the feed carries, or reports that the feed itself returned nothing from an active spacecraft."New value: +"Guidance on what shaped this response: that the requested window returned no plasma or magnetic field records — naming the newest record the feed carries, or reporting that the feed itself returned nothing from an active spacecraft — and that a series was bounded to 200 records, with the per-series factors."
      • changedOutput schema / properties / plasma / description
        Previous value: -"Plasma measurements (speed, density, temperature) within the window, oldest first."New value: +"Plasma measurements (speed, density, temperature) within the window, oldest first. Under resolution=\"reduced\" this is at most 200 real records — one per equal-size bucket of the window, each the bucket's fastest speed — with the newest windowed record last."
      • addedOutput schema / properties / plasmaBucketRecords
        Added value: +{
        +  "description": "Plasma records per emitted record — the bucket size the window was reduced by, or 1 when this series was returned untouched. Records rather than a minute cadence: the feed skips minutes, so a bucket spans a variable stretch of wall-clock time. Present only when a reduction was applied to either series.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / plasmaCount / description
        Previous value: -"Number of plasma records in the plasma array, spanning the requested window."New value: +"Number of plasma records in the plasma array. Equal to the records in the window at full resolution; under a reduction it is the emitted count, and plasmaWindowRecords carries the pre-reduction total."
      • addedOutput schema / properties / plasmaWindowRecords
        Added value: +{
        +  "description": "Plasma records the window held before reduction. Present only when a reduction was applied to either series.",
        +  "type": "number"
        +}
  5. 6 tool updates
    • Changednoaa_spaceweather_get_alerts14 fields changed
      • changedInput schema / properties / active_only / description
        Previous value: -"When true (default), return only in-force Warnings, Watches, and Alerts; exclude Summaries, Other, expired products, and cancellation notices. Set false to return all products, including cancellations (flagged by the cancelled field)."New value: +"When true (default), return only in-force Warnings, Watches, and Alerts. Excluded: Summaries and unrecognized products; products whose validity end has passed; cancellation notices; any product a later cancellation names by serial; and all but the newest record carrying the \"THIS SUPERSEDES ANY/ALL PRIOR WATCHES IN EFFECT\" line. Counts per reason ride in the exclusions enrichment field. Set false to return every product in the window, cancellations included (flagged by the cancelled field)."
      • changedInput schema / properties / max_age_hours / description
        Previous value: -"Maximum age of alerts to return, in hours (default 48). The SWPC feed retains all historical records — this window prevents returning weeks of historical notices as \"active.\""New value: +"How far back to look for products, in hours (default 48). The SWPC feed retains all historical records, so this bounds the candidate set rather than declaring what is current. Under active_only=true a product whose validity end is still in the future is returned even when its issue time falls outside this window — a multi-day Watch would otherwise disappear while a day it forecasts a storm for is still running. Under active_only=false it is literal and cuts at exactly the requested age."
      • changedOutput schema / anyOf
        Previous value: -[
        -  {
        -    "not": {
        -      "required": [
        -        "error"
        -      ]
        -    },
        -    "required": [
        -      "alerts",
        -      "totalCount",
        -      "fetchedAt"
        -    ]
        -  },
        -  {
        -    "required": [
        -      "error"
        -    ]
        -  }
        -]New value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "alerts",
        +      "totalCount",
        +      "activeOnly",
        +      "fetchedAt"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / activeOnly
        Added value: +{
        +  "description": "Echo of the active_only input: true when the records are the in-force set, false when they are every product in the window. Distinguishes an empty in-force result from an empty feed window.",
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / alerts / items / properties / cancelled / description
        Previous value: -"True when this record cancels a previously issued product (\"CANCEL WARNING:\"/\"CANCEL ALERT:\" headline) rather than being in force. Always false when active_only=true, which excludes cancellations; set active_only=false to see them."New value: +"True when this record cancels a previously issued product (\"CANCEL WARNING:\"/\"CANCEL WATCH:\"/\"CANCEL ALERT:\" headline) rather than being in force. Always false when active_only=true, which excludes both the cancellation record and the product it names — a cancelled product carries cancelled: false itself, so this flag does not identify one. Set active_only=false to see cancellations and what they cancelled."
      • addedOutput schema / properties / alerts / items / properties / serialNumber
        Added value: +{
        +  "description": "The record's SWPC \"Serial Number:\" value, e.g. \"1125\"; null when the body carries no such line. A per-message-code counter, not a globally unique ID — it repeats across codes and within one code on a corrected reissue, so quote it together with messageCode. It is the key the \"Cancel Serial Number:\", \"Extension to Serial Number:\", and \"Continuation of Serial Number:\" lines in message point at, which is what makes those chains navigable.",
        +  "type": [
        +    "string",
        +    "null"
        +  ]
        +}
      • changedOutput schema / properties / alerts / items / properties / validTo / description
        Previous value: -"Validity-window end as ISO 8601 UTC, parsed from the message body (\"Valid To\", \"Now Valid Until\", or \"End Time\"); null when the product carries no end line."New value: +"Validity-window end as ISO 8601 UTC. Read from the message body's \"Valid To\", \"Now Valid Until\", or \"End Time\" label when the product states one. A Watch states none, so its end is derived from the \"Highest Storm Level Predicted by Day:\" list instead: the instant the last listed UTC day forecasting a storm ends (a trailing \"None\" day is a forecast of quiet, not coverage), so a Watch listing Sep 17 as its last storm day ends at 2026-09-18T00:00:00Z. Null when nothing in the body states or implies an end — a point-in-time Alert, or a Watch forecasting no storm on any listed day."
      • changedOutput schema / properties / alerts / items / required
        Previous value: -[
        -  "productId",
        -  "messageCode",
        -  "productType",
        -  "level",
        -  "noaaScale",
        -  "cancelled",
        -  "phenomenon",
        -  "issueDatetime",
        -  "validFrom",
        -  "validTo",
        -  "message"
        -]New value: +[
        +  "productId",
        +  "messageCode",
        +  "productType",
        +  "level",
        +  "noaaScale",
        +  "cancelled",
        +  "serialNumber",
        +  "phenomenon",
        +  "issueDatetime",
        +  "validFrom",
        +  "validTo",
        +  "message"
        +]
      • addedOutput schema / properties / appliedCutoff
        Added value: +{
        +  "description": "ISO 8601 UTC instant the applied window starts at: a product issued before this is outside it. Present only under active_only=true.",
        +  "type": "string"
        +}
      • addedOutput schema / properties / appliedWindowHours
        Added value: +{
        +  "description": "The max_age_hours window as applied, echoed so a caller can see what bounded the candidate set. Present only under active_only=true, where a future validity end can keep an older product in scope.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC endpoint returns non-OK status or times out after retries. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403). Fails in one attempt. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "feed_unavailable"
        -]New value: +[
        +  "feed_unavailable",
        +  "feed_moved"
        +]
      • addedOutput schema / properties / exclusions
        Added value: +{
        +  "additionalProperties": false,
        +  "description": "How many products active_only=true left out, by reason. Reasons overlap, so each excluded record is counted under the first that applies, in this field order — these counts plus totalCount equal the number of records the feed carried. Emitted only when something was excluded, and never under active_only=false. Use it to tell \"space weather is quiet\" from \"everything was filtered\" without a second active_only=false call.",
        +  "properties": {
        +    "agedOut": {
        +      "description": "Issued outside the applied window with no validity end still ahead.",
        +      "type": "number"
        +    },
        +    "cancellationRecord": {
        +      "description": "Cancellation notices themselves.",
        +      "type": "number"
        +    },
        +    "cancelledBySerial": {
        +      "description": "Named by a later cancellation's \"Cancel Serial Number:\" under the same code.",
        +      "type": "number"
        +    },
        +    "productType": {
        +      "description": "Summaries and unrecognized products, which are never in force.",
        +      "type": "number"
        +    },
        +    "superseded": {
        +      "description": "Carries the supersede line but is not the newest record that does.",
        +      "type": "number"
        +    },
        +    "validityElapsed": {
        +      "description": "Validity end already passed, with nothing newer cancelling or superseding it.",
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "agedOut",
        +    "productType",
        +    "cancellationRecord",
        +    "cancelledBySerial",
        +    "superseded",
        +    "validityElapsed"
        +  ],
        +  "type": "object"
        +}
      • changedOutput schema / properties / notice / description
        Previous value: -"Status notice when no alerts are active."New value: +"Status notice when no products were returned."
    • Changednoaa_spaceweather_get_aurora_forecast3 fields changed
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC endpoint returns non-OK status or times out after retries. `invalid_coordinates`: One coordinate provided without the other. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403). Fails in one attempt. `invalid_coordinates`: One coordinate provided without the other. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "feed_unavailable",
        -  "invalid_coordinates"
        -]New value: +[
        +  "feed_unavailable",
        +  "feed_moved",
        +  "invalid_coordinates"
        +]
      • changedOutput schema / properties / localLookup / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "auroraPercent": {
        -        "description": "Aurora probability at the nearest grid point (0–100%).",
        -        "type": "number"
        -      },
        -      "gridLatitude": {
        -        "description": "Nearest OVATION grid latitude.",
        -        "type": "number"
        -      },
        -      "gridLongitude": {
        -        "description": "Nearest OVATION grid longitude.",
        -        "type": "number"
        -      },
        -      "minKpRequired": {
        -        "description": "Minimum Kp threshold for aurora visibility at this latitude.",
        -        "type": "number"
        -      },
        -      "requestedLatitude": {
        -        "description": "Geographic latitude supplied in the request (degrees, −90 to 90).",
        -        "type": "number"
        -      },
        -      "requestedLongitude": {
        -        "description": "Geographic longitude supplied in the request (degrees, −180 to 180).",
        -        "type": "number"
        -      },
        -      "verdict": {
        -        "description": "Plain-language visibility verdict, e.g. \"Good aurora chance (42%) — Kp≥6 needed at this latitude.\"",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "requestedLatitude",
        -      "requestedLongitude",
        -      "gridLatitude",
        -      "gridLongitude",
        -      "auroraPercent",
        -      "minKpRequired",
        -      "verdict"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "auroraPercent": {
        +        "description": "Aurora probability at the nearest grid point (0–100%).",
        +        "type": "number"
        +      },
        +      "geomagneticLatitude": {
        +        "description": "Centered-dipole geomagnetic latitude the requested coordinates convert to (degrees, −90 to 90). Aurora bands are geomagnetic, so this — not the geographic latitude — is what minKpRequired and the verdict are derived from. It can differ from the geographic latitude by up to ±9.2° in either direction.",
        +        "type": "number"
        +      },
        +      "gridLatitude": {
        +        "description": "Nearest OVATION grid latitude.",
        +        "type": "number"
        +      },
        +      "gridLongitude": {
        +        "description": "Nearest OVATION grid longitude.",
        +        "type": "number"
        +      },
        +      "minGScale": {
        +        "description": "NOAA G level matching minKpRequired (1–5), 0 inside the quiet-time auroral oval where no storm is needed, and null below 40° geomagnetic where no storm level reaches.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "minKpRequired": {
        +        "description": "Minimum Kp for aurora at this geomagnetic latitude — the floor of the band, in SWPC thirds (4.67, 5.67, 6.67, 7.67, 9.00), or 0 inside the quiet-time auroral oval above 65°. Reported as 9 where no storm level reaches, which minGScale=null distinguishes from a genuine G5 threshold. The 60° G1 band is this server’s interpolation between the oval edge and NOAA’s G2 figure; the rest are the NOAA scales page figures.",
        +        "type": "number"
        +      },
        +      "requestedLatitude": {
        +        "description": "Geographic latitude supplied in the request (degrees, −90 to 90).",
        +        "type": "number"
        +      },
        +      "requestedLongitude": {
        +        "description": "Geographic longitude supplied in the request (degrees, −180 to 180).",
        +        "type": "number"
        +      },
        +      "verdict": {
        +        "description": "Plain-language visibility verdict at this geomagnetic latitude, e.g. \"Good aurora chance (42%) — Kp≥6.67 (G3) needed at 51.2° geomagnetic latitude.\"",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "requestedLatitude",
        +      "requestedLongitude",
        +      "geomagneticLatitude",
        +      "gridLatitude",
        +      "gridLongitude",
        +      "auroraPercent",
        +      "minKpRequired",
        +      "minGScale",
        +      "verdict"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Changednoaa_spaceweather_get_conditions2 fields changed
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC endpoint returns non-OK status or times out after retries. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403), or the scales feed no longer carries its \"0\" (today) period. Fails in one attempt. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "feed_unavailable"
        -]New value: +[
        +  "feed_unavailable",
        +  "feed_moved"
        +]
    • Changednoaa_spaceweather_get_kp_index5 fields changed
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC endpoint returns non-OK status or times out after retries. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403). Fails in one attempt. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "feed_unavailable"
        -]New value: +[
        +  "feed_unavailable",
        +  "feed_moved"
        +]
      • changedOutput schema / properties / forecast / items / properties / gScale / description
        Previous value: -"NOAA G-scale equivalent (0–5) derived from Kp."New value: +"NOAA G-scale equivalent (0–5) derived from Kp, on the same minus-third band floors SWPC uses — it agrees with noaaScale when the feed states one."
      • changedOutput schema / properties / observed / items / properties / auroraLatitude / description
        Previous value: -"Aurora visibility guidance for this Kp level."New value: +"Aurora visibility guidance for this Kp level, in geomagnetic latitude."
      • changedOutput schema / properties / observed / items / properties / gScale / description
        Previous value: -"NOAA G-scale equivalent (0–5)."New value: +"NOAA G-scale equivalent (0–5). Each level starts at its \"minus\" third — G1 at Kp 4.67, G2 at 5.67, G3 at 6.67, G4 at 7.67 (through 8.67), G5 at 9."
    • Changednoaa_spaceweather_get_solar_activity7 fields changed
      • changedOutput schema / properties / activeRegions / items / properties / cFlareProbability / description
        Previous value: -"Probability of a C-class flare (%)."New value: +"Probability of a C-class flare from this region (%), for the UTC day AFTER observedDate — SWPC issues each day’s region probabilities against the previous day’s observation."
      • changedOutput schema / properties / activeRegions / items / properties / mFlareProbability / description
        Previous value: -"Probability of an M-class flare (%)."New value: +"Probability of an M-class flare from this region (%), for the UTC day AFTER observedDate — SWPC issues each day’s region probabilities against the previous day’s observation."
      • changedOutput schema / properties / activeRegions / items / properties / observedDate / description
        Previous value: -"Date this region data was observed."New value: +"UTC date this region was observed. The four probability fields on this record cover the following day, not this one."
      • changedOutput schema / properties / activeRegions / items / properties / protonProbability / description
        Previous value: -"Probability of a proton event (%)."New value: +"Probability of a proton event from this region (%), for the UTC day AFTER observedDate — SWPC issues each day’s region probabilities against the previous day’s observation."
      • changedOutput schema / properties / activeRegions / items / properties / xFlareProbability / description
        Previous value: -"Probability of an X-class flare (%)."New value: +"Probability of an X-class flare from this region (%), for the UTC day AFTER observedDate — SWPC issues each day’s region probabilities against the previous day’s observation."
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC endpoint returns non-OK status or times out after retries. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403). Fails in one attempt. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "feed_unavailable"
        -]New value: +[
        +  "feed_unavailable",
        +  "feed_moved"
        +]
    • Changednoaa_spaceweather_get_solar_wind2 fields changed
      • changedOutput schema / properties / error / properties / data / properties / reason / description
        Previous value: -"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC endpoint returns non-OK status or times out after retries. Other values are possible when a failure originates below the handler."New value: +"Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403). Fails in one attempt. Other values are possible when a failure originates below the handler."
      • changedOutput schema / properties / error / properties / data / properties / reason / examples
        Previous value: -[
        -  "feed_unavailable"
        -]New value: +[
        +  "feed_unavailable",
        +  "feed_moved"
        +]
  6. 3 tool updates
    • Changednoaa_spaceweather_get_alerts6 fields changed
      • removedOutput schema / properties / alerts / items / properties / noaaScale / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / alerts / items / properties / noaaScale / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / alerts / items / properties / validFrom / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / alerts / items / properties / validFrom / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / alerts / items / properties / validTo / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / alerts / items / properties / validTo / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changednoaa_spaceweather_get_kp_index2 fields changed
      • removedOutput schema / properties / forecast / items / properties / noaaScale / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / forecast / items / properties / noaaScale / type
        Added value: +[
        +  "string",
        +  "null"
        +]
    • Changednoaa_spaceweather_get_solar_wind22 fields changed
      • removedOutput schema / properties / feedStalenessHours / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / feedStalenessHours / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / latestFeedMagTime / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / latestFeedMagTime / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • removedOutput schema / properties / latestFeedPlasmaTime / anyOf
        Removed value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / latestFeedPlasmaTime / type
        Added value: +[
        +  "string",
        +  "null"
        +]
      • changedOutput schema / properties / latestMag / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "One magnetic field measurement from the active L1 spacecraft.",
        -    "properties": {
        -      "bt": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Total field magnitude Bt (nT). Null when the feed omits the value."
        -      },
        -      "bxGsm": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Bx component in GSM coordinates (nT). Null when the feed omits the value."
        -      },
        -      "byGsm": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "By component in GSM coordinates (nT). Null when the feed omits the value."
        -      },
        -      "bzGsm": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Bz component in GSM coordinates (nT). Southward (negative) drives geomagnetic storms. Null when the feed omits the value."
        -      },
        -      "source": {
        -        "description": "Spacecraft that reported this measurement, as named by the feed, e.g. \"SOLAR1\".",
        -        "type": "string"
        -      },
        -      "timeTag": {
        -        "description": "ISO 8601 measurement time tag.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "timeTag",
        -      "source",
        -      "bxGsm",
        -      "byGsm",
        -      "bzGsm",
        -      "bt"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "One magnetic field measurement from the active L1 spacecraft.",
        +    "properties": {
        +      "bt": {
        +        "description": "Total field magnitude Bt (nT). Null when the feed omits the value.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "bxGsm": {
        +        "description": "Bx component in GSM coordinates (nT). Null when the feed omits the value.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "byGsm": {
        +        "description": "By component in GSM coordinates (nT). Null when the feed omits the value.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "bzGsm": {
        +        "description": "Bz component in GSM coordinates (nT). Southward (negative) drives geomagnetic storms. Null when the feed omits the value.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "source": {
        +        "description": "Spacecraft that reported this measurement, as named by the feed, e.g. \"SOLAR1\".",
        +        "type": "string"
        +      },
        +      "timeTag": {
        +        "description": "ISO 8601 measurement time tag.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "timeTag",
        +      "source",
        +      "bxGsm",
        +      "byGsm",
        +      "bzGsm",
        +      "bt"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / latestPlasma / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "One plasma measurement from the active L1 spacecraft.",
        -    "properties": {
        -      "densityPerCm3": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Proton density in particles/cm³. Null when the feed omits the value."
        -      },
        -      "source": {
        -        "description": "Spacecraft that reported this measurement, as named by the feed, e.g. \"SOLAR1\".",
        -        "type": "string"
        -      },
        -      "speedKmS": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Solar wind speed in km/s. Null when the feed omits the value."
        -      },
        -      "temperatureK": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Proton temperature in Kelvin. Null when the feed omits the value."
        -      },
        -      "timeTag": {
        -        "description": "ISO 8601 measurement time tag.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "timeTag",
        -      "source",
        -      "densityPerCm3",
        -      "speedKmS",
        -      "temperatureK"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "One plasma measurement from the active L1 spacecraft.",
        +    "properties": {
        +      "densityPerCm3": {
        +        "description": "Proton density in particles/cm³. Null when the feed omits the value.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "source": {
        +        "description": "Spacecraft that reported this measurement, as named by the feed, e.g. \"SOLAR1\".",
        +        "type": "string"
        +      },
        +      "speedKmS": {
        +        "description": "Solar wind speed in km/s. Null when the feed omits the value.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "temperatureK": {
        +        "description": "Proton temperature in Kelvin. Null when the feed omits the value.",
        +        "type": [
        +          "number",
        +          "null"
        +        ]
        +      },
        +      "timeTag": {
        +        "description": "ISO 8601 measurement time tag.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "timeTag",
        +      "source",
        +      "densityPerCm3",
        +      "speedKmS",
        +      "temperatureK"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • removedOutput schema / properties / mag / items / properties / bt / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / mag / items / properties / bt / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / mag / items / properties / bxGsm / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / mag / items / properties / bxGsm / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / mag / items / properties / byGsm / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / mag / items / properties / byGsm / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / mag / items / properties / bzGsm / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / mag / items / properties / bzGsm / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / plasma / items / properties / densityPerCm3 / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / plasma / items / properties / densityPerCm3 / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / plasma / items / properties / speedKmS / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / plasma / items / properties / speedKmS / type
        Added value: +[
        +  "number",
        +  "null"
        +]
      • removedOutput schema / properties / plasma / items / properties / temperatureK / anyOf
        Removed value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]
      • addedOutput schema / properties / plasma / items / properties / temperatureK / type
        Added value: +[
        +  "number",
        +  "null"
        +]
  7. 6 tool updates
    • Changednoaa_spaceweather_get_alerts6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "alerts",
        +      "totalCount",
        +      "fetchedAt"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC endpoint returns non-OK status or times out after retries. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "feed_unavailable"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "alerts",
        -  "totalCount",
        -  "fetchedAt"
        -]
    • Changednoaa_spaceweather_get_aurora_forecast6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "observationTime",
        +      "forecastTime",
        +      "localLookup",
        +      "gridPointCount",
        +      "topAuroraPercent",
        +      "topAuroraRegion"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC endpoint returns non-OK status or times out after retries. `invalid_coordinates`: One coordinate provided without the other. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "feed_unavailable",
        +            "invalid_coordinates"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "observationTime",
        -  "forecastTime",
        -  "localLookup",
        -  "gridPointCount",
        -  "topAuroraPercent",
        -  "topAuroraRegion"
        -]
    • Changednoaa_spaceweather_get_conditions6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "observedAt",
        +      "currentKp",
        +      "currentGScale",
        +      "auroraLatitude",
        +      "today",
        +      "forecast",
        +      "summary"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC endpoint returns non-OK status or times out after retries. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "feed_unavailable"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "observedAt",
        -  "currentKp",
        -  "currentGScale",
        -  "auroraLatitude",
        -  "today",
        -  "forecast",
        -  "summary"
        -]
    • Changednoaa_spaceweather_get_kp_index6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "observed",
        +      "forecast",
        +      "currentKp",
        +      "currentGScale",
        +      "auroraLatitude",
        +      "observedCount"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC endpoint returns non-OK status or times out after retries. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "feed_unavailable"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "observed",
        -  "forecast",
        -  "currentKp",
        -  "currentGScale",
        -  "auroraLatitude",
        -  "observedCount"
        -]
    • Changednoaa_spaceweather_get_solar_activity6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "latestXray",
        +      "recentXray",
        +      "probabilities",
        +      "latestProton",
        +      "sScale",
        +      "sScaleText",
        +      "activeRegions",
        +      "fetchedAt"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC endpoint returns non-OK status or times out after retries. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "feed_unavailable"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "latestXray",
        -  "recentXray",
        -  "probabilities",
        -  "latestProton",
        -  "sScale",
        -  "sScaleText",
        -  "activeRegions",
        -  "fetchedAt"
        -]
    • Changednoaa_spaceweather_get_solar_wind6 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedOutput schema / anyOf
        Added value: +[
        +  {
        +    "not": {
        +      "required": [
        +        "error"
        +      ]
        +    },
        +    "required": [
        +      "plasma",
        +      "mag",
        +      "latestPlasma",
        +      "latestMag",
        +      "bzStatus",
        +      "plasmaCount",
        +      "magCount",
        +      "latestFeedPlasmaTime",
        +      "latestFeedMagTime",
        +      "feedStalenessHours"
        +    ]
        +  },
        +  {
        +    "required": [
        +      "error"
        +    ]
        +  }
        +]
      • addedOutput schema / properties / error
        Added value: +{
        +  "additionalProperties": {},
        +  "description": "Present when the call failed. Absent on success.",
        +  "properties": {
        +    "code": {
        +      "description": "JSON-RPC error code for this failure.",
        +      "maximum": 9007199254740991,
        +      "minimum": -9007199254740991,
        +      "type": "integer"
        +    },
        +    "data": {
        +      "additionalProperties": {},
        +      "properties": {
        +        "reason": {
        +          "description": "Machine-readable failure mode. Declared by this tool: `feed_unavailable`: SWPC endpoint returns non-OK status or times out after retries. Other values are possible when a failure originates below the handler.",
        +          "examples": [
        +            "feed_unavailable"
        +          ],
        +          "type": "string"
        +        },
        +        "recovery": {
        +          "additionalProperties": {},
        +          "description": "Actionable next step for the caller.",
        +          "properties": {
        +            "hint": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "hint"
        +          ],
        +          "type": "object"
        +        },
        +        "retryable": {
        +          "description": "Whether retrying may succeed.",
        +          "type": "boolean"
        +        }
        +      },
        +      "type": "object"
        +    },
        +    "message": {
        +      "description": "Human-readable description of what went wrong.",
        +      "type": "string"
        +    }
        +  },
        +  "required": [
        +    "code",
        +    "message"
        +  ],
        +  "type": "object"
        +}
      • removedOutput schema / required
        Removed value: -[
        -  "plasma",
        -  "mag",
        -  "latestPlasma",
        -  "latestMag",
        -  "bzStatus",
        -  "plasmaCount",
        -  "magCount",
        -  "latestFeedPlasmaTime",
        -  "latestFeedMagTime",
        -  "feedStalenessHours"
        -]
  8. 1 tool update
    • Changednoaa_spaceweather_get_alerts6 fields changed
      • changedInput schema / properties / active_only / description
        Previous value: -"When true (default), return only Warnings, Watches, and Alerts; exclude Summaries and Other. Set false to return all products."New value: +"When true (default), return only in-force Warnings, Watches, and Alerts; exclude Summaries, Other, expired products, and cancellation notices. Set false to return all products, including cancellations (flagged by the cancelled field)."
      • addedOutput schema / properties / alerts / items / properties / cancelled
        Added value: +{
        +  "description": "True when this record cancels a previously issued product (\"CANCEL WARNING:\"/\"CANCEL ALERT:\" headline) rather than being in force. Always false when active_only=true, which excludes cancellations; set active_only=false to see them.",
        +  "type": "boolean"
        +}
      • changedOutput schema / properties / alerts / items / properties / level / description
        Previous value: -"Numeric severity level from the product code (0 when not applicable)."New value: +"NOAA scale level 0–5, read from the scale stated in the message body. 0 means the product states no NOAA scale (e.g. a K4 warning, below the G-scale; or a radio-burst alert, outside the scales) — not a severity of zero. See noaaScale for the scale letter."
      • addedOutput schema / properties / alerts / items / properties / noaaScale
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "NOAA scale stated in the message body, e.g. \"G1\", \"R2\", \"S1\"; null when the product states none."
        +}
      • changedOutput schema / properties / alerts / items / properties / phenomenon / description
        Previous value: -"Short phenomenon name, e.g. \"Geomagnetic\", \"Radio Blackout\", \"Solar Radiation\"."New value: +"Short phenomenon name derived from the body's NOAA scale letter, e.g. \"Geomagnetic\", \"Radio Blackout\", \"Solar Radiation\"."
      • changedOutput schema / properties / alerts / items / required
        Previous value: -[
        -  "productId",
        -  "messageCode",
        -  "productType",
        -  "level",
        -  "phenomenon",
        -  "issueDatetime",
        -  "validFrom",
        -  "validTo",
        -  "message"
        -]New value: +[
        +  "productId",
        +  "messageCode",
        +  "productType",
        +  "level",
        +  "noaaScale",
        +  "cancelled",
        +  "phenomenon",
        +  "issueDatetime",
        +  "validFrom",
        +  "validTo",
        +  "message"
        +]
  9. 1 tool update
    • Changednoaa_spaceweather_get_solar_wind23 fields changed
      • changedInput schema / properties / window_hours / description
        Previous value: -"Hours of recent solar wind history to return (1–168, default 3). Feeds update ~every 1 min."New value: +"Hours of recent solar wind history to return (1–168, default 3). Records update ~every 1 min, but the feed only carries roughly the last 24 hours — a larger window returns the whole feed, not more history. When a window comes back empty, feedStalenessHours and latestFeedPlasmaTime/latestFeedMagTime report how current the feed actually is."
      • addedOutput schema / properties / feedStalenessHours
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "number"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "Hours between now and the newest record across both feeds — how far behind real time the upstream data is. Null when both feeds returned no active-spacecraft records."
        +}
      • addedOutput schema / properties / latestFeedMagTime
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "ISO 8601 time of the newest magnetic field record the feed carries, ignoring the window. Null when the feed returned no active-spacecraft mag records."
        +}
      • addedOutput schema / properties / latestFeedPlasmaTime
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "description": "ISO 8601 time of the newest plasma record the feed carries, ignoring the window. Null when the feed returned no active-spacecraft plasma records. Compare against the window to tell a quiet feed from a stale one."
        +}
      • changedOutput schema / properties / latestMag / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "One DSCOVR magnetic field measurement.",
        -    "properties": {
        -      "bt": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Total field magnitude Bt (nT). Null when sensor fill value."
        -      },
        -      "bxGsm": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Bx component in GSM coordinates (nT). Null when sensor fill value."
        -      },
        -      "byGsm": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "By component in GSM coordinates (nT). Null when sensor fill value."
        -      },
        -      "bzGsm": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Bz component in GSM coordinates (nT). Southward (negative) drives geomagnetic storms. Null when sensor fill value."
        -      },
        -      "timeTag": {
        -        "description": "ISO 8601 measurement time tag.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "timeTag",
        -      "bxGsm",
        -      "byGsm",
        -      "bzGsm",
        -      "bt"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "One magnetic field measurement from the active L1 spacecraft.",
        +    "properties": {
        +      "bt": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "Total field magnitude Bt (nT). Null when the feed omits the value."
        +      },
        +      "bxGsm": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "Bx component in GSM coordinates (nT). Null when the feed omits the value."
        +      },
        +      "byGsm": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "By component in GSM coordinates (nT). Null when the feed omits the value."
        +      },
        +      "bzGsm": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "Bz component in GSM coordinates (nT). Southward (negative) drives geomagnetic storms. Null when the feed omits the value."
        +      },
        +      "source": {
        +        "description": "Spacecraft that reported this measurement, as named by the feed, e.g. \"SOLAR1\".",
        +        "type": "string"
        +      },
        +      "timeTag": {
        +        "description": "ISO 8601 measurement time tag.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "timeTag",
        +      "source",
        +      "bxGsm",
        +      "byGsm",
        +      "bzGsm",
        +      "bt"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / latestPlasma / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "One DSCOVR plasma measurement.",
        -    "properties": {
        -      "densityPerCm3": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Proton density in particles/cm³. Null when sensor fill value."
        -      },
        -      "speedKmS": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Solar wind speed in km/s. Null when sensor fill value."
        -      },
        -      "temperatureK": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ],
        -        "description": "Proton temperature in Kelvin. Null when sensor fill value."
        -      },
        -      "timeTag": {
        -        "description": "ISO 8601 measurement time tag.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "timeTag",
        -      "densityPerCm3",
        -      "speedKmS",
        -      "temperatureK"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "One plasma measurement from the active L1 spacecraft.",
        +    "properties": {
        +      "densityPerCm3": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "Proton density in particles/cm³. Null when the feed omits the value."
        +      },
        +      "source": {
        +        "description": "Spacecraft that reported this measurement, as named by the feed, e.g. \"SOLAR1\".",
        +        "type": "string"
        +      },
        +      "speedKmS": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "Solar wind speed in km/s. Null when the feed omits the value."
        +      },
        +      "temperatureK": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "description": "Proton temperature in Kelvin. Null when the feed omits the value."
        +      },
        +      "timeTag": {
        +        "description": "ISO 8601 measurement time tag.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "timeTag",
        +      "source",
        +      "densityPerCm3",
        +      "speedKmS",
        +      "temperatureK"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • changedOutput schema / properties / mag / description
        Previous value: -"Magnetic field measurements (Bx, By, Bz, Bt) within the window."New value: +"Magnetic field measurements (Bx, By, Bz, Bt) within the window, oldest first."
      • changedOutput schema / properties / mag / items / description
        Previous value: -"One DSCOVR magnetic field measurement."New value: +"One magnetic field measurement from the active L1 spacecraft."
      • changedOutput schema / properties / mag / items / properties / bt / description
        Previous value: -"Total field magnitude Bt (nT). Null when sensor fill value."New value: +"Total field magnitude Bt (nT). Null when the feed omits the value."
      • changedOutput schema / properties / mag / items / properties / bxGsm / description
        Previous value: -"Bx component in GSM coordinates (nT). Null when sensor fill value."New value: +"Bx component in GSM coordinates (nT). Null when the feed omits the value."
      • changedOutput schema / properties / mag / items / properties / byGsm / description
        Previous value: -"By component in GSM coordinates (nT). Null when sensor fill value."New value: +"By component in GSM coordinates (nT). Null when the feed omits the value."
      • changedOutput schema / properties / mag / items / properties / bzGsm / description
        Previous value: -"Bz component in GSM coordinates (nT). Southward (negative) drives geomagnetic storms. Null when sensor fill value."New value: +"Bz component in GSM coordinates (nT). Southward (negative) drives geomagnetic storms. Null when the feed omits the value."
      • addedOutput schema / properties / mag / items / properties / source
        Added value: +{
        +  "description": "Spacecraft that reported this measurement, as named by the feed, e.g. \"SOLAR1\".",
        +  "type": "string"
        +}
      • changedOutput schema / properties / mag / items / required
        Previous value: -[
        -  "timeTag",
        -  "bxGsm",
        -  "byGsm",
        -  "bzGsm",
        -  "bt"
        -]New value: +[
        +  "timeTag",
        +  "source",
        +  "bxGsm",
        +  "byGsm",
        +  "bzGsm",
        +  "bt"
        +]
      • addedOutput schema / properties / notice
        Added value: +{
        +  "description": "Guidance when the requested window returned no plasma or magnetic field records — names the newest record the feed carries, or reports that the feed itself returned nothing from an active spacecraft.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / plasma / description
        Previous value: -"Plasma measurements (speed, density, temperature) within the window."New value: +"Plasma measurements (speed, density, temperature) within the window, oldest first."
      • changedOutput schema / properties / plasma / items / description
        Previous value: -"One DSCOVR plasma measurement."New value: +"One plasma measurement from the active L1 spacecraft."
      • changedOutput schema / properties / plasma / items / properties / densityPerCm3 / description
        Previous value: -"Proton density in particles/cm³. Null when sensor fill value."New value: +"Proton density in particles/cm³. Null when the feed omits the value."
      • addedOutput schema / properties / plasma / items / properties / source
        Added value: +{
        +  "description": "Spacecraft that reported this measurement, as named by the feed, e.g. \"SOLAR1\".",
        +  "type": "string"
        +}
      • changedOutput schema / properties / plasma / items / properties / speedKmS / description
        Previous value: -"Solar wind speed in km/s. Null when sensor fill value."New value: +"Solar wind speed in km/s. Null when the feed omits the value."
      • changedOutput schema / properties / plasma / items / properties / temperatureK / description
        Previous value: -"Proton temperature in Kelvin. Null when sensor fill value."New value: +"Proton temperature in Kelvin. Null when the feed omits the value."
      • changedOutput schema / properties / plasma / items / required
        Previous value: -[
        -  "timeTag",
        -  "densityPerCm3",
        -  "speedKmS",
        -  "temperatureK"
        -]New value: +[
        +  "timeTag",
        +  "source",
        +  "densityPerCm3",
        +  "speedKmS",
        +  "temperatureK"
        +]
      • changedOutput schema / required
        Previous value: -[
        -  "plasma",
        -  "mag",
        -  "latestPlasma",
        -  "latestMag",
        -  "bzStatus",
        -  "plasmaCount",
        -  "magCount"
        -]New value: +[
        +  "plasma",
        +  "mag",
        +  "latestPlasma",
        +  "latestMag",
        +  "bzStatus",
        +  "plasmaCount",
        +  "magCount",
        +  "latestFeedPlasmaTime",
        +  "latestFeedMagTime",
        +  "feedStalenessHours"
        +]
  10. 1 tool update
    • Changednoaa_spaceweather_get_solar_activity9 fields changed
      • changedOutput schema / properties / probabilities / items / properties / cClass1Day / description
        Previous value: -"Total probability of a C-class flare for this day (%)."New value: +"Total probability of a C-class flare for this date (%)."
      • addedOutput schema / properties / probabilities / items / properties / cClassProbability
        Added value: +{
        +  "description": "Total probability of a C-class flare for this date (%). Date-neutral alias of cClass1Day.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / probabilities / items / properties / mClass1Day / description
        Previous value: -"Total probability of an M-class flare for this day (%)."New value: +"Total probability of an M-class flare for this date (%)."
      • addedOutput schema / properties / probabilities / items / properties / mClassProbability
        Added value: +{
        +  "description": "Total probability of an M-class flare for this date (%). Date-neutral alias of mClass1Day.",
        +  "type": "number"
        +}
      • addedOutput schema / properties / probabilities / items / properties / protonEventProbability
        Added value: +{
        +  "description": "Probability of a ≥10 MeV proton event for this date (%). Date-neutral alias of protons1Day.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / probabilities / items / properties / protons1Day / description
        Previous value: -"Probability of ≥10 MeV proton event for this day (%)."New value: +"Probability of a ≥10 MeV proton event for this date (%)."
      • changedOutput schema / properties / probabilities / items / properties / xClass1Day / description
        Previous value: -"Total probability of an X-class flare for this day (%)."New value: +"Total probability of an X-class flare for this date (%)."
      • addedOutput schema / properties / probabilities / items / properties / xClassProbability
        Added value: +{
        +  "description": "Total probability of an X-class flare for this date (%). Date-neutral alias of xClass1Day.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / probabilities / items / required
        Previous value: -[
        -  "date",
        -  "cClass1Day",
        -  "mClass1Day",
        -  "xClass1Day",
        -  "protons1Day"
        -]New value: +[
        +  "date",
        +  "cClass1Day",
        +  "cClassProbability",
        +  "mClass1Day",
        +  "mClassProbability",
        +  "xClass1Day",
        +  "xClassProbability",
        +  "protons1Day",
        +  "protonEventProbability"
        +]
  11. 1 tool update
    • Changednoaa_spaceweather_get_alerts3 fields changed
      • addedOutput schema / properties / alerts / items / properties / messageCode
        Added value: +{
        +  "description": "Full SWPC \"Space Weather Message Code\" parsed from the message body, e.g. \"WARK04\", \"ALTEF3\" — the code that drives product type, phenomenon, and level.",
        +  "type": "string"
        +}
      • changedOutput schema / properties / alerts / items / properties / productId / description
        Previous value: -"SWPC product code, e.g. \"WARK04\", \"ALTK07\"."New value: +"Short SWPC feed product ID, e.g. \"K04W\", \"EF3A\". See messageCode for the full code."
      • changedOutput schema / properties / alerts / items / required
        Previous value: -[
        -  "productId",
        -  "productType",
        -  "level",
        -  "phenomenon",
        -  "issueDatetime",
        -  "validFrom",
        -  "validTo",
        -  "message"
        -]New value: +[
        +  "productId",
        +  "messageCode",
        +  "productType",
        +  "level",
        +  "phenomenon",
        +  "issueDatetime",
        +  "validFrom",
        +  "validTo",
        +  "message"
        +]
  12. 2 tool updates
    • Changednoaa_spaceweather_get_alerts2 fields changed
      • changedOutput schema / properties / alerts / items / properties / validFrom / description
        Previous value: -"Validity start parsed from the message body, null if not found."New value: +"Validity-window start as ISO 8601 UTC, parsed from the message body (\"Valid From\" or \"Begin Time\"); null when the product carries no start line."
      • changedOutput schema / properties / alerts / items / properties / validTo / description
        Previous value: -"Validity end parsed from the message body, null if not found."New value: +"Validity-window end as ISO 8601 UTC, parsed from the message body (\"Valid To\", \"Now Valid Until\", or \"End Time\"); null when the product carries no end line."
    • Changednoaa_spaceweather_get_solar_activity1 field changed
      • changedOutput schema / properties / latestProton / anyOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "description": "One GOES integral proton flux reading with S-scale.",
        -    "properties": {
        -      "energy": {
        -        "description": "Energy channel, e.g. \">=10 MeV\".",
        -        "type": "string"
        -      },
        -      "fluxPfu": {
        -        "description": "Integral proton flux in particle flux units (pfu) at ≥10 MeV.",
        -        "type": "number"
        -      },
        -      "sScale": {
        -        "description": "NOAA S-scale level (0–5) for this flux reading.",
        -        "type": "number"
        -      },
        -      "timeTag": {
        -        "description": "ISO 8601 measurement time tag.",
        -        "type": "string"
        -      }
        -    },
        -    "required": [
        -      "timeTag",
        -      "fluxPfu",
        -      "sScale",
        -      "energy"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "description": "One GOES integral proton flux reading with S-scale.",
        +    "properties": {
        +      "energy": {
        +        "description": "Energy channel, e.g. \">=10 MeV\".",
        +        "type": "string"
        +      },
        +      "fluxPfu": {
        +        "description": "Integral proton flux in particle flux units (pfu) at ≥10 MeV, rounded to 3 significant figures.",
        +        "type": "number"
        +      },
        +      "sScale": {
        +        "description": "NOAA S-scale level (0–5) for this flux reading.",
        +        "type": "number"
        +      },
        +      "timeTag": {
        +        "description": "ISO 8601 measurement time tag.",
        +        "type": "string"
        +      }
        +    },
        +    "required": [
        +      "timeTag",
        +      "fluxPfu",
        +      "sScale",
        +      "energy"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  13. 1 tool update
    • Changednoaa_spaceweather_get_kp_index6 fields changed
      • changedOutput schema / properties / forecast / description
        Previous value: -"3-day Kp forecast series."New value: +"Forward-looking Kp forecast series (estimated and predicted entries only; observed history excluded)."
      • changedOutput schema / properties / forecast / items / description
        Previous value: -"One Kp forecast interval."New value: +"One forward-looking Kp forecast interval (estimated or predicted)."
      • addedOutput schema / properties / forecast / items / properties / gLabel
        Added value: +{
        +  "description": "NOAA G-scale label, e.g. \"G0\", \"G3\".",
        +  "type": "string"
        +}
      • addedOutput schema / properties / forecast / items / properties / gScale
        Added value: +{
        +  "description": "NOAA G-scale equivalent (0–5) derived from Kp.",
        +  "type": "number"
        +}
      • changedOutput schema / properties / forecast / items / properties / observed / description
        Previous value: -"\"observed\" for confirmed readings, \"predicted\" for forecast points."New value: +"\"estimated\" for near-real-time model points, \"predicted\" for forecast points."
      • changedOutput schema / properties / forecast / items / required
        Previous value: -[
        -  "timeTag",
        -  "kp",
        -  "observed",
        -  "noaaScale"
        -]New value: +[
        +  "timeTag",
        +  "kp",
        +  "observed",
        +  "noaaScale",
        +  "gScale",
        +  "gLabel"
        +]
  14. 6 tool updates
    • First observednoaa_spaceweather_get_alerts
    • First observednoaa_spaceweather_get_aurora_forecast
    • First observednoaa_spaceweather_get_conditions
    • First observednoaa_spaceweather_get_kp_index
    • First observednoaa_spaceweather_get_solar_activity
    • First observednoaa_spaceweather_get_solar_wind

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Provides AI assistants with access to real-time space weather data and forecasts from NOAA's Space Weather Prediction Center, enabling queries and interpretations of geomagnetic storms, solar flares, and related indices.
    7
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides real-time NOAA space weather data (solar flares, Kp index, solar wind) and analyzes HF radio propagation conditions for amateur radio operators to determine optimal frequency bands.
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to access real-time NOAA space weather data, including alerts, solar wind, K-index, aurora forecast, and GOES X-ray flux, through natural language queries.
    1 npm
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A Model Context Protocol server for space weather and geomagnetic conditions, enabling AI agents to answer queries about solar flares, solar wind, geomagnetic storms, aurora forecasts, and more from authoritative data.
    15
    44 PyPI
    MIT
Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.