{"skill":{"slug":"open-meteo-weather","displayName":"Accurate weather forecasts using Open-Meto API (no key required)","summary":"Fetch current weather conditions and 7-day daily forecasts for any location using the Open-Meteo API. Includes geocoding to resolve city names to coordinates...","description":"---\nname: open-meteo-weather\ndescription: >-\n  Fetch current weather conditions and 7-day daily forecasts for any location\n  using the Open-Meteo API. Includes geocoding to resolve city names to\n  coordinates. Free, no API key required.\n---\n\n# Open-Meteo Weather\n\nCurrent weather conditions and 7-day daily forecasts for any location. Uses the free Open-Meteo API with built-in geocoding. No API key, no authentication, no rate limits for non-commercial use.\n\n## Quick Reference\n\n| Action | Endpoint |\n|--------|----------|\n| Geocode city to lat/lon | `GET https://geocoding-api.open-meteo.com/v1/search?name={city}&count=1&language=en` |\n| Current + 7-day forecast | `GET https://api.open-meteo.com/v1/forecast?latitude={lat}&longitude={lon}&current=temperature_2m,relative_humidity_2m,apparent_temperature,weather_code,wind_speed_10m,wind_direction_10m,precipitation&daily=temperature_2m_max,temperature_2m_min,precipitation_sum,precipitation_probability_max,sunrise,sunset,wind_speed_10m_max,weather_code&timezone=auto` |\n\n## Units\n\nDefault to metric. On the first weather request in a session, ask the user: \"Do you prefer Celsius or Fahrenheit?\" Remember their answer for the rest of the session.\n\nFor metric (default), no extra parameters needed.\n\nFor imperial, append these parameters to the forecast URL:\n\n```\n&temperature_unit=fahrenheit&wind_speed_unit=mph&precipitation_unit=inch\n```\n\nThe response `current_units` and `daily_units` objects reflect the chosen system.\n\n## Geocoding\n\nResolve a city name to latitude/longitude before calling the forecast API.\n\n**Endpoint:** `GET https://geocoding-api.open-meteo.com/v1/search`\n\n| Parameter | Required | Description |\n|-----------|----------|-------------|\n| `name` | Yes | City name (minimum 2 characters) |\n| `count` | No | Number of results (default 10, max 100). Use `1` for best match. |\n| `language` | No | Response language (default `en`) |\n\n**Example:**\n\n```bash\ncurl \"https://geocoding-api.open-meteo.com/v1/search?name=Berlin&count=1&language=en\"\n```\n\n**Extract from the response:**\n\n| Field | Description |\n|-------|-------------|\n| `results[0].latitude` | Latitude (WGS84) |\n| `results[0].longitude` | Longitude (WGS84) |\n| `results[0].name` | Resolved city name |\n| `results[0].country` | Country name |\n| `results[0].admin1` | State/province |\n\nIf `results` is empty or missing, tell the user the location was not found and ask them to be more specific.\n\nIf multiple cities share the same name, use `count=5` and present the options (name, admin1, country) so the user can pick the right one.\n\n## Current Conditions\n\nInclude the `current` parameter in the forecast call.\n\n**Parameters to request:**\n\n```\ncurrent=temperature_2m,relative_humidity_2m,apparent_temperature,weather_code,wind_speed_10m,wind_direction_10m,precipitation\n```\n\n**Response fields:**\n\n| Field | Description |\n|-------|-------------|\n| `current.temperature_2m` | Temperature at 2m height |\n| `current.apparent_temperature` | Feels-like temperature (wind chill / heat index) |\n| `current.relative_humidity_2m` | Relative humidity percentage |\n| `current.weather_code` | WMO code (see Weather Codes below) |\n| `current.wind_speed_10m` | Wind speed at 10m height |\n| `current.wind_direction_10m` | Wind direction in degrees |\n| `current.precipitation` | Precipitation in the last hour |\n\nUnits are in the `current_units` object. Always include the unit when presenting values.\n\nConvert `wind_direction_10m` degrees to the nearest compass direction: N (338-22), NE (23-67), E (68-112), SE (113-157), S (158-202), SW (203-247), W (248-292), NW (293-337).\n\n## Daily Forecast\n\nInclude the `daily` parameter. Always add `timezone=auto` so times are in the location's local timezone.\n\n**Parameters to request:**\n\n```\ndaily=temperature_2m_max,temperature_2m_min,precipitation_sum,precipitation_probability_max,sunrise,sunset,wind_speed_10m_max,weather_code&timezone=auto\n```\n\nAll `daily` fields are arrays indexed by day. `daily.time` contains date strings (YYYY-MM-DD).\n\n| Field | Description |\n|-------|-------------|\n| `daily.time[i]` | Date |\n| `daily.weather_code[i]` | WMO code for the day |\n| `daily.temperature_2m_max[i]` | High temperature |\n| `daily.temperature_2m_min[i]` | Low temperature |\n| `daily.precipitation_sum[i]` | Total precipitation |\n| `daily.precipitation_probability_max[i]` | Max precipitation probability (%) |\n| `daily.sunrise[i]` | Sunrise time (ISO 8601, local) |\n| `daily.sunset[i]` | Sunset time (ISO 8601, local) |\n| `daily.wind_speed_10m_max[i]` | Max wind speed |\n\n## Weather Codes\n\nWMO weather interpretation codes returned in `weather_code` fields:\n\n| Code | Description |\n|------|-------------|\n| 0 | Clear sky |\n| 1 | Mainly clear |\n| 2 | Partly cloudy |\n| 3 | Overcast |\n| 45 | Fog |\n| 48 | Depositing rime fog |\n| 51 | Light drizzle |\n| 53 | Moderate drizzle |\n| 55 | Dense drizzle |\n| 56 | Light freezing drizzle |\n| 57 | Dense freezing drizzle |\n| 61 | Slight rain |\n| 63 | Moderate rain |\n| 65 | Heavy rain |\n| 66 | Light freezing rain |\n| 67 | Heavy freezing rain |\n| 71 | Slight snow |\n| 73 | Moderate snow |\n| 75 | Heavy snow |\n| 77 | Snow grains |\n| 80 | Slight rain showers |\n| 81 | Moderate rain showers |\n| 82 | Violent rain showers |\n| 85 | Slight snow showers |\n| 86 | Heavy snow showers |\n| 95 | Thunderstorm |\n| 96 | Thunderstorm with slight hail |\n| 99 | Thunderstorm with heavy hail |\n\nUse the description when presenting weather to the user. Do NOT show the numeric code.\n\n## Response Formatting\n\nPresent a concise summary. Do NOT show raw JSON, API URLs, or technical details.\n\n**Current conditions format:**\n\n```\nWeather in {city}, {country}\n{weather description}, {temperature} (feels like {apparent_temperature})\nHumidity: {humidity}%\nWind: {speed} from the {compass_direction}\nPrecipitation: {amount}\n```\n\n**Forecast format:**\n\nAfter current conditions, show the 7-day outlook as a compact list with one line per day:\n\n```\nMon Feb 24: Partly cloudy, 8/3C, 10% rain, wind 15 km/h\nTue Feb 25: Rain, 6/2C, 80% rain, 4.2mm, wind 25 km/h\n```\n\nIf the user asks a specific question (\"Will it rain tomorrow?\", \"What's the temperature on Friday?\"), answer directly instead of showing the full forecast.\n\n## Error Handling\n\nIf any API call returns a non-200 status or the response cannot be parsed, inform the user that the weather service is temporarily unavailable and suggest trying again in a few minutes. Do NOT show raw error messages or status codes.\n","topics":["Current Weather"],"tags":{"latest":"1.0.0"},"stats":{"comments":0,"downloads":389,"installsAllTime":14,"installsCurrent":5,"stars":0,"versions":1},"createdAt":1772017469562,"updatedAt":1778491636632},"latestVersion":{"version":"1.0.0","createdAt":1772017469562,"changelog":"- Initial release of open-meteo-weather skill.\n- Fetches current weather and 7-day daily forecasts for any location worldwide using the Open-Meteo API.\n- Supports geocoding to resolve city names to coordinates (no API key required).\n- Option to choose between Celsius (default) and Fahrenheit units, remembered per session.\n- Presents weather in a concise, user-friendly summary.\n- Handles ambiguous city names and API errors with helpful prompts.","license":null},"metadata":null,"owner":{"handle":"deiu","userId":"s179nyjt42tzep5mexncptv6dh8855v2","displayName":"Andrei","image":"https://avatars.githubusercontent.com/u/346820?v=4"},"moderation":null}