80trust / 100

Aviation Taf

by Tanod skypeek in Weather & location

x402 APIPassing, checked 3 h ago

skypeek (Tanod) TAF forecasts, raw and decoded, for 1-20 stations (NOAA aviationweather.gov). Not for flight planning or navigation.

POST https://tanod.dev/v1/aviation/taf

Last 30 days

All checks passedSome failedAll failedNot checked
Uptime
100%
Response time
274 ms typical, 315 ms slowest 5%
Last check
3 h ago
Next check
any minute now

How to call it

# See the payment challenge (nothing is charged)
curl -i -X POST "https://tanod.dev/v1/aviation/taf" \
  -H "content-type: application/json" \
  -d '{"stations":["RPLL"]}'
import { wrapFetchWithPayment } from "@x402/fetch";
import { x402Client } from "@x402/core/client";
import { ExactEvmScheme } from "@x402/evm/exact/client";
import { privateKeyToAccount } from "viem/accounts";

const client = new x402Client().register(
  "eip155:8453",
  new ExactEvmScheme(privateKeyToAccount(process.env.AGENT_KEY)),
);
const pay = wrapFetchWithPayment(fetch, client);

// Not sure it's safe to pay? Preflight it first for $0.005:
// GET https://toolvet.app/api/v1/check?url=https%3A%2F%2Ftanod.dev%2Fv1%2Faviation%2Ftaf
const res = await pay("https://tanod.dev/v1/aviation/taf", {
  method: "POST",
  headers: { "content-type": "application/json" },
  body: JSON.stringify({"stations":["RPLL"]}),
});
console.log(await res.json());

Example input

{
  "stations": [
    "RPLL"
  ]
}

Example output

{
  "cache_seconds": 300,
  "count": 1,
  "disclaimer": "Informational only. Not for operational use or flight planning.",
  "found": 1,
  "kind": "taf",
  "source": {
    "license": "US Government work, public domain",
    "name": "NOAA Aviation Weather Center (aviationweather.gov Data API)",
    "notice": "Data: NOAA/NWS Aviation Weather Center. No endorsement by NOAA or the National Weather Service is implied.",
    "terms": "https://www.weather.gov/disclaimer",
    "url": "https://aviationweather.gov/data/api/"
  },
  "stations": [
    {
      "decoded": {
        "amended": false,
        "cancelled": false,
        "corrected": false,
        "forecast": [
          {
            "change": "BASE",
            "clouds": [
              {
                "cover": "FEW",
                "cover_text": "few",
                "height_ft": 2500,
                "type": null
              }
            ],
            "flight_category": "VFR",
            "from": {
              "day": 8,
              "hour": 0,
              "time_utc": "2026-10-08T00:00:00Z"
            },
            "to": {
              "day": 9,
              "hour": 6,
              "time_utc": "2026-10-09T06:00:00Z"
            },
            "visibility": {
              "meters": 9999,
              "qualifier": "greater_than_or_equal",
              "statute_miles": 6.21
            },
            "wind": {
              "calm": false,
              "direction_compass": "ESE",
              "direction_deg": 110,
              "gust": null,
              "gust_kt": null,
              "speed": 7,
              "speed_kt": 7,
              "unit": "KT",
              "variable": false
            }
          },
          {
            "change": "TEMPO",
            "clouds": [
              {
                "cover": "FEW",
                "cover_text": "few",
                "height_ft": 2300,
                "type": "CB"
              },
              {
                "cover": "BKN",
                "cover_text": "broken",
                "height_ft": 9000,
                "type": null
              }
            ],
            "flight_category": "VFR",
            "from": {
              "day": 8,
              "hour": 4,
              "time_utc": "2026-10-08T04:00:00Z"
            },
            "to": {
              "day": 8,
              "hour": 10,
              "time_utc": "2026-10-08T10:00:00Z"
            },
            "weather": [
              {
                "descriptors": [
                  "TS"
                ],
                "intensity": "light",
                "phenomena": [
                  "RA"
                ],
                "raw": "-TSRA",
                "text": "light thunderstorm rain"
              }
            ],
            "wind": {
              "calm": false,
              "direction_compass": "W",
              "direction_deg": 270,
              "gust": null,
              "gust_kt": null,
              "speed": 12,
          

Security scan

  • No findings. We scan names, descriptions and tool definitions for hidden instructions and other prompt-injection patterns.

Recent checks

WhenResultHTTPTimePrice
3 h agoPassed402315 ms$0.001
6 h agoPassed4021.0 s$0.001
11 h agoPassed402269 ms$0.001
14 h agoPassed402265 ms$0.001
18 h agoPassed402274 ms$0.001
21 h agoPassed402274 ms$0.001
25 h agoPassed402270 ms$0.001
30 h agoPassed402275 ms$0.001