Endpoints: 28,729MCP servers: 18,413Payout addresses: 2,071Paid calls: 1,559Letters: 14Defects: 1,336counted 4 min ago
teppi

Server definition

Hash
sha256:fa07c62f113efecc7d568cdb2afb93114104291b5eb1a74176d5bd45b6c4f540
What it is
What a remote MCP server returned when asked what it offers: 6 tools

The blob, as servednamed by its sha256

{ "instructions": "NOAA Space Weather Prediction Center data server — all feeds are public and keyless.\n- Start with noaa_spaceweather_get_conditions for a quick status snapshot.\n- Use noaa_spaceweather_get_aurora_forecast with coordinates for \"can I see the aurora?\" queries.\n- Use noaa_spaceweather_get_solar_wind for Bz monitoring (southward Bz drives storms).\n- Use noaa_spaceweather_get_alerts for active SWPC watches/warnings.\nFeeds update frequently (solar wind ~1 min, aurora ~5 min, Kp 3-hour intervals).", "tools": [ { "description": "Active SWPC alerts, watches, and warnings — parsed into structured records with product type, NOAA scale and level, issue time, serial number, validity window, and plain text. Covers geomagnetic storms, radio blackouts, and radiation storms. With active_only=false, also returns informational summaries, expired notices, and cancellations. max_age_hours controls how far back to look for candidates (default 48 h) — under active_only=true it does not cut off a product whose validity end is still in the future, and under active_only=false it is a literal age cutoff. The SWPC feed keeps all historical records and has no built-in expiry.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "active_only": { "default": true, "description": "When true (default), return only in-force Warnings, Watches, and Alerts. Excluded: Summaries and unrecognized products; products whose validity end has passed; cancellation notices; any product a later cancellation names by serial; and all but the newest record carrying the \"THIS SUPERSEDES ANY/ALL PRIOR WATCHES IN EFFECT\" line. Counts per reason ride in the exclusions enrichment field. Set false to return every product in the window, cancellations included (flagged by the cancelled field).", "type": "boolean" }, "max_age_hours": { "default": 48, "description": "How far back to look for products, in hours (default 48). The SWPC feed retains all historical records, so this bounds the candidate set rather than declaring what is current. Under active_only=true a product whose validity end is still in the future is returned even when its issue time falls outside this window — a multi-day Watch would otherwise disappear while a day it forecasts a storm for is still running. Under active_only=false it is literal and cuts at exactly the requested age.", "maximum": 720, "minimum": 1, "type": "number" } }, "type": "object" }, "name": "noaa_spaceweather_get_alerts", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "alerts", "totalCount", "activeOnly", "fetchedAt" ] }, { "required": [ "error" ] } ], "properties": { "activeOnly": { "description": "Echo of active_only: true for the in-force set, false for every product in the window.", "type": "boolean" }, "alerts": { "description": "Matching SWPC products.", "items": { "additionalProperties": false, "description": "One SWPC product.", "properties": { "cancelled": { "description": "True when this record cancels an earlier product; the cancelled product itself stays false. Always false under active_only=true, which drops both.", "type": "boolean" }, "issueDatetime": { "description": "ISO 8601 issue time.", "type": "string" }, "level": { "description": "NOAA scale level 0–5 stated in the body; 0 means no scale is stated, not zero severity.", "type": "number" }, "message": { "description": "Full plain-text message.", "type": "string" }, "messageCode": { "description": "Full message code from the body, e.g. \"WARK04\".", "type": "string" }, "noaaScale": { "description": "NOAA scale stated in the body, e.g. \"G1\"; null when none.", "type": [ "string", "null" ] }, "phenomenon": { "description": "Phenomenon from the scale letter, e.g. \"Geomagnetic\".", "type": "string" }, "productId": { "description": "Short SWPC product ID, e.g. \"K04W\".", "type": "string" }, "productType": { "description": "Product type, from the code prefix.", "enum": [ "Warning", "Watch", "Alert", "Summary", "Other" ], "type": "string" }, "serialNumber": { "description": "SWPC serial number, e.g. \"1125\"; null when absent. Unique only within messageCode; the Cancel, Extension to, and Continuation of Serial Number lines in message point at it.", "type": [ "string", "null" ] }, "validFrom": { "description": "ISO 8601 UTC validity start stated in the body; null when none.", "type": [ "string", "null" ] }, "validTo": { "description": "ISO 8601 UTC validity end; for a Watch, the end of its last listed storm day. Null when nothing states or implies an end.", "type": [ "string", "null" ] } }, "required": [ "productId", "messageCode", "productType", "level", "noaaScale", "cancelled", "serialNumber", "phenomenon", "issueDatetime", "validFrom", "validTo", "message" ], "type": "object" }, "type": "array" }, "appliedCutoff": { "description": "ISO 8601 UTC start of the applied window. Present only under active_only=true.", "type": "string" }, "appliedWindowHours": { "description": "max_age_hours as applied. Present only under active_only=true.", "type": "number" }, "error": { "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 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.", "examples": [ "feed_unavailable", "feed_moved" ], "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" }, "exclusions": { "additionalProperties": false, "description": "Records active_only=true left out, each counted under its first reason in field order; with totalCount they sum to the feed total. Present only under active_only=true, when something was excluded.", "properties": { "agedOut": { "description": "Issued before the window, no validity end ahead.", "type": "number" }, "cancellationRecord": { "description": "Cancellation notices.", "type": "number" }, "cancelledBySerial": { "description": "Named by a later cancellation.", "type": "number" }, "productType": { "description": "Summaries and unrecognized products.", "type": "number" }, "superseded": { "description": "Replaced by a newer superseding Watch.", "type": "number" }, "validityElapsed": { "description": "Validity end already passed.", "type": "number" } }, "required": [ "agedOut", "productType", "cancellationRecord", "cancelledBySerial", "superseded", "validityElapsed" ], "type": "object" }, "fetchedAt": { "description": "ISO 8601 fetch time.", "type": "string" }, "notice": { "description": "Set when no products were returned.", "type": "string" }, "totalCount": { "description": "Records in alerts.", "type": "number" } }, "type": "object" } }, { "description": "OVATION model aurora forecast for the next ~30–60 min: global grid of aurora probability percentages by latitude/longitude (1° resolution). With optional coordinates, returns the local aurora probability at the nearest grid point, the geomagnetic latitude those coordinates convert to, the minimum Kp and G level needed for aurora at that geomagnetic latitude, the sun’s elevation there at the forecast time (aurora is not visible in daylight), the strongest aurora within 1000 km poleward (visible low on the horizon when bright), and a plain-language go/no-go verdict. Without coordinates, returns only global metadata. Data updates every ~5 minutes. Supply coordinates as geographic (WGS84); aurora bands are geomagnetic, and the tool converts between them.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "latitude": { "description": "Geographic latitude in degrees (−90 to 90). Provide with longitude for a local aurora probability lookup.", "maximum": 90, "minimum": -90, "type": "number" }, "longitude": { "description": "Geographic longitude in degrees (−180 to 180). Provide with latitude for a local aurora probability lookup.", "maximum": 180, "minimum": -180, "type": "number" } }, "type": "object" }, "name": "noaa_spaceweather_get_aurora_forecast", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "observationTime", "forecastTime", "localLookup", "gridPointCount", "topAuroraPercent", "topAuroraRegion" ] }, { "required": [ "error" ] } ], "properties": { "error": { "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 feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried for up to 45 seconds in total before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403), or a coordinate lookup finds no parseable Forecast Time in the feed. Fails in one attempt. `invalid_coordinates`: One coordinate provided without the other. Other values are possible when a failure originates below the handler.", "examples": [ "feed_unavailable", "feed_moved", "invalid_coordinates" ], "type": "string" }, "recovery": { "additionalProperties": {}, "description": "Actionable next step for the caller.", "properties": { "hint": { "type": "string" } }, "required": [ "hint" ], "type": "object" }, "retryable": { "description": "Whether retrying may succeed.", "type": "boolean" } }, "type": "object" }, "message": { "description": "Human-readable description of what went wrong.", "type": "string" } }, "required": [ "code", "message" ], "type": "object" }, "forecastTime": { "description": "ISO 8601 time the forecast is valid for.", "type": "string" }, "gridPointCount": { "description": "OVATION grid point count.", "type": "number" }, "localLookup": { "anyOf": [ { "additionalProperties": false, "properties": { "auroraPercent": { "description": "Aurora probability at the nearest grid point (0–100%).", "type": "number" }, "darkness": { "description": "Sky state from sunElevationDeg: day ≥ 0°, civil_twilight ≥ −6°, nautical_twilight ≥ −12°, dark below.", "enum": [ "day", "civil_twilight", "nautical_twilight", "dark" ], "type": "string" }, "geomagneticLatitude": { "description": "Geomagnetic latitude of the request, in degrees (up to ±9.2° from geographic); minKpRequired and the verdict use it.", "type": "number" }, "gridLatitude": { "description": "Nearest grid latitude, in degrees.", "type": "number" }, "gridLongitude": { "description": "Nearest grid longitude, in degrees.", "type": "number" }, "horizonDistanceKm": { "description": "Distance in km to the horizonMaxPercent cell; null when it is null.", "type": [ "number", "null" ] }, "horizonMaxLatitude": { "description": "Grid latitude of horizonMaxPercent, in degrees (nearest on a tie); null when it is null.", "type": [ "number", "null" ] }, "horizonMaxPercent": { "description": "Highest aurora probability (0–100%) poleward of gridLatitude within ±2° longitude and 1000 km; null when no cell qualifies (gridLatitude ±90).", "type": [ "number", "null" ] }, "minGScale": { "description": "G level for minKpRequired (1–5); 0 inside the quiet-time oval; null below 40° geomagnetic, where no storm reaches.", "type": [ "number", "null" ] }, "minKpRequired": { "description": "Minimum Kp for aurora here: 4.67, 5.67, 6.67, 7.67, or 9; 0 inside the quiet-time oval (above 65°). Also 9 where no storm reaches (minGScale null).", "type": "number" }, "requestedLatitude": { "description": "Requested geographic latitude, in degrees.", "type": "number" }, "requestedLongitude": { "description": "Requested geographic longitude, in degrees.", "type": "number" }, "sunElevationDeg": { "description": "Solar elevation here at forecastTime, in degrees to 0.1° (no refraction); negative below the horizon.", "type": "number" }, "verdict": { "description": "Visibility verdict, e.g. \"Good aurora chance (42%) — Kp≥6.67 (G3) needed at 51.2° geomagnetic.\"; opens \"Not visible — daylight\" when darkness is day.", "type": "string" } }, "required": [ "requestedLatitude", "requestedLongitude", "geomagneticLatitude", "gridLatitude", "gridLongitude", "auroraPercent", "minKpRequired", "minGScale", "sunElevationDeg", "darkness", "horizonMaxPercent", "horizonMaxLatitude", "horizonDistanceKm", "verdict" ], "type": "object" }, { "type": "null" } ], "description": "Coordinate lookup; null when no coordinates were given." }, "observationTime": { "description": "ISO 8601 OVATION observation time.", "type": "string" }, "topAuroraPercent": { "description": "Highest aurora probability on the globe (0–100%).", "type": "number" }, "topAuroraRegion": { "description": "Location of the highest grid point, e.g. \"67°N, 20°W\"; \"Unknown\" when every cell is 0%.", "type": "string" } }, "type": "object" } }, { "description": "Current space-weather snapshot: NOAA R/S/G storm scales (the previous UTC day, today, and the 3-day forecast), latest Kp index with its G-scale equivalent and aurora-visibility latitude, and a plain-language status summary. Optionally includes the SWPC forecast discussion explaining what is driving the forecast. The quickest way to answer \"is anything happening right now?\" — use before deciding whether to drill into solar wind (noaa_spaceweather_get_solar_wind), aurora (noaa_spaceweather_get_aurora_forecast), or alert details (noaa_spaceweather_get_alerts).", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "include_discussion": { "default": false, "description": "Also fetch SWPC's forecaster-written Forecast Discussion, which explains why the forecast looks the way it does (CME versus coronal-hole stream, expected arrival). Costs one extra upstream request.", "type": "boolean" } }, "type": "object" }, "name": "noaa_spaceweather_get_conditions", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "observedAt", "currentKp", "currentGScale", "auroraLatitude", "yesterday", "today", "forecast", "summary", "discussion" ] }, { "required": [ "error" ] } ], "properties": { "auroraLatitude": { "description": "Aurora guidance for currentKp, e.g. \"Aurora possible to ~55° geomagnetic latitude\".", "type": "string" }, "currentGScale": { "description": "G level (0–5) for currentKp.", "type": "number" }, "currentKp": { "description": "Latest observed planetary K-index (0–9).", "type": "number" }, "discussion": { "anyOf": [ { "additionalProperties": false, "description": "SWPC forecaster's narrative behind the scales.", "properties": { "issued": { "description": "ISO 8601 UTC issue time from the \":Issued:\" line; null when absent.", "type": [ "string", "null" ] }, "sections": { "description": "Topic sections, in product order.", "items": { "additionalProperties": false, "description": "One topic section.", "properties": { "forecast": { "description": "Next-3-day forecast text; null when the section has none.", "type": [ "string", "null" ] }, "summary": { "description": "Past-24 h summary text; null when the section has none.", "type": [ "string", "null" ] }, "topic": { "description": "Section heading, e.g. \"Solar Activity\".", "type": "string" } }, "required": [ "topic", "summary", "forecast" ], "type": "object" }, "type": "array" } }, "required": [ "issued", "sections" ], "type": "object" }, { "type": "null" } ], "description": "SWPC Forecast Discussion; null unless include_discussion is true." }, "error": { "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 feed returns 5xx or 429, times out, or answers with a body that is not parseable JSON. Retried for up to 45 seconds in total before failing. `feed_moved`: SWPC feed path returns a permanent 4xx (404, 410, 401, 403), or a feed answers without the shape it is documented to have — the scales feed no longer carrying its \"0\" (today) period, or the forecast discussion carrying no topic section. Fails in one attempt. Other values are possible when a failure originates below the handler.", "examples": [ "feed_unavailable", "feed_moved" ], "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" }, "forecast": { "description": "3-day scale forecast, oldest first; starts with today (the date of observedAt).", "items": { "additionalProperties": false, "description": "One forecast day.", "properties": { "G": { "additionalProperties": false, "description": "Forecast G level.", "properties": { "label": { "description": "Label, e.g. \"G2\".", "type": "string" }, "scale": { "description": "Level 0–5.", "type": "number" }, "text": { "description": "Descriptor, e.g. \"Moderate\"; \"none\" at level 0.", "type": "string" } }, "required": [ "scale", "text", "label" ], "type": "object" }, "R": { "additionalProperties": false, "description": "R outlook: a level, probabilities, or neither.", "properties": { "label": { "description": "Label, e.g. \"R1\"; null when no level was issued.", "type": [ "string", "null" ] }, "majorProbPercent": { "description": "Chance (%) of an R3+ blackout this day; null when none issued.", "type": [ "number", "null" ] }, "minorProbPercent": { "description": "Chance (%) of an R1–R2 blackout this day; null when none issued.", "type": [ "number", "null" ] }, "scale": { "description": "R level 0–5; null when SWPC issued a probability, not a level.", "type": [ "number", "null" ] }, "text": { "description": "R descriptor; null when no level was issued.", "type": [ "string", "null" ] } }, "required": [ "scale", "text", "label", "minorProbPercent", "majorProbPercent" ], "type": "object" }, "S": { "additionalProperties": false, "description": "S outlook: a level, a probability, or neither.", "properties": { "label": { "description": "Label, e.g. \"S1\"; null when no level was issued.", "type": [ "string", "null" ] }, "probPercent": { "description": "Chance (%) of an S1+ radiation storm this day; null when none issued.", "type": [ "number", "null" ] }, "scale": { "description": "S level 0–5; null when SWPC issued a probability, not a level.", "type": [ "number", "null" ] }, "text": { "description": "S descriptor; null when no level was issued.", "type": [ "string", "null" ] } }, "required": [ "scale", "text", "label", "probPercent" ], "type": "object" }, "date": { "description": "Forecast date, e.g. \"2026-06-04\".", "type": "string" } }, "required": [ "date", "G", "R", "S" ], "type": "object" }, "type": "array" }, "observedAt": { "description": "ISO 8601 UTC time of the scales data period, e.g. \"2026-06-04T15:00:00Z\".", "type": "string" }, "summary": { "description": "Plain-language status, e.g. \"G2 moderate geomagnetic storm in progress.\"", "type": "string" }, "today": { "additionalProperties": false, "description": "Observed R/S/G levels for today.", "properties": { "G": { "additionalProperties": false, "description": "Today's G level.", "properties": { "label": { "description": "Label, e.g. \"G2\".", "type": "string" }, "scale": { "description": "Level 0–5.", "type": "number" }, "text": { "description": "Descriptor, e.g. \"Moderate\"; \"none\" at level 0.", "type": "string" } }, "required": [ "scale", "text", "label" ], "type": "object" }, "R": { "additionalProperties": false, "description": "Today's R level.", "properties": { "label": { "description": "Label, e.g. \"G2\".", "type": "string" }, "scale": { "description": "Level 0–5.", "type": "number" }, "text": { "description": "Descriptor, e.g. \"Moderate\"; \"none\" at level 0.", "type": "string" } }, "required": [ "scale", "text", "label" ], "type": "object" }, "S": { "additionalProperties": false, "description": "Today's S level.", "properties": { "label": { "description": "Label, e.g. \"G2\".", "type": "string" }, "scale": { "description": "Level 0–5.", "type": "number" }, "text": { "description": "Descriptor, e.g. \"Moderate\"; \"none\" at level 0.", "type": "string" } }, "required": [ "scale", "text", "label" ], "type": "object" } }, "required": [ "G", "R", "S" ], "type": "object" }, "yesterday": { "anyOf": [ { "additionalProperties": false, "description": "Levels SWPC assessed for the previous UTC day.", "properties": { "G": { "additionalProperties": false, "description": "Assessed G level.", "properties": { "label": { "description": "Label, e.g. \"G2\".", "type": "string" }, "scale": { "description": "Level 0–5.", "type": "number" }, "text": { "description": "Descriptor, e.g. \"Moderate\"; \"none\" at level 0.", "type": "string" } }, "required": [ "scale", "text", "label" ], "type": "object" }, "R": { "additionalProperties": false, "description": "Assessed R level.", "properties": { "label": { "description": "Label, e.g. \"G2\".", "type": "string" }, "scale": { "description": "Level 0–5.", "type": "number" }, "text": { "description": "Descriptor, e.g. \"Moderate\"; \"none\" at level 0.", "type": "string" } }, "required": [ "scale", "text", "label" ], "type": "object" }, "S": { "additionalProperties": false, "description": "Assessed S level.", "properties": { "label": { "description": "Label, e.g. \"G2\".", "type": "string" }, "scale": { "description": "Level 0–5.", "type": "number" }, "text": { "description": "Descriptor, e.g. \"Moderate\"; \"none\" at level 0.", "type": "string" } }, "required": [ "scale", "text", "label" ], "type": "object" }, "date": { "description": "Previous UTC day, e.g. \"2026-06-03\".", "type": "string" } }, "required": [ "date", "G", "R", "S" ], "type": "object" }, { "type": "null" } ], "description": "R/S/G levels assessed for the previous UTC day (a date, no time). Null when the feed lacks that period or a level; null never means level 0." } }, "type": "object" } }, { "description": "Planetary K-index (0–9 geomagnetic activity scale) — recent observed 3-hour values with their NOAA G-scale equivalents and aurora-latitude guidance, plus the 3-day Kp forecast series. Kp is the primary driver of aurora visibility and geomagnetic storm severity. SWPC reports Kp in thirds and starts each G level at that level’s \"minus\" value: Kp 4.67 (5−) is G1, Kp 6.67 (7−) is G3 (aurora to ~50° geomagnetic), Kp 8.67 (9−) is still G4, and only Kp 9 is G5 extreme. Use noaa_spaceweather_get_conditions for a combined snapshot including storm scales; use this tool when you need the Kp time series or forecast detail.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "window_days": { "default": 1, "description": "Number of past days of observed Kp to return (1–7, default 1). Larger windows show trend context.", "maximum": 7, "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "noaa_spaceweather_get_kp_index", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "observed", "forecast", "currentKp", "currentGScale", "auroraLatitude", "observedCount" ] }, { "required": [ "error" ] } ], "properties": { "auroraLatitude": { "description": "Aurora guidance for currentKp.", "type": "string" }, "currentGScale": { "description": "G level (0–5) for currentKp.", "type": "number" }, "currentKp": { "description": "Latest observed Kp; 0 when the window has none.", "type": "number" }, "error": { "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 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.", "examples": [ "feed_unavailable", "feed_moved" ], "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" }, "forecast": { "description": "Kp forecast series: estimated and predicted entries, no observed history.", "items": { "additionalProperties": false, "description": "One Kp forecast interval.", "properties": { "gLabel": { "description": "G label, e.g. \"G3\".", "type": "string" }, "gScale": { "description": "G level (0–5) derived from kp; matches noaaScale when stated.", "type": "number" }, "kp": { "description": "Forecast Kp value (0–9).", "type": "number" }, "noaaScale": { "description": "NOAA scale the feed states, e.g. \"G1\"; null when none.", "type": [ "string", "null" ] }, "observed": { "description": "\"estimated\" (near-real-time model) or \"predicted\".", "type": "string" }, "timeTag": { "description": "ISO 8601 forecast interval time tag.", "type": "string" } }, "required": [ "timeTag", "kp", "observed", "noaaScale", "gScale", "gLabel" ], "type": "object" }, "type": "array" }, "observed": { "description": "Observed Kp in the window, oldest first.", "items": { "additionalProperties": false, "description": "One observed 3-hour Kp interval.", "properties": { "auroraLatitude": { "description": "Aurora guidance for this Kp, in geomagnetic latitude.", "type": "string" }, "gLabel": { "description": "G label, e.g. \"G3\".", "type": "string" }, "gScale": { "description": "G level (0–5) for this Kp; G1 starts at 4.67, G5 at 9.", "type": "number" }, "kp": { "description": "Kp value (0–9).", "type": "number" }, "timeTag": { "description": "ISO 8601 3-hour interval time tag.", "type": "string" } }, "required": [ "timeTag", "kp", "gScale", "gLabel", "auroraLatitude" ], "type": "object" }, "type": "array" }, "observedCount": { "description": "Entries in observed.", "type": "number" } }, "type": "object" } }, { "description": "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.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "flare_hours": { "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" }, "include_regions": { "default": true, "description": "Include active solar region details (default true). Set false to skip region data and reduce response size.", "type": "boolean" } }, "type": "object" }, "name": "noaa_spaceweather_get_solar_activity", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "latestXray", "recentXray", "recentFlares", "f107", "probabilities", "latestProton", "sScale", "sScaleText", "activeRegions", "fetchedAt" ] }, { "required": [ "error" ] } ], "properties": { "activeRegions": { "description": "Active regions; empty when include_regions=false or none are active.", "items": { "additionalProperties": false, "description": "One active solar region.", "properties": { "areaMillionths": { "description": "Sunspot area in millionths of the hemisphere; null for a spotless region.", "type": [ "number", "null" ] }, "cFlareCount": { "description": "C-class flares SWPC credited to this region on observedDate.", "type": "number" }, "cFlareProbability": { "description": "C-class flare chance (%) for the UTC day after observedDate.", "type": "number" }, "firstObserved": { "description": "ISO 8601 UTC time SWPC first recorded this region.", "type": "string" }, "latitude": { "description": "Heliographic latitude, e.g. \"N17\".", "type": "string" }, "location": { "description": "Heliographic location, e.g. \"N17E47\".", "type": "string" }, "mFlareCount": { "description": "M-class flares SWPC credited to this region on observedDate.", "type": "number" }, "mFlareProbability": { "description": "M-class flare chance (%) for the UTC day after observedDate.", "type": "number" }, "magClass": { "description": "Magnetic class, e.g. \"B\"; empty for a spotless region.", "type": "string" }, "numberSpots": { "description": "Sunspot count; 0 for a spotless region.", "type": "number" }, "observedDate": { "description": "UTC observation date: the flare counts cover it, the probabilities the next day.", "type": "string" }, "protonProbability": { "description": "Proton event chance (%) for the UTC day after observedDate.", "type": "number" }, "region": { "description": "NOAA active region number.", "type": "number" }, "spotClass": { "description": "Sunspot class, e.g. \"Dsi\"; empty for a spotless region (plage).", "type": "string" }, "xFlareCount": { "description": "X-class flares SWPC credited to this region on observedDate.", "type": "number" }, "xFlareProbability": { "description": "X-class flare chance (%) for the UTC day after observedDate.", "type": "number" } }, "required": [ "region", "location", "latitude", "spotClass", "numberSpots", "magClass", "areaMillionths", "firstObserved", "cFlareCount", "mFlareCount", "xFlareCount", "cFlareProbability", "mFlareProbability", "xFlareProbability", "protonProbability", "observedDate" ], "type": "object" }, "type": "array" }, "error": { "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 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.", "examples": [ "feed_unavailable", "feed_moved" ], "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" }, "f107": { "anyOf": [ { "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" } ], "description": "Latest Noon report, SWPC's daily F10.7 value; null when the feed has none." }, "fetchedAt": { "description": "ISO 8601 fetch time.", "type": "string" }, "latestProton": { "anyOf": [ { "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" } ], "description": "Newest ≥10 MeV proton reading; null when the feed is empty." }, "latestXray": { "anyOf": [ { "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" } ], "description": "Newest X-ray reading; null when the feed is empty." }, "notice": { "description": "Set when no flare began in the flare_hours window: names the newest flare in the feed, or says the feed has none.", "type": "string" }, "probabilities": { "description": "3-day flare probability forecast.", "items": { "additionalProperties": false, "description": "Flare probabilities for one day.", "properties": { "cClass1Day": { "description": "Deprecated: use cClassProbability (same value).", "type": "number" }, "cClassProbability": { "description": "C-class flare chance (%) for this date.", "type": "number" }, "date": { "description": "Forecast date.", "type": "string" }, "mClass1Day": { "description": "Deprecated: use mClassProbability (same value).", "type": "number" }, "mClassProbability": { "description": "M-class flare chance (%) for this date.", "type": "number" }, "protonEventProbability": { "description": "≥10 MeV proton event chance (%) for this date.", "type": "number" }, "protons1Day": { "description": "Deprecated: use protonEventProbability (same value).", "type": "number" }, "xClass1Day": { "description": "Deprecated: use xClassProbability (same value).", "type": "number" }, "xClassProbability": { "description": "X-class flare chance (%) for this date.", "type": "number" } }, "required": [ "date", "cClass1Day", "cClassProbability", "mClass1Day", "mClassProbability", "xClass1Day", "xClassProbability", "protons1Day", "protonEventProbability" ], "type": "object" }, "type": "array" }, "recentFlares": { "description": "Flares with onset inside flare_hours, oldest first; empty when none began.", "items": { "additionalProperties": false, "description": "One GOES X-ray flare event.", "properties": { "beginClass": { "description": "Class at onset, e.g. \"B4.2\".", "type": "string" }, "beginTime": { "description": "ISO 8601 UTC onset time.", "type": "string" }, "endClass": { "description": "Class at decay; null while in progress.", "type": [ "string", "null" ] }, "endTime": { "description": "ISO 8601 UTC decay time; null while in progress.", "type": [ "string", "null" ] }, "maxClass": { "description": "Peak class as SWPC publishes it, e.g. \"M5.2\".", "type": "string" }, "maxTime": { "description": "ISO 8601 UTC peak time.", "type": "string" }, "peakFluxWm2": { "description": "Peak long-channel (0.1–0.8 nm) flux, in W/m².", "type": "number" }, "rScale": { "description": "R level (0–5) the peak flux implies; 0 is below R1.", "type": "number" }, "satellite": { "description": "GOES satellite number.", "type": "number" } }, "required": [ "beginTime", "maxTime", "endTime", "beginClass", "maxClass", "endClass", "peakFluxWm2", "rScale", "satellite" ], "type": "object" }, "type": "array" }, "recentXray": { "description": "X-ray readings from the past hour, oldest first.", "items": { "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": "array" }, "sScale": { "description": "Current S level (0–5) from latestProton; 0 without a reading.", "type": "number" }, "sScaleText": { "description": "S level descriptor, e.g. \"S2 moderate radiation storm\".", "type": "string" } }, "type": "object" } }, { "description": "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.", "inputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "properties": { "resolution": { "default": "reduced", "description": "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.", "enum": [ "summary", "reduced", "full" ], "type": "string" }, "window_hours": { "default": 3, "description": "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.", "maximum": 168, "minimum": 1, "type": "integer" } }, "type": "object" }, "name": "noaa_spaceweather_get_solar_wind", "outputSchema": { "$schema": "https://json-schema.org/draft/2020-12/schema", "additionalProperties": false, "anyOf": [ { "not": { "required": [ "error" ] }, "required": [ "plasma", "mag", "latestPlasma", "latestMag", "bzStatus", "plasmaCount", "magCount", "bzMinInWindow", "bzMinTimeTag", "bzSouthMinutesInWindow", "speedMaxInWindow", "speedMaxTimeTag", "densityMaxInWindow", "btMaxInWindow", "latestFeedPlasmaTime", "latestFeedMagTime", "feedStalenessHours" ] }, { "required": [ "error" ] } ], "properties": { "btMaxInWindow": { "description": "Peak Bt in nT across the whole window; null when it has no Bt.", "type": [ "number", "null" ] }, "bzMinInWindow": { "description": "Most southward Bz in nT across the whole window; null when it has no Bz.", "type": [ "number", "null" ] }, "bzMinTimeTag": { "description": "ISO 8601 time of bzMinInWindow; null when it is null.", "type": [ "string", "null" ] }, "bzSouthMinutesInWindow": { "description": "Minutes of Bz < 0: 1-minute mag records across the whole window. Feed gaps are not counted. 0 when none.", "type": "number" }, "bzStatus": { "description": "Bz status from latestMag, e.g. \"Southward Bz -14 nT — storm-driving conditions.\"; \"Bz data unavailable.\" without a reading.", "type": "string" }, "densityMaxInWindow": { "description": "Peak proton density in particles/cm³ across the whole window; null when none.", "type": [ "number", "null" ] }, "error": { "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 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.", "examples": [ "feed_unavailable", "feed_moved" ], "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" }, "feedStalenessHours": { "description": "Hours from the newest record in either feed to now; null when both are empty.", "type": [ "number", "null" ] }, "latestFeedMagTime": { "description": "ISO 8601 time of the newest mag record in the feed, window aside; null when none.", "type": [ "string", "null" ] }, "latestFeedPlasmaTime": { "description": "ISO 8601 time of the newest plasma record in the feed, window aside; null when none.", "type": [ "string", "null" ] }, "latestMag": { "anyOf": [ { "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" } ], "description": "Newest mag record in the window; null when the window has none." }, "latestPlasma": { "anyOf": [ { "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" } ], "description": "Newest plasma record in the window; null when the window has none." }, "mag": { "description": "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\".", "items": { "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": "array" }, "magBucketRecords": { "description": "Mag records per emitted record, 1 if untouched. Present only after a reduction.", "type": "number" }, "magCount": { "description": "Records in mag (magWindowRecords has the pre-reduction total); under \"summary\", the records the window held.", "type": "number" }, "magWindowRecords": { "description": "Mag records in the window before reduction. Present after a reduction or under \"summary\".", "type": "number" }, "notice": { "description": "What shaped the response: an empty window (with the newest feed record), series bounded to 200 records, or series omitted under \"summary\".", "type": "string" }, "plasma": { "description": "Plasma records in the window, oldest first. \"reduced\": at most 200, each its bucket's fastest speed, newest last. Empty under \"summary\".", "items": { "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": "array" }, "plasmaBucketRecords": { "description": "Plasma records per emitted record, 1 if untouched. Present only after a reduction.", "type": "number" }, "plasmaCount": { "description": "Records in plasma (plasmaWindowRecords has the pre-reduction total); under \"summary\", the records the window held.", "type": "number" }, "plasmaWindowRecords": { "description": "Plasma records in the window before reduction. Present after a reduction or under \"summary\".", "type": "number" }, "speedMaxInWindow": { "description": "Peak speed in km/s across the whole window; null when it has no speed.", "type": [ "number", "null" ] }, "speedMaxTimeTag": { "description": "ISO 8601 time of speedMaxInWindow; null when it is null.", "type": [ "string", "null" ] } }, "type": "object" } } ] }
Verify it yourselfcurl -s https://api.teppi.xyz/v1/evidence/sha256:fa07c62f113efecc7d568cdb2afb93114104291b5eb1a74176d5bd45b6c4f540 | sha256sum