Skip to main content
Glama

Get Solar Wind

noaa_spaceweather_get_solar_wind
Read-onlyIdempotent

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.

Input Schema

TableJSON 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

TableJSON Schema
NameRequiredDescriptionDefault
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.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed37 schema 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. Changed16 schema 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. Changed14 schema 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"
      +}
  4. Changed2 schema 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"
      +]
  5. Changed22 schema 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"
      +]
  6. Changed6 schema 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"
      -]
  7. Changed23 schema 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"
      +]
  8. First observed

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.