Aviation Weather Center · Capability

AviationWeather.gov API — Weather Data

Weather Data — the operational aviation weather surface of the NOAA/NWS Aviation Weather Center. Lead operation: retrieve current METAR observations for one or more ICAO identifiers in raw, JSON, GeoJSON, XML, or IWXXM format. This capability also exposes Terminal Aerodrome Forecasts (TAFs), pilot reports (PIREPs/AIREPs), domestic SIGMETs, international SIGMETs, AIRMETs, US Graphical AIRMETs, TFM convective forecasts, CWSU center advisories, wind/temp point data, US area forecasts, area forecast discussions, and meteorological information statements. Self-contained Naftiko capability covering one Aviation Weather Center business surface.

Run with Naftiko Aviation Weather CenterNOAA NWSWeather Data

What You Can Do

GET
Getmetar — Get METAR observations.
/v1/metars
GET
Gettaf — Get Terminal Aerodrome Forecasts.
/v1/tafs
GET
Getpirep — Get Pilot Reports.
/v1/pireps
GET
Getairsigmet — Get Domestic SIGMETs.
/v1/air-sigmets
GET
Getisigmet — Get International SIGMETs.
/v1/i-sigmets
GET
Getgairmet — Get US Graphical AIRMETs.
/v1/g-airmets
GET
Getairmet — Get AIRMETs.
/v1/airmets
GET
Gettcf — Get TFM Convective Forecast.
/v1/convective-forecasts
GET
Getcwa — Get CWSU Center Weather Advisories.
/v1/center-advisories
GET
Getwindtemp — Get Wind and Temperature Point Data.
/v1/wind-temperatures
GET
Getareaforecast — Get US Area Forecasts.
/v1/area-forecasts
GET
Getforecastdiscussion — Get US Forecast Discussions.
/v1/forecast-discussions
GET
Getmis — Get Meteorological Information Statements.
/v1/meteorological-information-statements

MCP Tools

get-metar

Get METAR observations.

read-only idempotent
get-taf

Get Terminal Aerodrome Forecasts.

read-only idempotent
get-pirep

Get Pilot Reports.

read-only idempotent
get-air-sigmet

Get Domestic SIGMETs.

read-only idempotent
get-i-sigmet

Get International SIGMETs.

read-only idempotent
get-g-airmet

Get US Graphical AIRMETs.

read-only idempotent
get-airmet

Get AIRMETs.

read-only idempotent
get-convective-forecast

Get TFM Convective Forecast.

read-only idempotent
get-center-advisory

Get CWSU Center Weather Advisories.

read-only idempotent
get-wind-temperatures

Get Wind and Temperature Point Data.

read-only idempotent
get-area-forecast

Get US Area Forecasts.

read-only idempotent
get-forecast-discussion

Get US Forecast Discussions.

read-only idempotent
get-meteorological-information-statement

Get Meteorological Information Statements.

read-only idempotent

Capability Spec

aviationweather-weather-data.yaml Raw ↑
naftiko: "1.0.0-alpha2"

info:
  label: "AviationWeather.gov API — Weather Data"
  description: >-
    Weather Data — the operational aviation weather surface of the NOAA/NWS
    Aviation Weather Center. Lead operation: retrieve current METAR observations
    for one or more ICAO identifiers in raw, JSON, GeoJSON, XML, or IWXXM format.
    This capability also exposes Terminal Aerodrome Forecasts (TAFs), pilot reports
    (PIREPs/AIREPs), domestic SIGMETs, international SIGMETs, AIRMETs, US Graphical
    AIRMETs, TFM convective forecasts, CWSU center advisories, wind/temp point data,
    US area forecasts, area forecast discussions, and meteorological information
    statements. Self-contained Naftiko capability covering one Aviation Weather
    Center business surface.
  tags:
    - Aviation Weather Center
    - NOAA NWS
    - Weather Data
  created: "2026-05-29"
  modified: "2026-05-29"

binds:
  - namespace: env
    keys: {}

