Weather forecast

Returns JSON with the hourly weather forecast for a latitude and longitude: temperature, precipitation, wind, humidity, cloud cover and a weather symbol, from MET Norway.

Use when you need a weather forecast, temperature or precipitation for the next hours or days at a place given by coordinates.

Do not use when you need historical weather, severe weather alerts or only have a place name (geocode it first).

Price: 0.003 USDC per call (x402, eip155:8453). Typical response time: 1500 ms (p95).

Call it over HTTP (x402)

POST https://x402-gateway.blackwoodstate8.workers.dev/v1/weather-forecast. A request without payment gets 402 Payment Required with the PAYMENT-REQUIRED header; any x402 client signs an EIP-3009 authorization and retries with PAYMENT-SIGNATURE (or X-PAYMENT). Invalid input is answered with 400 and not charged.

curl -i -X POST https://x402-gateway.blackwoodstate8.workers.dev/v1/weather-forecast -H 'content-type: application/json' -d '{"latitude":59.9139,"longitude":10.7522,"hours":3}'
Pay to0xD0DFEBa496c9E49419de5E44BC0638fAa7B19385
Asset0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 (USDC)
Amount3000 atomic units (0.003 USDC)
Authorization window60 s

Call it over MCP

Streamable HTTP at https://x402-gateway.blackwoodstate8.workers.dev/mcp, tool weather-forecast_v1. Payment goes in _meta["x402/payment"]; without it the tool returns the payment requirements.

Input

FieldTypeMeaning
latitudenumberLatitude in decimal degrees (WGS84), rounded to 4 decimals
longitudenumberLongitude in decimal degrees (WGS84), rounded to 4 decimals
hours (optional)integerHow many hours ahead to return (1-240, 48 when omitted); hourly at first, then every 6 hours

Example:

{
  "latitude": 59.9139,
  "longitude": 10.7522,
  "hours": 3
}

Output

Real example:

{
  "latitude": 59.9139,
  "longitude": 10.7522,
  "altitudeM": 5,
  "updatedAt": "2026-10-17T05:29:51Z",
  "hours": [
    {
      "time": "2026-10-17T05:00:00Z",
      "temperatureC": 6.3,
      "precipitationMm": 0,
      "precipitationHours": 1,
      "windSpeedMs": 3.1,
      "windFromDeg": 27,
      "humidityPct": 76.8,
      "cloudPct": 2.5,
      "pressureHpa": 1025.5,
      "symbol": "clearsky_night"
    },
    {
      "time": "2026-10-17T06:00:00Z",
      "temperatureC": 6,
      "precipitationMm": 0,
      "precipitationHours": 1,
      "windSpeedMs": 2.4,
      "windFromDeg": 8,
      "humidityPct": 75.7,
      "cloudPct": 0.1,
      "pressureHpa": 1026.9,
      "symbol": "clearsky_day"
    },
    {
      "time": "2026-10-17T07:00:00Z",
      "temperatureC": 6,
      "precipitationMm": 0,
      "precipitationHours": 1,
      "windSpeedMs": 2.1,
      "windFromDeg": 9,
      "humidityPct": 74.5,
      "cloudPct": 0,
      "pressureHpa": 1028,
      "symbol": "clearsky_day"
    },
    {
      "time": "2026-10-17T08:00:00Z",
      "temperatureC": 7.5,
      "precipitationMm": 0,
      "precipitationHours": 1,
      "windSpeedMs": 2.6,
      "windFromDeg": 10,
      "humidityPct": 69.8,
      "cloudPct": 0,
      "pressureHpa": 1029,
      "symbol": "clearsky_day"
    }
  ],
  "attribution": "Data from MET Norway (api.met.no), licensed under NLOD 2.0 and CC BY 4.0"
}
JSON Schema
{
  "type": "object",
  "properties": {
    "latitude": {
      "type": "number"
    },
    "longitude": {
      "type": "number"
    },
    "altitudeM": {
      "type": [
        "number",
        "null"
      ]
    },
    "updatedAt": {
      "type": "string"
    },
    "hours": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "time": {
            "type": "string"
          },
          "temperatureC": {
            "type": [
              "number",
              "null"
            ]
          },
          "precipitationMm": {
            "type": [
              "number",
              "null"
            ]
          },
          "precipitationHours": {
            "anyOf": [
              {
                "anyOf": [
                  {
                    "type": "number",
                    "const": 1
                  },
                  {
                    "type": "number",
                    "const": 6
                  }
                ]
              },
              {
                "type": "null"
              }
            ]
          },
          "windSpeedMs": {
            "type": [
              "number",
              "null"
            ]
          },
          "windFromDeg": {
            "type": [
              "number",
              "null"
            ]
          },
          "humidityPct": {
            "type": [
              "number",
              "null"
            ]
          },
          "cloudPct": {
            "type": [
              "number",
              "null"
            ]
          },
          "pressureHpa": {
            "type": [
              "number",
              "null"
            ]
          },
          "symbol": {
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "time",
          "temperatureC",
          "precipitationMm",
          "precipitationHours",
          "windSpeedMs",
          "windFromDeg",
          "humidityPct",
          "cloudPct",
          "pressureHpa",
          "symbol"
        ],
        "additionalProperties": false
      }
    },
    "attribution": {
      "type": "string"
    }
  },
  "required": [
    "latitude",
    "longitude",
    "altitudeM",
    "updatedAt",
    "hours",
    "attribution"
  ],
  "additionalProperties": false
}

More

Free schema and example: GET https://x402-gateway.blackwoodstate8.workers.dev/v1/weather-forecast. OpenAPI 3.1 · llms.txt · All services