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: "$."