capability:

  # ── 1. Consumes — the upstream HTTP API this capability speaks to ─────
  consumes:
    - type: http
      namespace: "aviationweather-weather-data"
      baseUri: "https://aviationweather.gov"
      description: "Aviation Weather Center public Data API — Weather Data surface. Self-contained, no shared references."
      authentication:
        type: none
      resources:
        - name: "metar"
          path: "/api/data/metar"
          operations:
            - name: "getMetar"
              method: GET
              description: "Decoded aviation weather observations (METARs)."
              inputParameters:
                - name: "ids"
                  in: query
                  type: string
                  required: false
                  description: "Station identifiers (single ICAO, comma-list, or @<state>)."
                - name: "bbox"
                  in: query
                  type: string
                  required: false
                  description: "Bounding box: minLat,minLon,maxLat,maxLon."
                - name: "format"
                  in: query
                  type: string
                  required: false
                  description: "Response format (raw, decoded, json, geojson, xml, iwxxm)."
                - name: "taf"
                  in: query
                  type: boolean
                  required: false
                  description: "Include TAF alongside METAR."
                - name: "hours"
                  in: query
                  type: integer
                  required: false
                  description: "Hours back to retrieve."
                - name: "date"
                  in: query
                  type: string
                  required: false
                  description: "ISO 8601 date or Unix epoch."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "taf"
          path: "/api/data/taf"
          operations:
            - name: "getTaf"
              method: GET
              description: "Decoded Terminal Aerodrome Forecasts."
              inputParameters:
                - name: "ids"
                  in: query
                  type: string
                  required: false
                  description: "Station identifiers."
                - name: "bbox"
                  in: query
                  type: string
                  required: false
                  description: "Bounding box."
                - name: "format"
                  in: query
                  type: string
                  required: false
                  description: "Response format."
                - name: "metar"
                  in: query
                  type: boolean
                  required: false
                  description: "Include METAR alongside TAF."
                - name: "time"
                  in: query
                  type: string
                  required: false
                  description: "Process by valid or issue time."
                - name: "date"
                  in: query
                  type: string
                  required: false
                  description: "ISO 8601 date or Unix epoch."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "pirep"
          path: "/api/data/pirep"
          operations:
            - name: "getPirep"
              method: GET
              description: "Pilot reports issued in PIREP or AIREP format."
              inputParameters:
                - name: "id"
                  in: query
                  type: string
                  required: false
                  description: "Airport ID for center of search."
                - name: "distance"
                  in: query
                  type: integer
                  required: false
                  description: "Radial distance to search (nm)."
                - name: "bbox"
                  in: query
                  type: string
                  required: false
                  description: "Bounding box."
                - name: "format"
                  in: query
                  type: string
                  required: false
                  description: "Response format."
                - name: "age"
                  in: query
                  type: integer
                  required: false
                  description: "Hours back."
                - name: "level"
                  in: query
                  type: integer
                  required: false
                  description: "Level +-3000' to search."
                - name: "inten"
                  in: query
                  type: string
                  required: false
                  description: "Minimum intensity (lgt, mod, sev)."
                - name: "date"
                  in: query
                  type: string
                  required: false
                  description: "ISO 8601 date or Unix epoch."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "airsigmet"
          path: "/api/data/airsigmet"
          operations:
            - name: "getAirSigmet"
              method: GET
              description: "Domestic SIGMETs for the contiguous United States."
              inputParameters:
                - name: "format"
                  in: query
                  type: string
                  required: false
                  description: "Response format."
                - name: "hazard"
                  in: query
                  type: string
                  required: false
                  description: "Hazard (conv, turb, ice, ifr)."
                - name: "level"
                  in: query
                  type: integer
                  required: false
                  description: "Level +-3000'."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "isigmet"
          path: "/api/data/isigmet"
          operations:
            - name: "getISigmet"
              method: GET
              description: "Decoded international SIGMETs."
              inputParameters:
                - name: "format"
                  in: query
                  type: string
                  required: false
                  description: "Response format."
                - name: "hazard"
                  in: query
                  type: string
                  required: false
                  description: "Hazard (turb, ice)."
                - name: "level"
                  in: query
                  type: integer
                  required: false
                  description: "Level +-3000'."
                - name: "date"
                  in: query
                  type: string
                  required: false
                  description: "ISO 8601 date or Unix epoch."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "gairmet"
          path: "/api/data/gairmet"
          operations:
            - name: "getGAirmet"
              method: GET
              description: "Decoded G-AIRMETs for the contiguous United States."
              inputParameters:
                - name: "product"
                  in: query
                  type: string
                  required: false
                  description: "Product type (sierra, tango, zulu)."
                - name: "format"
                  in: query
                  type: string
                  required: false
                  description: "Response format."
                - name: "hazard"
                  in: query
                  type: string
                  required: false
                  description: "Hazard type."
                - name: "date"
                  in: query
                  type: string
                  required: false
                  description: "ISO 8601 date or Unix epoch."
                - name: "fore"
                  in: query
                  type: integer
                  required: false
                  description: "Forecast hour (0, 3, 6, 9, 12)."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "airmet"
          path: "/api/data/airmet"
          operations:
            - name: "getAirmet"
              method: GET
              description: "AIRMETs (text-format, primarily Alaska)."
              inputParameters:
                - name: "format"
                  in: query
                  type: string
                  required: false
                  description: "Response format."
                - name: "date"
                  in: query
                  type: string
                  required: false
                  description: "ISO 8601 date or Unix epoch."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "tcf"
          path: "/api/data/tcf"
          operations:
            - name: "getTcf"
              method: GET
              description: "TFM Convective Forecast."
              inputParameters:
                - name: "format"
                  in: query
                  type: string
                  required: false
                  description: "Response format."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "cwa"
          path: "/api/data/cwa"
          operations:
            - name: "getCwa"
              method: GET
              description: "CWSU Center Weather Advisories."
              inputParameters:
                - name: "cwsu"
                  in: query
                  type: string
                  required: false
                  description: "CWSU identifier (e.g. ZKC, ZNY)."
                - name: "format"
                  in: query
                  type: string
                  required: false
                  description: "Response format."
                - name: "hazard"
                  in: query
                  type: string
                  required: false
                  description: "Hazard type."
                - name: "date"
                  in: query
                  type: string
                  required: false
                  description: "ISO 8601 date or Unix epoch."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "windtemp"
          path: "/api/data/windtemp"
          operations:
            - name: "getWindTemp"
              method: GET
              description: "Wind and temperature point data forecast."
              inputParameters:
                - name: "region"
                  in: query
                  type: string
                  required: false
                  description: "Region (us, bos, mia, chi, dfw, slc, sfo, alaska, hawaii, other_pac)."
                - name: "level"
                  in: query
                  type: string
                  required: false
                  description: "Altitude band (low, high)."
                - name: "fcst"
                  in: query
                  type: integer
                  required: false
                  description: "Forecast hour."
              outputRawFormat: text
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "areafcst"
          path: "/api/data/areafcst"
          operations:
            - name: "getAreaForecast"
              method: GET
              description: "US Area Forecasts (legacy AFs)."
              inputParameters:
                - name: "region"
                  in: query
                  type: string
                  required: false
                  description: "Area forecast region identifier."
                - name: "date"
                  in: query
                  type: string
                  required: false
                  description: "ISO 8601 date or Unix epoch."
              outputRawFormat: text
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "fcstdisc"
          path: "/api/data/fcstdisc"
          operations:
            - name: "getForecastDiscussion"
              method: GET
              description: "US Forecast Discussions (AFD-style narratives)."
              inputParameters:
                - name: "cwa"
                  in: query
                  type: string
                  required: false
                  description: "WFO CWA identifier (e.g. eax, lwx)."
                - name: "type"
                  in: query
                  type: string
                  required: false
                  description: "Discussion type (afd, etc.)."
              outputRawFormat: text
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "mis"
          path: "/api/data/mis"
          operations:
            - name: "getMis"
              method: GET
              description: "Meteorological Information Statements from CWSUs."
              inputParameters:
                - name: "cwsu"
                  in: query
                  type: string
                  required: false
                  description: "CWSU identifier."
                - name: "format"
                  in: query
                  type: string
                  required: false
                  description: "Response format."
              outputRawFormat: text
              outputParameters:
                - name: result
                  type: object
                  value: "$."

  # ── 2. REST exposer — required default. One Spectral-compliant resource per consumed op ──
  exposes:
    - type: rest
      namespace: "aviationweather-weather-data-rest"
      port: 8080
      description: "REST adapter for AviationWeather.gov Weather Data. One Spectral-compliant resource per consumed operation, prefixed with /v1."
      resources:
        - path: "/v1/metars"
          name: "metars"
          description: "REST surface for METAR observations."
          operations:
            - method: GET
              name: "getMetar"
              description: "Get METAR observations."
              call: "aviationweather-weather-data.getMetar"
              with:
                ids: "rest.ids"
                bbox: "rest.bbox"
                format: "rest.format"
                taf: "rest.taf"
                hours: "rest.hours"
                date: "rest.date"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/tafs"
          name: "tafs"
          description: "REST surface for Terminal Aerodrome Forecasts."
          operations:
            - method: GET
              name: "getTaf"
              description: "Get Terminal Aerodrome Forecasts."
              call: "aviationweather-weather-data.getTaf"
              with:
                ids: "rest.ids"
                bbox: "rest.bbox"
                format: "rest.format"
                metar: "rest.metar"
                time: "rest.time"
                date: "rest.date"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/pireps"
          name: "pireps"
          description: "REST surface for Pilot Reports."
          operations:
            - method: GET
              name: "getPirep"
              description: "Get Pilot Reports."
              call: "aviationweather-weather-data.getPirep"
              with:
                id: "rest.id"
                distance: "rest.distance"
                bbox: "rest.bbox"
                format: "rest.format"
                age: "rest.age"
                level: "rest.level"
                inten: "rest.inten"
                date: "rest.date"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/air-sigmets"
          name: "air-sigmets"
          description: "REST surface for Domestic SIGMETs."
          operations:
            - method: GET
              name: "getAirSigmet"
              description: "Get Domestic SIGMETs."
              call: "aviationweather-weather-data.getAirSigmet"
              with:
                format: "rest.format"
                hazard: "rest.hazard"
                level: "rest.level"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/i-sigmets"
          name: "i-sigmets"
          description: "REST surface for International SIGMETs."
          operations:
            - method: GET
              name: "getISigmet"
              description: "Get International SIGMETs."
              call: "aviationweather-weather-data.getISigmet"
              with:
                format: "rest.format"
                hazard: "rest.hazard"
                level: "rest.level"
                date: "rest.date"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/g-airmets"
          name: "g-airmets"
          description: "REST surface for US Graphical AIRMETs."
          operations:
            - method: GET
              name: "getGAirmet"
              description: "Get US Graphical AIRMETs."
              call: "aviationweather-weather-data.getGAirmet"
              with:
                product: "rest.product"
                format: "rest.format"
                hazard: "rest.hazard"
                date: "rest.date"
                fore: "rest.fore"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/airmets"
          name: "airmets"
          description: "REST surface for AIRMETs."
          operations:
            - method: GET
              name: "getAirmet"
              description: "Get AIRMETs."
              call: "aviationweather-weather-data.getAirmet"
              with:
                format: "rest.format"
                date: "rest.date"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/convective-forecasts"
          name: "convective-forecasts"
          description: "REST surface for TFM Convective Forecast."
          operations:
            - method: GET
              name: "getTcf"
              description: "Get TFM Convective Forecast."
              call: "aviationweather-weather-data.getTcf"
              with:
                format: "rest.format"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/center-advisories"
          name: "center-advisories"
          description: "REST surface for CWSU Center Weather Advisories."
          operations:
            - method: GET
              name: "getCwa"
              description: "Get CWSU Center Weather Advisories."
              call: "aviationweather-weather-data.getCwa"
              with:
                cwsu: "rest.cwsu"
                format: "rest.format"
                hazard: "rest.hazard"
                date: "rest.date"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/wind-temperatures"
          name: "wind-temperatures"
          description: "REST surface for Wind/Temperature point data forecast."
          operations:
            - method: GET
              name: "getWindTemp"
              description: "Get Wind and Temperature Point Data."
              call: "aviationweather-weather-data.getWindTemp"
              with:
                region: "rest.region"
                level: "rest.level"
                fcst: "rest.fcst"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/area-forecasts"
          name: "area-forecasts"
          description: "REST surface for US Area Forecasts."
          operations:
            - method: GET
              name: "getAreaForecast"
              description: "Get US Area Forecasts."
              call: "aviationweather-weather-data.getAreaForecast"
              with:
                region: "rest.region"
                date: "rest.date"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/forecast-discussions"
          name: "forecast-discussions"
          description: "REST surface for US Forecast Discussions."
          operations:
            - method: GET
              name: "getForecastDiscussion"
              description: "Get US Forecast Discussions."
              call: "aviationweather-weather-data.getForecastDiscussion"
              with:
                cwa: "rest.cwa"
                type: "rest.type"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/meteorological-information-statements"
          name: "meteorological-information-statements"
          description: "REST surface for Meteorological Information Statements."
          operations:
            - method: GET
              name: "getMis"
              description: "Get Meteorological Information Statements."
              call: "aviationweather-weather-data.getMis"
              with:
                cwsu: "rest.cwsu"
                format: "rest.format"
              outputParameters:
                - type: object
                  mapping: "$."

  # ── 3. MCP exposer — required default. One verb-noun tool per consumed op ──
    - type: mcp
      namespace: "aviationweather-weather-data-mcp"
      port: 9090
      transport: http
      description: "MCP adapter for AviationWeather.gov Weather Data. One tool per consumed operation, routed inline through this capability's consumes block."
      tools:
        - name: "get-metar"
          description: "Get METAR observations."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "aviationweather-weather-data.getMetar"
          with:
            ids: "tools.ids"
            bbox: "tools.bbox"
            format: "tools.format"
            taf: "tools.taf"
            hours: "tools.hours"
            date: "tools.date"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "get-taf"
          description: "Get Terminal Aerodrome Forecasts."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "aviationweather-weather-data.getTaf"
          with:
            ids: "tools.ids"
            bbox: "tools.bbox"
            format: "tools.format"
            metar: "tools.metar"
            time: "tools.time"
            date: "tools.date"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "get-pirep"
          description: "Get Pilot Reports."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "aviationweather-weather-data.getPirep"
          with:
            id: "tools.id"
            distance: "tools.distance"
            bbox: "tools.bbox"
            format: "tools.format"
            age: "tools.age"
            level: "tools.level"
            inten: "tools.inten"
            date: "tools.date"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "get-air-sigmet"
          description: "Get Domestic SIGMETs."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "aviationweather-weather-data.getAirSigmet"
          with:
            format: "tools.format"
            hazard: "tools.hazard"
            level: "tools.level"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "get-i-sigmet"
          description: "Get International SIGMETs."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "aviationweather-weather-data.getISigmet"
          with:
            format: "tools.format"
            hazard: "tools.hazard"
            level: "tools.level"
            date: "tools.date"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "get-g-airmet"
          description: "Get US Graphical AIRMETs."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "aviationweather-weather-data.getGAirmet"
          with:
            product: "tools.product"
            format: "tools.format"
            hazard: "tools.hazard"
            date: "tools.date"
            fore: "tools.fore"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "get-airmet"
          description: "Get AIRMETs."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "aviationweather-weather-data.getAirmet"
          with:
            format: "tools.format"
            date: "tools.date"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "get-convective-forecast"
          description: "Get TFM Convective Forecast."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "aviationweather-weather-data.getTcf"
          with:
            format: "tools.format"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "get-center-advisory"
          description: "Get CWSU Center Weather Advisories."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "aviationweather-weather-data.getCwa"
          with:
            cwsu: "tools.cwsu"
            format: "tools.format"
            hazard: "tools.hazard"
            date: "tools.date"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "get-wind-temperatures"
          description: "Get Wind and Temperature Point Data."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "aviationweather-weather-data.getWindTemp"
          with:
            region: "tools.region"
            level: "tools.level"
            fcst: "tools.fcst"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "get-area-forecast"
          description: "Get US Area Forecasts."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "aviationweather-weather-data.getAreaForecast"
          with:
            region: "tools.region"
            date: "tools.date"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "get-forecast-discussion"
          description: "Get US Forecast Discussions."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "aviationweather-weather-data.getForecastDiscussion"
          with:
            cwa: "tools.cwa"
            type: "tools.type"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "get-meteorological-information-statement"
          description: "Get Meteorological Information Statements."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "aviationweather-weather-data.getMis"
          with:
            cwsu: "tools.cwsu"
            format: "tools.format"
          outputParameters:
            - type: object
              mapping: "$."