Skip to main content
Glama

Get Solar Activity

noaa_spaceweather_get_solar_activity
Read-onlyIdempotent

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.

Input Schema

TableJSON 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

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

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed53 schema 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\"."
  2. Changed13 schema 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."
  3. Changed9 schema 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"
      +]
  4. Changed7 schema 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"
      +]
  5. 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": [
      +      "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"
      -]
  6. Changed9 schema 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"
      +]
  7. Changed1 schema 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"
      +  }
      +]
  8. First observed

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.