OpenUV · Capability

OpenUV API — UV Index

UV Index — current and forecast UV readings. 2 operations. Lead operation: Get Current UV Index. Self-contained Naftiko capability covering one OpenUV business surface for any latitude/longitude with optional altitude and datetime inputs.

Run with Naftiko OpenUVWeatherUV Index

What You Can Do

GET
Getcurrentuvindex — Get current UV index for a coordinate.
/v1/uv
GET
Getuvforecast — Get forecast UV index series for a coordinate.
/v1/forecast

MCP Tools

get-current-uv-index

Get current UV index, max UV, ozone, and skin-type safe exposure times for a coordinate.

read-only idempotent
get-uv-forecast

Get UV index forecast time series for a coordinate.

read-only idempotent

Capability Spec

openuv-uv-index.yaml Raw ↑
naftiko: "1.0.0-alpha2"

info:
  label: "OpenUV API — UV Index"
  description: >-
    UV Index — current and forecast UV readings. 2 operations. Lead operation: Get
    Current UV Index. Self-contained Naftiko capability covering one OpenUV
    business surface for any latitude/longitude with optional altitude and datetime
    inputs.
  tags:
    - OpenUV
    - Weather
    - UV Index
  created: "2026-05-29"
  modified: "2026-05-29"

binds:
  - namespace: env
    keys:
      OPENUV_API_KEY: OPENUV_API_KEY

capability:

  consumes:
    - type: http
      namespace: "openuv-uv-index"
      baseUri: "https://api.openuv.io/api/v1"
      description: "OpenUV API — UV Index business capability. Self-contained, no shared references."
      authentication:
        type: apikey
        key: x-access-token
        value: "{{env.OPENUV_API_KEY}}"
        placement: header
      resources:
        - name: "uv"
          path: "/uv"
          operations:
            - name: "getCurrentUVIndex"
              method: GET
              description: "Get current UV index, daily max, ozone, sun position, and safe exposure times for a coordinate."
              inputParameters:
                - name: "lat"
                  in: query
                  type: number
                  required: true
                  description: "Latitude in decimal degrees (-90 to 90)."
                - name: "lng"
                  in: query
                  type: number
                  required: true
                  description: "Longitude in decimal degrees (-180 to 180)."
                - name: "alt"
                  in: query
                  type: number
                  required: false
                  description: "Altitude in meters above sea level."
                - name: "dt"
                  in: query
                  type: string
                  required: false
                  description: "ISO 8601 datetime; defaults to now."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."
        - name: "forecast"
          path: "/forecast"
          operations:
            - name: "getUVForecast"
              method: GET
              description: "Get time-series UV index forecast for a coordinate with sun position per step."
              inputParameters:
                - name: "lat"
                  in: query
                  type: number
                  required: true
                  description: "Latitude in decimal degrees."
                - name: "lng"
                  in: query
                  type: number
                  required: true
                  description: "Longitude in decimal degrees."
                - name: "alt"
                  in: query
                  type: number
                  required: false
                  description: "Altitude in meters above sea level."
                - name: "dt"
                  in: query
                  type: string
                  required: false
                  description: "ISO 8601 anchor datetime; defaults to now."
              outputRawFormat: json
              outputParameters:
                - name: result
                  type: object
                  value: "$."

  exposes:
    - type: rest
      namespace: "openuv-uv-index-rest"
      port: 8080
      description: "REST adapter for OpenUV API — UV Index. One Spectral-compliant resource per consumed operation, prefixed with /v1."
      resources:
        - path: "/v1/uv"
          name: "uv"
          description: "REST surface for current UV index."
          operations:
            - method: GET
              name: "getCurrentUVIndex"
              description: "Get current UV index for a coordinate."
              call: "openuv-uv-index.getCurrentUVIndex"
              with:
                lat: "rest.lat"
                lng: "rest.lng"
                alt: "rest.alt"
                dt: "rest.dt"
              outputParameters:
                - type: object
                  mapping: "$."
        - path: "/v1/forecast"
          name: "forecast"
          description: "REST surface for the UV forecast time series."
          operations:
            - method: GET
              name: "getUVForecast"
              description: "Get forecast UV index series for a coordinate."
              call: "openuv-uv-index.getUVForecast"
              with:
                lat: "rest.lat"
                lng: "rest.lng"
                alt: "rest.alt"
                dt: "rest.dt"
              outputParameters:
                - type: object
                  mapping: "$."

    - type: mcp
      namespace: "openuv-uv-index-mcp"
      port: 9090
      transport: http
      description: "MCP adapter for OpenUV API — UV Index. One tool per consumed operation, routed inline through this capability's consumes block."
      tools:
        - name: "get-current-uv-index"
          description: "Get current UV index, max UV, ozone, and skin-type safe exposure times for a coordinate."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "openuv-uv-index.getCurrentUVIndex"
          with:
            lat: "tools.lat"
            lng: "tools.lng"
            alt: "tools.alt"
            dt: "tools.dt"
          outputParameters:
            - type: object
              mapping: "$."
        - name: "get-uv-forecast"
          description: "Get UV index forecast time series for a coordinate."
          hints:
            readOnly: true
            destructive: false
            idempotent: true
          call: "openuv-uv-index.getUVForecast"
          with:
            lat: "tools.lat"
            lng: "tools.lng"
            alt: "tools.alt"
            dt: "tools.dt"
          outputParameters:
            - type: object
              mapping: "$."