## Tool: `lookup_weather`

Retrieves comprehensive environmental intelligence for a location, including Weather, Air Quality (AQI \& pollutants), and Pollen (tree, grass, weed, and plant species allergen levels): current conditions, hourly forecasts/history, and daily forecasts for Weather and Air Quality; Pollen is a daily forecast only (today through +4 days, no hourly or past data). **Available Environmental Domains \& Capabilities (`capabilities`: `WEATHER`, `AIR_QUALITY`, `POLLEN` --- CRITICAL):** \* **Mandatory Explicit Selection:** You **MUST** include at least one of `WEATHER`, `AIR_QUALITY`, or `POLLEN` in `capabilities` on every call. Omitting `capabilities` is **NOT allowed** . \* **Broad / Ambiguous Outdoor Queries (Full Ambient Outdoor Suite):** If the user asks a general outdoor, travel, or situational question without restricting to a specific domain (e.g., "What are outdoor conditions like right now for a run?"), **explicitly include all three capabilities** (`capabilities: ["WEATHER", "AIR_QUALITY", "POLLEN"]`) to return the complete ambient outdoor suite (Weather + Air Quality + Pollen); for a past `date`/`hour`, leave out `POLLEN`, which has no history. \* **Targeted Domain Selection (Specific Queries):** If the user asks specifically for only one or two domains (e.g., "What is the AQI in Seattle right now?"), include **only** the requested capabilities (`WEATHER`, `AIR_QUALITY`, and/or `POLLEN`). Only the requested domain(s) will be executed and returned. **Specific Data Available by Domain:** \* **Weather (`weather`):** Temperature (Current, Feels Like, Max/Min, Heat Index), Wind (Speed, Gusts, Direction), Celestial Events (Sunrise/Sunset, Moon Phase), Precipitation (Type, Probability, Quantity/QPF), and Atmospheric Conditions (UV Index, Humidity, Cloud Cover, Thunderstorm Probability, Air Pressure). \* **Air Quality (`air_quality`):** Universal \& Local Air Quality Indexes (AQI value, category, dominant pollutant), Health Recommendations across 7 sensitivity groups, and Pollutant Concentrations (`include_pollutant_concentration: true`). Each index has its own dominant pollutant; report it per index (e.g., don't give the Universal AQI's pollutant for the US AQI). \* **Pollen (`pollen`):** Daily Universal Pollen Index (UPI, 0--5) per Tree, Grass, and Weed category and per plant species (`index.value` with its `index.category`, e.g. 1 = "Very Low"), in-season status, cross-reactions, and health recommendations. \* **Missing Pollen Fields:** a missing `in_season` means not in season. Leave out plant species returned without an `index`, unless the user asks about that plant; then say no pollen data is reported for it today (don't infer a level). **Location Rules (CRITICAL):** The target location MUST be specified in `location` using **ONLY ONE** of the following `oneof` sub-fields: 1. **Geographic Coordinates (`lat_lng`):** \* Use when exact latitude/longitude coordinates are known. \* Example: `{"location": {"lat_lng": {"latitude": 34.0522, "longitude": -118.2437}}}` 2. **Place ID (`place_id`):** \* An unambiguous Google Maps Place ID (e.g., obtained from `search_places` or `resolve_names`). \* Example: `{"location": {"place_id": "ChIJLU7jZClu5kcR4PcOOO6p3I0"}}` 3. **Address String (`address`):** \* A city/region, neighborhood, landmark or point of interest, street address, or postal code, ideally with the city/country. \* Example: `{"location": {"address": "Paris, France"}}` **Time \& Usage Modes (`date` and `hour` --- CRITICAL):** \* **Local Timezone Reference:** All `date` (`{year, month, day}`) and `hour` (`0-23`) inputs MUST be expressed in the **requested `location`'s local civil time zone** (e.g., a query for `"Paris tomorrow at 13:00"` uses `Europe/Paris` local date and hour `13`), never UTC or the caller's time zone. \* **1. Current Conditions (`date` omitted AND `hour` omitted):** \* Provide `location` and the target `capabilities` (`WEATHER`, `AIR_QUALITY`, `POLLEN`). Do **NOT** specify `date` or `hour`. \* Returns real-time Current Conditions (`CC`) for the requested domain(s) (current Weather, current-hour Air Quality, and/or today's Pollen forecast). \* For **Air Quality** , Current Conditions is a **single hour** : do **NOT** use it alone to answer air quality or broad outdoor questions about **today** as a whole (use Daily Queries below). \* **2. Hourly Forecast / History (`date` specified AND `hour` specified `0-23`):** \* Provide `location`, `date` (`{year, month, day}`), `hour` (`0-23`), and the target `capabilities`. If minutes are mentioned, round down to the nearest hour. \* **CRITICAL CONSTRAINT (`date` is REQUIRED when `hour` is set):** Providing `hour` without `date` (`date` omitted, `hour` set) is **NOT allowed** and will fail with an error. Even when the user asks about a specific hour **today** (e.g., `"at 13:00 today"`), you **MUST** populate both `date` (today's date at `location`) and `hour`. \* Executes an hourly lookup for requested Weather and/or Air Quality at `YYYY-MM-DD-HH` and a daily lookup for requested Pollen on `YYYY-MM-DD`. \* **Weather "when" questions:** for **weather** questions asking **when / what time / best time** (e.g., `"what time will it stop raining?"`), use hourly `WEATHER` calls (`date` + `hour`) for the relevant hours. A daily Weather forecast has no hourly values. For **broad outdoor** "when / best time" questions (e.g., `"when is the best time to go walking today?"`), make these hourly `WEATHER` calls in addition to the full-day call for Air Quality (and Pollen) described under Daily Queries. \* **3. Daily Queries (`date` specified AND `hour` omitted):** \* Provide `location`, `date` (`{year, month, day}` in the requested `location`'s local civil time) without `hour`, and the target `capabilities` for full-day queries (e.g., `"weather and pollen in London tomorrow"`). \* **Air Quality and broad outdoor questions about today:** for **air quality** questions and **broad outdoor** questions (which include Air Quality) about **today** (e.g., `"how will the air quality change today"`, `"is today a good day for a picnic?"`), set `date` to **today's date at `location`** (hour omitted) to get the day's hourly Air Quality series. A Current Conditions call alone returns only the current hour of Air Quality and is not enough; you may add one if the user also asks about "now". \* **Air Quality time windows:** for an air quality question about a window within one day (e.g., `"air quality between noon and 6 PM"`), prefer **one Daily call** for that date and read the window's hours from the Air Quality series, rather than sampling individual hours. If you use hourly calls, cover **every** hour of the window. \* Returns daily forecasts for requested **Weather** and/or **Pollen** , and the day's hourly **Air Quality** series covering the full local day (00:00--23:00 local): 24 historical hours for a past date, 24 forecasted hours for a future date, and for **today** the earlier hours (history), the current hour, and the remaining hours (forecast). **Supported Time Horizons by Domain:** \* **Weather:** Hourly from 24 hours ago up to 240 hours (10 days) ahead (past hours need both `date` and `hour`); daily up to 10 days including today (today through +9 days); no daily history. \* **Air Quality:** Hourly from 720 hours (30 days) ago up to 96 hours (4 days) ahead; a full-day call must fit inside that window (in practice today −29 days through +3 days). \* **Pollen:** Daily only, today through +4 days (5 days including today); no past dates, and `hour` is ignored. \* *(Note: If several capabilities are requested and the `date`/`hour` is outside one of their ranges, the call still succeeds and returns only the supported ones.)* \* **Out-of-range requests:** If a requested date or hour may be outside a domain's supported range above (e.g., Pollen for a past date), still call `lookup_weather` for the **requested** date/hour; the error states the supported range. Do **not** call a different date, hour, or domain as a substitute. **Domain Options \& Attribution:** \* **Language (`language_code`):** Optional BCP-47 language code (e.g., `"fr"`). Defaults to `"en"`. \* **Weather Units (`weather_options.units_system` or `units_system`):** Defaults to `METRIC`. Set to `IMPERIAL` (Fahrenheit/mph) if the user implies US standards or explicitly requests Imperial units. Supported in both `weather_options.units_system` (preferred) and top-level `units_system`; if both are specified, they must not conflict. \* **Air Quality Options (`air_quality_options`):** Set `include_pollutant_concentration: true` when specific pollutant concentrations (PM2.5, PM10, O3, NO2, SO2, CO) are needed; optionally set `index_region_code` (2-letter ISO country code, e.g., `"US"`) to request a specific regional AQI scale. By default, the response includes the Universal AQI and the location's regional AQI. \* **Attribution:** Grounded output MUST be attributed to the source using the `attribution` field inside each returned domain container (`weather.attribution`, `air_quality.attribution`, `pollen.attribution`). \* **Returned Times:** Air Quality `date_time` values are already in the location's local time (`utc_offset` included); present them as-is. Weather `date_time` (current and hourly) and sunrise/sunset times are UTC; convert them to the location's local time using `time_zone`. Label all times as local.

The following code sample shows how to use `curl` to call the `lookup_weather` MCP tool.

| Curl Request |
|---|
| ```bash curl --location 'https://mapstools.googleapis.com/mcp' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "lookup_weather", "arguments": { // Provide these details according to the MCP tool specification. } }, "jsonrpc": "2.0", "id": 1 }' ``` |

## Input Schema

Request for the LookupWeather method - represents the weather conditions at the requested location.

### LookupWeatherRequest

| JSON representation |
|---|
| ``` { "unitsSystem": enum (`UnitsSystem`), "location": { object (`Location`) }, "capabilities": [ enum (`Capability`) ], // Union field `_date` can be only one of the following: "date": { object (`Date`) } // End of list of possible types for union field `_date`. // Union field `_hour` can be only one of the following: "hour": integer // End of list of possible types for union field `_hour`. // Union field `_language_code` can be only one of the following: "languageCode": string // End of list of possible types for union field `_language_code`. // Union field `_weather_options` can be only one of the following: "weatherOptions": { object (`WeatherOptions`) } // End of list of possible types for union field `_weather_options`. // Union field `_air_quality_options` can be only one of the following: "airQualityOptions": { object (`AirQualityOptions`) } // End of list of possible types for union field `_air_quality_options`. } ``` |

| Fields ||
|---|---|
| `unitsSystem` | ``enum (`UnitsSystem`)`` Optional. The units system to use for the returned weather conditions. If not provided, the returned weather conditions will be in the metric system (default = METRIC). |
| `location` | ``object (`Location`)`` Required. The location to get the weather conditions for. |
| `capabilities[]` | ``enum (`Capability`)`` Optional. The environmental capabilities to include in the response. |
| Union field `_date`. `_date` can be only one of the following: ||
| `date` | ``object (`Date`)`` Optional. Specifies the date of the requested environmental information, relative to the local timezone of the location specified in the `location` field. Supported date ranges depend on the requested capabilities: - `WEATHER`: up to 24 hours in the past (when `hour` is also set) and up to 10 days (240 hours) in the future (today through +9 days for daily forecasts). - `AIR_QUALITY`: up to 30 days (720 hours) in the past and up to 4 days (96 hours) in the future. - `POLLEN`: today through +4 days (up to 5 days including today; historical dates are not supported). |
|   ||
| Union field `_hour`. `_hour` can be only one of the following: ||
| `hour` | `integer` Optional. Specifies the hour of the requested environmental information, in 24-hour format (0-23), relative to the local timezone of the location specified in the `location` field. Requires `date` to be specified. Supported hourly ranges depend on the requested capabilities: - `WEATHER`: up to 24 hours in the past and up to 240 hours (10 days) in the future. - `AIR_QUALITY`: up to 30 days (720 hours) in the past and up to 4 days (96 hours) in the future. - `POLLEN`: returns daily forecasts only; `hour` is ignored for pollen. |
|   ||
| Union field `_language_code`. `_language_code` can be only one of the following: ||
| `languageCode` | `string` Optional. The BCP-47 language code for localized text in the response (e.g. "en", "ja", "fr-CA"). Defaults to "en" if not specified. |
|   ||
| Union field `_weather_options`. `_weather_options` can be only one of the following: ||
| `weatherOptions` | ``object (`WeatherOptions`)`` Optional. Options specific to weather requests. `weather_options.units_system` is supported in tandem with top-level `units_system` (tag 4) to preserve backwards compatibility for existing callers; returns INVALID_ARGUMENT if both specify conflicting unit systems. Ignored if `WEATHER` is not requested in `capabilities`. |
|   ||
| Union field `_air_quality_options`. `_air_quality_options` can be only one of the following: ||
| `airQualityOptions` | ``object (`AirQualityOptions`)`` Optional. Options specific to air quality requests. Ignored if `AIR_QUALITY` is not requested in `capabilities`. |
|   ||

### Date

| JSON representation |
|---|
| ``` { "year": integer, "month": integer, "day": integer } ``` |

| Fields ||
|---|---|
| `year` | `integer` Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year. |
| `month` | `integer` Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day. |
| `day` | `integer` Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant. |

### Location

| JSON representation |
|---|
| ``` { // Union field `location_type` can be only one of the following: "latLng": { object (`LatLng`) }, "placeId": string, "address": string // End of list of possible types for union field `location_type`. } ``` |

| Fields ||
|---|---|
| Union field `location_type`. Different ways to represent a location. `location_type` can be only one of the following: ||
| `latLng` | ``object (`LatLng`)`` A point specified using geographic coordinates. |
| `placeId` | `string` The Place ID associated with the location. |
| `address` | `string` Human-readable address (e.g., street address, city, or postal code). |
|   ||

### LatLng

| JSON representation |
|---|
| ``` { "latitude": number, "longitude": number } ``` |

| Fields ||
|---|---|
| `latitude` | `number` The latitude in degrees. It must be in the range \[-90.0, +90.0\]. |
| `longitude` | `number` The longitude in degrees. It must be in the range \[-180.0, +180.0\]. |

### WeatherOptions

| JSON representation |
|---|
| ``` { "unitsSystem": enum (`UnitsSystem`) } ``` |

| Fields ||
|---|---|
| `unitsSystem` | ``enum (`UnitsSystem`)`` Optional. The units system to use for the returned weather conditions. If not provided, the returned weather conditions will be in the metric system (default = METRIC). |

### AirQualityOptions

| JSON representation |
|---|
| ``` { // Union field `_include_pollutant_concentration` can be only one of the // following: "includePollutantConcentration": boolean // End of list of possible types for union field // `_include_pollutant_concentration`. // Union field `_index_region_code` can be only one of the following: "indexRegionCode": string // End of list of possible types for union field `_index_region_code`. } ``` |

| Fields ||
|---|---|
| Union field `_include_pollutant_concentration`. `_include_pollutant_concentration` can be only one of the following: ||
| `includePollutantConcentration` | `boolean` Optional. If true, includes detailed pollutant concentrations and additional information (sources and effects) in the air quality response. |
|   ||
| Union field `_index_region_code`. `_index_region_code` can be only one of the following: ||
| `indexRegionCode` | `string` Optional. Two-letter ISO 3166-1 alpha-2 country/region code (e.g. "US", "FR", "CN") used to select the preferred local Air Quality Index (AQI) scale alongside the Universal AQI (UAQI). If not specified, defaults to the region of the requested location. |
|   ||

### UnitsSystem

Represents the units system used to measure values.

| Enums ||
|---|---|
| `UNITS_SYSTEM_UNSPECIFIED` | The units system is unspecified. |
| `IMPERIAL` | The imperial units system (e.g. Fahrenheit, miles, etc). |
| `METRIC` | The metric units system (e.g. Celsius, kilometers, etc). |

### Capability

Environmental capabilities that can be requested in `LookupWeatherRequest`.

| Enums ||
|---|---|
| `CAPABILITY_UNSPECIFIED` | Unspecified capability. |
| `WEATHER` | Weather conditions (temperature, precipitation, wind, UV, etc.). |
| `AIR_QUALITY` | Air quality information (AQI, pollutants, and health recommendations). |
| `POLLEN` | Pollen information (tree, grass, weed, and plant species allergen levels). |

## Output Schema

Response for the LookupWeather RPC - represents the weather conditions at the requested location.

This response represent both Hourly and Daily information, therefore the response is split in three sections Hourly, Daily and Shared. Only-Hourly, Only-Daily fields are marked as optional. For fields that are shared between Hourly and Daily information, some are always present so they are not marked as optional while the rest are marked as optional because they are not always available.

### LookupWeatherResponse

| JSON representation |
|---|
| ``` { "weatherCondition": { object (`WeatherCondition`) }, "precipitation": { object (`Precipitation`) }, "wind": { object (`Wind`) }, "returnedLocation": { object (`Location`) }, "attribution": { object (`Attribution`) }, // Union field `_temperature` can be only one of the following: "temperature": { object (`Temperature`) } // End of list of possible types for union field `_temperature`. // Union field `_feels_like_temperature` can be only one of the following: "feelsLikeTemperature": { object (`Temperature`) } // End of list of possible types for union field `_feels_like_temperature`. // Union field `_heat_index` can be only one of the following: "heatIndex": { object (`Temperature`) } // End of list of possible types for union field `_heat_index`. // Union field `_air_pressure` can be only one of the following: "airPressure": { object (`AirPressure`) } // End of list of possible types for union field `_air_pressure`. // Union field `_max_temperature` can be only one of the following: "maxTemperature": { object (`Temperature`) } // End of list of possible types for union field `_max_temperature`. // Union field `_min_temperature` can be only one of the following: "minTemperature": { object (`Temperature`) } // End of list of possible types for union field `_min_temperature`. // Union field `_feels_like_max_temperature` can be only one of the following: "feelsLikeMaxTemperature": { object (`Temperature`) } // End of list of possible types for union field `_feels_like_max_temperature`. // Union field `_feels_like_min_temperature` can be only one of the following: "feelsLikeMinTemperature": { object (`Temperature`) } // End of list of possible types for union field `_feels_like_min_temperature`. // Union field `_max_heat_index` can be only one of the following: "maxHeatIndex": { object (`Temperature`) } // End of list of possible types for union field `_max_heat_index`. // Union field `_sun_events` can be only one of the following: "sunEvents": { object (`SunEvents`) } // End of list of possible types for union field `_sun_events`. // Union field `_moon_events` can be only one of the following: "moonEvents": { object (`MoonEvents`) } // End of list of possible types for union field `_moon_events`. // Union field `_relative_humidity` can be only one of the following: "relativeHumidity": integer // End of list of possible types for union field `_relative_humidity`. // Union field `_uv_index` can be only one of the following: "uvIndex": integer // End of list of possible types for union field `_uv_index`. // Union field `_thunderstorm_probability` can be only one of the following: "thunderstormProbability": integer // End of list of possible types for union field `_thunderstorm_probability`. // Union field `_cloud_cover` can be only one of the following: "cloudCover": integer // End of list of possible types for union field `_cloud_cover`. // Union field `_weather` can be only one of the following: "weather": { object (`WeatherResultData`) } // End of list of possible types for union field `_weather`. // Union field `_air_quality` can be only one of the following: "airQuality": { object (`AirQualityResultData`) } // End of list of possible types for union field `_air_quality`. // Union field `_pollen` can be only one of the following: "pollen": { object (`PollenResultData`) } // End of list of possible types for union field `_pollen`. // Union field `_time_zone` can be only one of the following: "timeZone": string // End of list of possible types for union field `_time_zone`. } ``` |

| Fields ||
|---|---|
| `weatherCondition` | ``object (`WeatherCondition`)`` The weather condition |
| `precipitation` | ``object (`Precipitation`)`` The precipitation probability and amount of precipitation accumulated |
| `wind` | ``object (`Wind`)`` The wind conditions |
| `returnedLocation` | ``object (`Location`)`` Required. The location where the weather information is returned. This location is identical to the location in the request, but can be different from it if the requested location is a free text address that looks up to a coarse location (e.g. "Mountain View, CA"). |
| `attribution` | ``object (`Attribution`)`` Required attribution to show with the weather. |
| Union field `_temperature`. `_temperature` can be only one of the following: ||
| `temperature` | ``object (`Temperature`)`` The hourly temperature |
|   ||
| Union field `_feels_like_temperature`. `_feels_like_temperature` can be only one of the following: ||
| `feelsLikeTemperature` | ``object (`Temperature`)`` The hourly measure of how the temperature feels like. |
|   ||
| Union field `_heat_index`. `_heat_index` can be only one of the following: ||
| `heatIndex` | ``object (`Temperature`)`` The hourly heat index temperature. |
|   ||
| Union field `_air_pressure`. `_air_pressure` can be only one of the following: ||
| `airPressure` | ``object (`AirPressure`)`` The hourly air pressure conditions. |
|   ||
| Union field `_max_temperature`. `_max_temperature` can be only one of the following: ||
| `maxTemperature` | ``object (`Temperature`)`` The maximum (high) temperature throughout the day. |
|   ||
| Union field `_min_temperature`. `_min_temperature` can be only one of the following: ||
| `minTemperature` | ``object (`Temperature`)`` The minimum (low) temperature throughout the day. |
|   ||
| Union field `_feels_like_max_temperature`. `_feels_like_max_temperature` can be only one of the following: ||
| `feelsLikeMaxTemperature` | ``object (`Temperature`)`` The maximum (high) feels-like temperature throughout the day. |
|   ||
| Union field `_feels_like_min_temperature`. `_feels_like_min_temperature` can be only one of the following: ||
| `feelsLikeMinTemperature` | ``object (`Temperature`)`` The minimum (low) feels-like temperature throughout the day. |
|   ||
| Union field `_max_heat_index`. `_max_heat_index` can be only one of the following: ||
| `maxHeatIndex` | ``object (`Temperature`)`` The maximum heat index temperature throughout the day. |
|   ||
| Union field `_sun_events`. `_sun_events` can be only one of the following: ||
| `sunEvents` | ``object (`SunEvents`)`` The events related to the sun (e.g. sunrise, sunset). |
|   ||
| Union field `_moon_events`. `_moon_events` can be only one of the following: ||
| `moonEvents` | ``object (`MoonEvents`)`` The events related to the moon (e.g. moonrise, moonset). |
|   ||
| Union field `_relative_humidity`. `_relative_humidity` can be only one of the following: ||
| `relativeHumidity` | `integer` The percent of relative humidity (values from 0 to 100). |
|   ||
| Union field `_uv_index`. `_uv_index` can be only one of the following: ||
| `uvIndex` | `integer` The maximum ultraviolet (UV) index. |
|   ||
| Union field `_thunderstorm_probability`. `_thunderstorm_probability` can be only one of the following: ||
| `thunderstormProbability` | `integer` The thunderstorm probability (values from 0 to 100). |
|   ||
| Union field `_cloud_cover`. `_cloud_cover` can be only one of the following: ||
| `cloudCover` | `integer` The percentage of the sky covered by clouds (values from 0 to 100). |
|   ||
| Union field `_weather`. `_weather` can be only one of the following: ||
| `weather` | ``object (`WeatherResultData`)`` Weather conditions at the requested location. |
|   ||
| Union field `_air_quality`. `_air_quality` can be only one of the following: ||
| `airQuality` | ``object (`AirQualityResultData`)`` Air quality information at the requested location. |
|   ||
| Union field `_pollen`. `_pollen` can be only one of the following: ||
| `pollen` | ``object (`PollenResultData`)`` Pollen information at the requested location. |
|   ||
| Union field `_time_zone`. `_time_zone` can be only one of the following: ||
| `timeZone` | `string` Resolved IANA timezone string for the location (e.g., "America/New_York", "Asia/Tokyo"). |
|   ||

### Temperature

| JSON representation |
|---|
| ``` { "unit": enum (`Unit`), // Union field `_degrees` can be only one of the following: "degrees": number // End of list of possible types for union field `_degrees`. } ``` |

| Fields ||
|---|---|
| `unit` | ``enum (`Unit`)`` Optional. The code for the unit used to measure the temperature value. |
| Union field `_degrees`. `_degrees` can be only one of the following: ||
| `degrees` | `number` The temperature value (in degrees) in the specified unit. |
|   ||

### AirPressure

| JSON representation |
|---|
| ``` { // Union field `_mean_sea_level_millibars` can be only one of the following: "meanSeaLevelMillibars": number // End of list of possible types for union field `_mean_sea_level_millibars`. } ``` |

| Fields ||
|---|---|
| Union field `_mean_sea_level_millibars`. `_mean_sea_level_millibars` can be only one of the following: ||
| `meanSeaLevelMillibars` | `number` The mean sea level air pressure in millibars. |
|   ||

### SunEvents

| JSON representation |
|---|
| ``` { "sunriseTime": string, "sunsetTime": string } ``` |

| Fields ||
|---|---|
| `sunriseTime` | ``string (`Timestamp` format)`` The time when the sun rises. NOTE: In some unique cases (e.g. north of the artic circle) there may be no sunrise time for a day. In these cases, this field will be unset. Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: `"2014-10-02T15:01:23Z"`, `"2014-10-02T15:01:23.045123456Z"` or `"2014-10-02T15:01:23+05:30"`. |
| `sunsetTime` | ``string (`Timestamp` format)`` The time when the sun sets. NOTE: In some unique cases (e.g. north of the artic circle) there may be no sunset time for a day. In these cases, this field will be unset. Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: `"2014-10-02T15:01:23Z"`, `"2014-10-02T15:01:23.045123456Z"` or `"2014-10-02T15:01:23+05:30"`. |

### Timestamp

| JSON representation |
|---|
| ``` { "seconds": string, "nanos": integer } ``` |

| Fields ||
|---|---|
| `seconds` | `string (int64 format)` Represents seconds of UTC time since Unix epoch 1970-01-01T00:00:00Z. Must be between -62135596800 and 253402300799 inclusive (which corresponds to 0001-01-01T00:00:00Z to 9999-12-31T23:59:59Z). |
| `nanos` | `integer` Non-negative fractions of a second at nanosecond resolution. This field is the nanosecond portion of the duration, not an alternative to seconds. Negative second values with fractions must still have non-negative nanos values that count forward in time. Must be between 0 and 999,999,999 inclusive. |

### MoonEvents

| JSON representation |
|---|
| ``` { "moonPhase": enum (`Phase`), "moonriseTimes": [ string ], "moonsetTimes": [ string ] } ``` |

| Fields ||
|---|---|
| `moonPhase` | ``enum (`Phase`)`` Optional. The moon phase (a.k.a. lunar phase). |
| `moonriseTimes[]` | ``string (`Timestamp` format)`` The time when the upper limb of the moon appears above the horizon (see <https://en.wikipedia.org/wiki/Moonrise_and_moonset)>. NOTE: For most cases, there'll be a single moon rise time per day. In other cases, the list might be empty (e.g. when the moon rises after next day midnight). However, in unique cases (e.g. in polar regions), the list may contain more than one value. In these cases, the values are sorted in ascending order. Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: `"2014-10-02T15:01:23Z"`, `"2014-10-02T15:01:23.045123456Z"` or `"2014-10-02T15:01:23+05:30"`. |
| `moonsetTimes[]` | ``string (`Timestamp` format)`` The time when the upper limb of the moon disappears below the horizon (see <https://en.wikipedia.org/wiki/Moonrise_and_moonset)>. NOTE: For most cases, there'll be a single moon set time per day. In other cases, the list might be empty (e.g. when the moon sets after next day midnight). However, in unique cases (e.g. in polar regions), the list may contain more than one value. In these cases, the values are sorted in ascending order. Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: `"2014-10-02T15:01:23Z"`, `"2014-10-02T15:01:23.045123456Z"` or `"2014-10-02T15:01:23+05:30"`. |

### WeatherCondition

| JSON representation |
|---|
| ``` { "iconBaseUri": string, "description": { object (`LocalizedText`) }, "type": enum (`Type`) } ``` |

| Fields ||
|---|---|
| `iconBaseUri` | `string` The base URI for the icon not including the file type extension. To display the icon, append a theme if desired and the file type extension (`.png` or `.svg`) to this URI. By default, the icon is light themed, but `_dark` can be appended for dark mode. For example: "https://maps.gstatic.com/weather/v1/dust.svg" or "https://maps.gstatic.com/weather/v1/dust_dark.svg", where `icon_base_uri` is "https://maps.gstatic.com/weather/v1/dust". |
| `description` | ``object (`LocalizedText`)`` The textual description for this weather condition (localized). |
| `type` | ``enum (`Type`)`` The type of weather condition. |

### LocalizedText

| JSON representation |
|---|
| ``` { "text": string, "languageCode": string } ``` |

| Fields ||
|---|---|
| `text` | `string` Localized string in the language corresponding to `google.type.LocalizedText.language_code` below. |
| `languageCode` | `string` The text's BCP-47 language code, such as "en-US" or "sr-Latn". For more information, see <http://www.unicode.org/reports/tr35/#Unicode_locale_identifier>. |

### Precipitation

| JSON representation |
|---|
| ``` { "probability": { object (`PrecipitationProbability`) }, "snowQpf": { object (`QuantitativePrecipitationForecast`) }, "qpf": { object (`QuantitativePrecipitationForecast`) } } ``` |

| Fields ||
|---|---|
| `probability` | ``object (`PrecipitationProbability`)`` The probability of precipitation (values from 0 to 100). |
| `snowQpf` | ``object (`QuantitativePrecipitationForecast`)`` The amount of snow, measured as liquid water equivalent, that has accumulated over a period of time. Note: QPF is an abbreviation for Quantitative Precipitation Forecast (please see the QuantitativePrecipitationForecast definition for more details). |
| `qpf` | ``object (`QuantitativePrecipitationForecast`)`` The amount of precipitation rain, measured as liquid water equivalent, that has accumulated over a period of time. Note: QPF is an abbreviation for Quantitative Precipitation Forecast (please see the QuantitativePrecipitationForecast definition for more details). |

### PrecipitationProbability

| JSON representation |
|---|
| ``` { "type": enum (`Type`), // Union field `_percent` can be only one of the following: "percent": integer // End of list of possible types for union field `_percent`. } ``` |

| Fields ||
|---|---|
| `type` | ``enum (`Type`)`` Optional. A code that indicates the type of precipitation. |
| Union field `_percent`. `_percent` can be only one of the following: ||
| `percent` | `integer` A percentage from 0 to 100 that indicates the chances of precipitation. |
|   ||

### QuantitativePrecipitationForecast

| JSON representation |
|---|
| ``` { "unit": enum (`Unit`), // Union field `_quantity` can be only one of the following: "quantity": number // End of list of possible types for union field `_quantity`. } ``` |

| Fields ||
|---|---|
| `unit` | ``enum (`Unit`)`` The code of the unit used to measure the amount of accumulated precipitation. |
| Union field `_quantity`. `_quantity` can be only one of the following: ||
| `quantity` | `number` The amount of precipitation, measured as liquid water equivalent, that has accumulated over a period of time. |
|   ||

### Wind

| JSON representation |
|---|
| ``` { "direction": { object (`WindDirection`) }, "speed": { object (`WindSpeed`) }, "gust": { object (`WindSpeed`) } } ``` |

| Fields ||
|---|---|
| `direction` | ``object (`WindDirection`)`` The direction of the wind, the angle it is coming from. |
| `speed` | ``object (`WindSpeed`)`` The speed of the wind. |
| `gust` | ``object (`WindSpeed`)`` The wind gust (sudden increase in the wind speed). |

### WindDirection

| JSON representation |
|---|
| ``` { "cardinal": enum (`Cardinal`), // Union field `_degrees` can be only one of the following: "degrees": integer // End of list of possible types for union field `_degrees`. } ``` |

| Fields ||
|---|---|
| `cardinal` | ``enum (`Cardinal`)`` Optional. The code that represents the cardinal direction from which the wind is blowing. |
| Union field `_degrees`. `_degrees` can be only one of the following: ||
| `degrees` | `integer` The direction of the wind in degrees (values from 0 to 360). |
|   ||

### WindSpeed

| JSON representation |
|---|
| ``` { "unit": enum (`Unit`), // Union field `_value` can be only one of the following: "value": number // End of list of possible types for union field `_value`. } ``` |

| Fields ||
|---|---|
| `unit` | ``enum (`Unit`)`` Optional. The code that represents the unit used to measure the wind speed. |
| Union field `_value`. `_value` can be only one of the following: ||
| `value` | `number` The value of the wind speed. |
|   ||

### Location

| JSON representation |
|---|
| ``` { // Union field `location_type` can be only one of the following: "latLng": { object (`LatLng`) }, "placeId": string, "address": string // End of list of possible types for union field `location_type`. } ``` |

| Fields ||
|---|---|
| Union field `location_type`. Different ways to represent a location. `location_type` can be only one of the following: ||
| `latLng` | ``object (`LatLng`)`` A point specified using geographic coordinates. |
| `placeId` | `string` The Place ID associated with the location. |
| `address` | `string` Human-readable address (e.g., street address, city, or postal code). |
|   ||

### LatLng

| JSON representation |
|---|
| ``` { "latitude": number, "longitude": number } ``` |

| Fields ||
|---|---|
| `latitude` | `number` The latitude in degrees. It must be in the range \[-90.0, +90.0\]. |
| `longitude` | `number` The longitude in degrees. It must be in the range \[-180.0, +180.0\]. |

### Attribution

| JSON representation |
|---|
| ``` { "title": string, "url": string } ``` |

| Fields ||
|---|---|
| `title` | `string` The title to display for the attribution. |
| `url` | `string` The URL to link to for the attribution. |

### WeatherResultData

| JSON representation |
|---|
| ``` { "weatherCondition": { object (`WeatherCondition`) }, "precipitation": { object (`Precipitation`) }, "wind": { object (`Wind`) }, "attribution": { object (`Attribution`) }, // Union field `_date_time` can be only one of the following: "dateTime": string // End of list of possible types for union field `_date_time`. // Union field `_temperature` can be only one of the following: "temperature": { object (`Temperature`) } // End of list of possible types for union field `_temperature`. // Union field `_feels_like_temperature` can be only one of the following: "feelsLikeTemperature": { object (`Temperature`) } // End of list of possible types for union field `_feels_like_temperature`. // Union field `_heat_index` can be only one of the following: "heatIndex": { object (`Temperature`) } // End of list of possible types for union field `_heat_index`. // Union field `_air_pressure` can be only one of the following: "airPressure": { object (`AirPressure`) } // End of list of possible types for union field `_air_pressure`. // Union field `_date` can be only one of the following: "date": { object (`Date`) } // End of list of possible types for union field `_date`. // Union field `_max_temperature` can be only one of the following: "maxTemperature": { object (`Temperature`) } // End of list of possible types for union field `_max_temperature`. // Union field `_min_temperature` can be only one of the following: "minTemperature": { object (`Temperature`) } // End of list of possible types for union field `_min_temperature`. // Union field `_feels_like_max_temperature` can be only one of the following: "feelsLikeMaxTemperature": { object (`Temperature`) } // End of list of possible types for union field `_feels_like_max_temperature`. // Union field `_feels_like_min_temperature` can be only one of the following: "feelsLikeMinTemperature": { object (`Temperature`) } // End of list of possible types for union field `_feels_like_min_temperature`. // Union field `_max_heat_index` can be only one of the following: "maxHeatIndex": { object (`Temperature`) } // End of list of possible types for union field `_max_heat_index`. // Union field `_sun_events` can be only one of the following: "sunEvents": { object (`SunEvents`) } // End of list of possible types for union field `_sun_events`. // Union field `_moon_events` can be only one of the following: "moonEvents": { object (`MoonEvents`) } // End of list of possible types for union field `_moon_events`. // Union field `_relative_humidity` can be only one of the following: "relativeHumidity": integer // End of list of possible types for union field `_relative_humidity`. // Union field `_uv_index` can be only one of the following: "uvIndex": integer // End of list of possible types for union field `_uv_index`. // Union field `_thunderstorm_probability` can be only one of the following: "thunderstormProbability": integer // End of list of possible types for union field `_thunderstorm_probability`. // Union field `_cloud_cover` can be only one of the following: "cloudCover": integer // End of list of possible types for union field `_cloud_cover`. } ``` |

| Fields ||
|---|---|
| `weatherCondition` | ``object (`WeatherCondition`)`` The weather condition. |
| `precipitation` | ``object (`Precipitation`)`` The precipitation probability and amount of precipitation accumulated. |
| `wind` | ``object (`Wind`)`` The wind conditions. |
| `attribution` | ``object (`Attribution`)`` Required attribution to show with the weather. |
| Union field `_date_time`. `_date_time` can be only one of the following: ||
| `dateTime` | ``string (`Timestamp` format)`` The timestamp for this hourly or current weather entry. Uses RFC 3339, where generated output will always be Z-normalized and use 0, 3, 6 or 9 fractional digits. Offsets other than "Z" are also accepted. Examples: `"2014-10-02T15:01:23Z"`, `"2014-10-02T15:01:23.045123456Z"` or `"2014-10-02T15:01:23+05:30"`. |
|   ||
| Union field `_temperature`. `_temperature` can be only one of the following: ||
| `temperature` | ``object (`Temperature`)`` The hourly temperature. |
|   ||
| Union field `_feels_like_temperature`. `_feels_like_temperature` can be only one of the following: ||
| `feelsLikeTemperature` | ``object (`Temperature`)`` The hourly measure of how the temperature feels like. |
|   ||
| Union field `_heat_index`. `_heat_index` can be only one of the following: ||
| `heatIndex` | ``object (`Temperature`)`` The hourly heat index temperature. |
|   ||
| Union field `_air_pressure`. `_air_pressure` can be only one of the following: ||
| `airPressure` | ``object (`AirPressure`)`` The hourly air pressure conditions. |
|   ||
| Union field `_date`. `_date` can be only one of the following: ||
| `date` | ``object (`Date`)`` Civil calendar date of the daily weather forecast. |
|   ||
| Union field `_max_temperature`. `_max_temperature` can be only one of the following: ||
| `maxTemperature` | ``object (`Temperature`)`` The maximum (high) temperature throughout the day. |
|   ||
| Union field `_min_temperature`. `_min_temperature` can be only one of the following: ||
| `minTemperature` | ``object (`Temperature`)`` The minimum (low) temperature throughout the day. |
|   ||
| Union field `_feels_like_max_temperature`. `_feels_like_max_temperature` can be only one of the following: ||
| `feelsLikeMaxTemperature` | ``object (`Temperature`)`` The maximum (high) feels-like temperature throughout the day. |
|   ||
| Union field `_feels_like_min_temperature`. `_feels_like_min_temperature` can be only one of the following: ||
| `feelsLikeMinTemperature` | ``object (`Temperature`)`` The minimum (low) feels-like temperature throughout the day. |
|   ||
| Union field `_max_heat_index`. `_max_heat_index` can be only one of the following: ||
| `maxHeatIndex` | ``object (`Temperature`)`` The maximum heat index temperature throughout the day. |
|   ||
| Union field `_sun_events`. `_sun_events` can be only one of the following: ||
| `sunEvents` | ``object (`SunEvents`)`` The events related to the sun (e.g. sunrise, sunset). |
|   ||
| Union field `_moon_events`. `_moon_events` can be only one of the following: ||
| `moonEvents` | ``object (`MoonEvents`)`` The events related to the moon (e.g. moonrise, moonset). |
|   ||
| Union field `_relative_humidity`. `_relative_humidity` can be only one of the following: ||
| `relativeHumidity` | `integer` The percent of relative humidity (values from 0 to 100). |
|   ||
| Union field `_uv_index`. `_uv_index` can be only one of the following: ||
| `uvIndex` | `integer` The maximum ultraviolet (UV) index. |
|   ||
| Union field `_thunderstorm_probability`. `_thunderstorm_probability` can be only one of the following: ||
| `thunderstormProbability` | `integer` The thunderstorm probability (values from 0 to 100). |
|   ||
| Union field `_cloud_cover`. `_cloud_cover` can be only one of the following: ||
| `cloudCover` | `integer` The percentage of the sky covered by clouds (values from 0 to 100). |
|   ||

### Date

| JSON representation |
|---|
| ``` { "year": integer, "month": integer, "day": integer } ``` |

| Fields ||
|---|---|
| `year` | `integer` Year of the date. Must be from 1 to 9999, or 0 to specify a date without a year. |
| `month` | `integer` Month of a year. Must be from 1 to 12, or 0 to specify a year without a month and day. |
| `day` | `integer` Day of a month. Must be from 1 to 31 and valid for the year and month, or 0 to specify a year by itself or a year and month where the day isn't significant. |

### AirQualityResultData

| JSON representation |
|---|
| ``` { "hourlyResults": [ { object (`AirQualityHourlyResult`) } ], "attribution": { object (`Attribution`) } } ``` |

| Fields ||
|---|---|
| `hourlyResults[]` | ``object (`AirQualityHourlyResult`)`` Hourly air quality data for the requested time (contains 1 entry for Current Conditions or single-hour queries, up to 24 entries for a past or future date-only query, or current + remaining hours when date is today). |
| `attribution` | ``object (`Attribution`)`` Required attribution to show with the air quality data. |

### AirQualityHourlyResult

| JSON representation |
|---|
| ``` { "indexes": [ { object (`AirQualityIndex`) } ], "pollutants": [ { object (`Pollutant`) } ], "healthRecommendations": { object (`HealthRecommendations`) }, "dateTime": { object (`DateTime`) } } ``` |

| Fields ||
|---|---|
| `indexes[]` | ``object (`AirQualityIndex`)`` Air quality indexes (e.g. Universal AQI and local AQI). |
| `pollutants[]` | ``object (`Pollutant`)`` Detailed pollutant information, populated when `air_quality_options.include_pollutant_concentration` is true. |
| `healthRecommendations` | ``object (`HealthRecommendations`)`` Health recommendations for different population groups. |
| `dateTime` | ``object (`DateTime`)`` The local date and time in the location's timezone for this hourly air quality entry (consists of `year`, `month`, `day`, `hours`, `minutes`, `seconds`, and `utc_offset`). |

### AirQualityIndex

| JSON representation |
|---|
| ``` { "displayName": string, "valueDisplay": string, "category": string, "dominantPollutant": string, // Union field `_value` can be only one of the following: "value": integer // End of list of possible types for union field `_value`. } ``` |

| Fields ||
|---|---|
| `displayName` | `string` The index's display name (e.g. "Universal AQI", "US EPA AQI"). |
| `valueDisplay` | `string` Formatted string representation of the AQI value. |
| `category` | `string` Textual air quality category (e.g. "Good air quality", "Moderate air quality"). |
| `dominantPollutant` | `string` The code of the dominant pollutant (e.g. "pm25", "o3"). |
| Union field `_value`. `_value` can be only one of the following: ||
| `value` | `integer` Numeric AQI value. |
|   ||

### Pollutant

| JSON representation |
|---|
| ``` { "displayName": string, "fullName": string, "concentration": { object (`Concentration`) }, "additionalInfo": { object (`AdditionalInfo`) } } ``` |

| Fields ||
|---|---|
| `displayName` | `string` Short display name of the pollutant (e.g. "PM2.5", "O3"). |
| `fullName` | `string` Full chemical or common name of the pollutant (e.g. "Fine particulate matter (\<2.5µm)", "Ozone"). |
| `concentration` | ``object (`Concentration`)`` Measured concentration of the pollutant. |
| `additionalInfo` | ``object (`AdditionalInfo`)`` Additional information about the pollutant's sources and health effects. |

### Concentration

| JSON representation |
|---|
| ``` { "unit": enum (`Unit`), // Union field `_value` can be only one of the following: "value": number // End of list of possible types for union field `_value`. } ``` |

| Fields ||
|---|---|
| `unit` | ``enum (`Unit`)`` Measurement unit of the concentration. |
| Union field `_value`. `_value` can be only one of the following: ||
| `value` | `number` Numeric concentration value. |
|   ||

### AdditionalInfo

| JSON representation |
|---|
| ``` { "sources": string, "effects": string } ``` |

| Fields ||
|---|---|
| `sources` | `string` Main emission sources of the pollutant. |
| `effects` | `string` Potential health effects of exposure to the pollutant. |

### HealthRecommendations

| JSON representation |
|---|
| ``` { "generalPopulation": string, "elderly": string, "lungDiseasePopulation": string, "heartDiseasePopulation": string, "athletes": string, "pregnantWomen": string, "children": string } ``` |

| Fields ||
|---|---|
| `generalPopulation` | `string` Guidance for the general population. |
| `elderly` | `string` Guidance for the elderly population. |
| `lungDiseasePopulation` | `string` Guidance for individuals with lung disease or respiratory conditions. |
| `heartDiseasePopulation` | `string` Guidance for individuals with cardiovascular or heart disease. |
| `athletes` | `string` Guidance for athletes and active outdoor individuals. |
| `pregnantWomen` | `string` Guidance for pregnant women. |
| `children` | `string` Guidance for children. |

### DateTime

| JSON representation |
|---|
| ``` { "year": integer, "month": integer, "day": integer, "hours": integer, "minutes": integer, "seconds": integer, "nanos": integer, // Union field `time_offset` can be only one of the following: "utcOffset": string, "timeZone": { object (`TimeZone`) } // End of list of possible types for union field `time_offset`. } ``` |

| Fields ||
|---|---|
| `year` | `integer` Optional. Year of date. Must be from 1 to 9999, or 0 if specifying a datetime without a year. |
| `month` | `integer` Optional. Month of year. Must be from 1 to 12, or 0 if specifying a datetime without a month. |
| `day` | `integer` Optional. Day of month. Must be from 1 to 31 and valid for the year and month, or 0 if specifying a datetime without a day. |
| `hours` | `integer` Optional. Hours of day in 24 hour format. Should be from 0 to 23, defaults to 0 (midnight). An API may choose to allow the value "24:00:00" for scenarios like business closing time. |
| `minutes` | `integer` Optional. Minutes of hour of day. Must be from 0 to 59, defaults to 0. |
| `seconds` | `integer` Optional. Seconds of minutes of the time. Must normally be from 0 to 59, defaults to 0. An API may allow the value 60 if it allows leap-seconds. |
| `nanos` | `integer` Optional. Fractions of seconds in nanoseconds. Must be from 0 to 999,999,999, defaults to 0. |
| Union field `time_offset`. Optional. Specifies either the UTC offset or the time zone of the DateTime. Choose carefully between them, considering that time zone data may change in the future (for example, a country modifies their DST start/end dates, and future DateTimes in the affected range had already been stored). If omitted, the DateTime is considered to be in local time. `time_offset` can be only one of the following: ||
| `utcOffset` | ``string (`Duration` format)`` UTC offset. Must be whole seconds, between -18 hours and +18 hours. For example, a UTC offset of -4:00 would be represented as { seconds: -14400 }. A duration in seconds with up to nine fractional digits, ending with '`s`'. Example: `"3.5s"`. |
| `timeZone` | ``object (`TimeZone`)`` Time zone. |
|   ||

### Duration

| JSON representation |
|---|
| ``` { "seconds": string, "nanos": integer } ``` |

| Fields ||
|---|---|
| `seconds` | `string (int64 format)` Signed seconds of the span of time. Must be from -315,576,000,000 to +315,576,000,000 inclusive. Note: these bounds are computed from: 60 sec/min \* 60 min/hr \* 24 hr/day \* 365.25 days/year \* 10000 years |
| `nanos` | `integer` Signed fractions of a second at nanosecond resolution of the span of time. Durations less than one second are represented with a 0 `seconds` field and a positive or negative `nanos` field. For durations of one second or more, a non-zero value for the `nanos` field must be of the same sign as the `seconds` field. Must be from -999,999,999 to +999,999,999 inclusive. |

### TimeZone

| JSON representation |
|---|
| ``` { "id": string, "version": string } ``` |

| Fields ||
|---|---|
| `id` | `string` IANA Time Zone Database time zone. For example "America/New_York". |
| `version` | `string` Optional. IANA Time Zone Database version number. For example "2019a". |

### PollenResultData

| JSON representation |
|---|
| ``` { "dailyForecast": { object (`DailyPollenForecast`) }, "attribution": { object (`Attribution`) } } ``` |

| Fields ||
|---|---|
| `dailyForecast` | ``object (`DailyPollenForecast`)`` Daily pollen forecast for the requested date. |
| `attribution` | ``object (`Attribution`)`` Required attribution to show with the pollen data. |

### DailyPollenForecast

| JSON representation |
|---|
| ``` { "date": { object (`Date`) }, "categories": [ { object (`PollenCategoryInfo`) } ], "plantSpecies": [ { object (`PlantSpeciesInfo`) } ] } ``` |

| Fields ||
|---|---|
| `date` | ``object (`Date`)`` Civil calendar date of the forecast. |
| `categories[]` | ``object (`PollenCategoryInfo`)`` Broad pollen category breakdown (Tree, Grass, Weed). |
| `plantSpecies[]` | ``object (`PlantSpeciesInfo`)`` Granular plant species breakdown. |

### PollenCategoryInfo

| JSON representation |
|---|
| ``` { "displayName": string, "inSeason": boolean, "index": { object (`PollenIndex`) }, "healthRecommendations": [ string ] } ``` |

| Fields ||
|---|---|
| `displayName` | `string` Display name of the category (e.g. "Tree", "Grass", "Weed"). |
| `inSeason` | `boolean` Whether this pollen category is actively blooming in the region. |
| `index` | ``object (`PollenIndex`)`` Universal Pollen Index (UPI) measurement for this category. |
| `healthRecommendations[]` | `string` Actionable health advice for pollen-sensitive groups. |

### PollenIndex

| JSON representation |
|---|
| ``` { "category": string, "description": string, // Union field `_value` can be only one of the following: "value": integer // End of list of possible types for union field `_value`. } ``` |

| Fields ||
|---|---|
| `category` | `string` Localized category classification (e.g. "None", "Very Low", "Low", "Moderate", "High", "Very High"). |
| `description` | `string` Description of the pollen risk level. |
| Union field `_value`. `_value` can be only one of the following: ||
| `value` | `integer` Numeric UPI value (0 to 5 scale). |
|   ||

### PlantSpeciesInfo

| JSON representation |
|---|
| ``` { "code": string, "displayName": string, "family": string, "inSeason": boolean, "index": { object (`PollenIndex`) }, "season": string, "crossReactions": string } ``` |

| Fields ||
|---|---|
| `code` | `string` Machine-readable species code (e.g. "BIRCH", "JAPANESE_CEDAR", "RAGWEED"). |
| `displayName` | `string` Localized display name of the plant species (e.g. "Birch"). |
| `family` | `string` Botanical family name (e.g. "Betulaceae (the Birch family)"). |
| `inSeason` | `boolean` Whether this plant species is currently in season. |
| `index` | ``object (`PollenIndex`)`` Universal Pollen Index (UPI) measurement for this species. |
| `season` | `string` Typical blooming season description (e.g. "Late winter, spring"). |
| `crossReactions` | `string` Known cross-reactive allergens (e.g. "Alder, Hazel, Beech, and Oak pollen"). |

### Unit

Represents a unit used to measure temperatures.

| Enums ||
|---|---|
| `UNIT_UNSPECIFIED` | The temperature unit is unspecified. |
| `CELSIUS` | The temperature is measured in Celsius. |
| `FAHRENHEIT` | The temperature is measured in Fahrenheit. |

### Phase

Marks the moon phase (a.k.a. lunar phase).

| Enums ||
|---|---|
| `PHASE_UNSPECIFIED` | Unspecified moon phase. |
| `NEW_MOON` | The moon is not illuminated by the sun. |
| `WAXING_CRESCENT` | The moon is lit by 0%-50% on its right side in the northern hemisphere 🌒 and on its left side in the southern hemisphere 🌘. |
| `FIRST_QUARTER` | The moon is lit by 50.1% on its right side in the northern hemisphere 🌓 and on its left side in the southern hemisphere 🌗. |
| `WAXING_GIBBOUS` | The moon is lit by 50%-100% on its right side in the northern hemisphere 🌔 and on its left side in the southern hemisphere 🌖. |
| `FULL_MOON` | The moon is fully illuminated. |
| `WANING_GIBBOUS` | The moon is lit by 50%-100% on its left side in the northern hemisphere 🌖 and on its right side in the southern hemisphere 🌔. |
| `LAST_QUARTER` | The moon is lit by 50.1% on its left side in the northern hemisphere 🌗 and on its right side in the southern hemisphere 🌓. |
| `WANING_CRESCENT` | The moon is lit by 0%-50% on its left side in the northern hemisphere 🌘 and on its right side in the southern hemisphere 🌒. |

### Type

Marks the weather condition type in a forecast element's context.

Note: The conditions with values 42-139 are currently only returned for locations in Japan and Korea.

| Enums ||
|---|---|
| `TYPE_UNSPECIFIED` | The weather condition is unspecified. |
| `CLEAR` | No clouds. |
| `MOSTLY_CLEAR` | Periodic clouds. |
| `PARTLY_CLOUDY` | Party cloudy (some clouds). |
| `MOSTLY_CLOUDY` | Mostly cloudy (more clouds than sun). |
| `CLOUDY` | Cloudy (all clouds, no sun). |
| `WINDY` | High wind. |
| `WIND_AND_RAIN` | High wind with precipitation. |
| `LIGHT_RAIN_SHOWERS` | Light intermittent rain. |
| `CHANCE_OF_SHOWERS` | Chance of intermittent rain. |
| `SCATTERED_SHOWERS` | Intermittent rain. |
| `RAIN_SHOWERS` | Showers are considered to be rainfall that has a shorter duration than rain, and is characterized by suddenness in terms of start and stop times, and rapid changes in intensity. |
| `HEAVY_RAIN_SHOWERS` | Intense showers. |
| `LIGHT_TO_MODERATE_RAIN` | Rain (light to moderate in quantity). |
| `MODERATE_TO_HEAVY_RAIN` | Rain (moderate to heavy in quantity). |
| `RAIN` | Moderate rain. |
| `LIGHT_RAIN` | Light rain. |
| `HEAVY_RAIN` | Heavy rain. |
| `RAIN_PERIODICALLY_HEAVY` | Rain periodically heavy. |
| `LIGHT_SNOW_SHOWERS` | Light snow that is falling at varying intensities for brief periods of time. |
| `CHANCE_OF_SNOW_SHOWERS` | Chance of snow showers. |
| `SCATTERED_SNOW_SHOWERS` | Snow that is falling at varying intensities for brief periods of time. |
| `SNOW_SHOWERS` | Snow showers. |
| `HEAVY_SNOW_SHOWERS` | Heavy snow showers. |
| `LIGHT_TO_MODERATE_SNOW` | Light to moderate snow. |
| `MODERATE_TO_HEAVY_SNOW` | Moderate to heavy snow. |
| `SNOW` | Moderate snow. |
| `LIGHT_SNOW` | Light snow. |
| `HEAVY_SNOW` | Heavy snow. |
| `SNOWSTORM` | Snow with possible thunder and lightning. |
| `SNOW_PERIODICALLY_HEAVY` | Snow, at times heavy. |
| `HEAVY_SNOW_STORM` | Heavy snow with possible thunder and lightning. |
| `BLOWING_SNOW` | Snow with intense wind. |
| `RAIN_AND_SNOW` | Rain and snow mix. |
| `HAIL` | Hail. |
| `HAIL_SHOWERS` | Hail that is falling at varying intensities for brief periods of time. |
| `THUNDERSTORM` | Thunderstorm. |
| `THUNDERSHOWER` | A shower of rain accompanied by thunder and lightning. |
| `LIGHT_THUNDERSTORM_RAIN` | Light thunderstorm rain. |
| `SCATTERED_THUNDERSTORMS` | Thunderstorms that has rain in various intensities for brief periods of time. |
| `HEAVY_THUNDERSTORM` | Heavy thunderstorm. |
| `CLEAR_AFTER_FOG_IN_THE_MORNING` | Clear after fog in the morning. |
| `CLEAR_BUT_LATER_TURNING_CLOUDY` | Clear but later turning cloudy. |
| `CLEAR_BUT_LATER_TURNING_TO_RAIN_AND_SNOW_MAIN_CONSTITUENT_RAIN` | Clear but later turning to rain and snow, with rain as the main constituent. |
| `CLEAR_BUT_LATER_TURNING_TO_SNOW_AND_RAIN_MAIN_CONSTITUENT_SNOW` | Clear but later turning to snow and rain, with snow as the main constituent. |
| `CLEAR_BUT_THUNDERSTORMS_LATER` | Clear but thunderstorms later. |
| `CLEAR_IN_THE_MORNING_BUT_CLOUDY_IN_THE_EVENING` | Clear in the morning but cloudy in the evening. |
| `CLEAR_IN_THE_MORNING_WITH_BRIEF_RAIN_IN_THE_EVENING` | Clear in the morning with brief rain in the evening. |
| `CLEAR_MORNING_WITH_BRIEF_RAIN` | Clear morning with brief rain. |
| `CLEAR_WITH_BRIEF_RAIN` | Clear with brief rain. |
| `CLEAR_WITH_BRIEF_RAIN_AND_SNOW_RAIN_AS_MAIN_CONSTITUENT` | Clear with brief rain and snow, with rain as the main constituent. |
| `CLEAR_WITH_BRIEF_RAIN_LATER` | Clear with brief rain later. |
| `CLEAR_WITH_BRIEF_SNOW` | Clear with brief snow. |
| `CLEAR_WITH_BRIEF_SNOW_AND_RAIN_SNOW_AS_MAIN_CONSTITUENT` | Clear with brief snow and rain, with snow as the main constituent. |
| `CLEAR_WITH_BRIEF_SNOW_LATER` | Clear with brief snow later. |
| `CLEAR_WITH_PERIODIC_CLOUDS_LATER` | Clear with periodic clouds later. |
| `CLEAR_WITH_PERIODIC_RAIN` | Clear with periodic rain. |
| `CLEAR_WITH_PERIODIC_RAIN_ACCOMPANIED_BY_THUNDER` | Clear with periodic rain accompanied by thunder. |
| `CLEAR_WITH_PERIODIC_RAIN_AND_SNOW_RAIN_AS_MAIN_CONSTITUENT` | Clear with periodic rain and snow, with rain as the main constituent. |
| `CLEAR_WITH_PERIODIC_RAIN_LATER` | Clear with periodic rain later. |
| `CLEAR_WITH_PERIODIC_SNOW` | Clear with periodic snow. |
| `CLEAR_WITH_PERIODIC_SNOW_AND_RAIN_SNOW_AS_MAIN_CONSTITUENT` | Clear with periodic snow and rain, with snow as the main constituent. |
| `CLEAR_WITH_PERIODIC_SNOW_LATER` | Clear with periodic snow later. |
| `CLEAR_WITH_RAIN_AFTER_MIDNIGHT` | Clear with rain after midnight. |
| `CLEAR_WITH_RAIN_IN_THE_NIGHT` | Clear with rain in the night. |
| `CLEAR_WITH_RAIN_LATER` | Clear with rain later. |
| `CLEAR_WITH_SNOW_ALONG_THE_MOUNTAINS` | Clear with snow along the mountains. |
| `CLEAR_WITH_SNOW_LATER` | Clear with snow later. |
| `CLEAR_WITH_THUNDERSTORMS_ALONG_THE_MOUNTAINS` | Clear with thunderstorms along the mountains. |
| `CLEAR_WITH_THUNDERSTORMS_IN_THE_AFTERNOON` | Clear with thunderstorms in the afternoon. |
| `CLOUDY_BUT_CLEAR_LATER` | Cloudy but clear later. |
| `CLOUDY_BUT_LATER_TURNING_TO_RAIN_AND_SNOW_MAIN_CONSTITUENT_RAIN` | Cloudy but later turning to rain and snow, with rain as the main constituent. |
| `CLOUDY_BUT_LATER_TURNING_TO_SNOW_AND_RAIN_MAIN_CONSTITUENT_SNOW` | Cloudy but later turning to snow and rain, with snow as the main constituent. |
| `CLOUDY_BUT_PERIODICALLY_CLEAR_LATER` | Cloudy but periodically clear later. |
| `CLOUDY_BUT_THUNDERSTORMS_LATER` | Cloudy but thunderstorms later. |
| `CLOUDY_MORNING_WITH_BRIEF_RAIN` | Cloudy morning with brief rain. |
| `CLOUDY_PERIODICALLY_CLEAR` | Cloudy, periodically clear. |
| `CLOUDY_SNOWING_IN_THE_EVENING` | Cloudy, with snow in the evening. |
| `CLOUDY_SNOWING_IN_THE_NIGHT` | Cloudy, with snow at night. |
| `CLOUDY_WITH_BRIEF_RAIN` | Cloudy with brief rain. |
| `CLOUDY_WITH_BRIEF_RAIN_AND_SNOW_RAIN_AS_MAIN_CONSTITUENT` | Cloudy with brief rain and snow, with rain as the main constituent. |
| `CLOUDY_WITH_BRIEF_RAIN_LATER` | Cloudy with brief rain later. |
| `CLOUDY_WITH_BRIEF_SNOW` | Cloudy with brief snow. |
| `CLOUDY_WITH_BRIEF_SNOW_AND_RAIN_SNOW_AS_MAIN_CONSTITUENT` | Cloudy with brief snow and rain, with snow as the main constituent. |
| `CLOUDY_WITH_BRIEF_SNOW_LATER` | Cloudy with brief snow later. |
| `CLOUDY_WITH_BRIEF_THUNDERSTORM` | Cloudy with brief thunderstorm. |
| `CLOUDY_WITH_FOG_ON_THE_OCEAN_AND_AT_THE_SEASHORE` | Cloudy with fog on the ocean and at the seashore. |
| `CLOUDY_WITH_PERIODIC_RAIN` | Cloudy with periodic rain. |
| `CLOUDY_WITH_PERIODIC_RAIN_ACCOMPANIED_BY_THUNDER` | Cloudy with periodic rain accompanied by thunder. |
| `CLOUDY_WITH_PERIODIC_RAIN_AND_SNOW_RAIN_AS_MAIN_CONSTITUENT` | Cloudy with periodic rain and snow, with rain as the main constituent. |
| `CLOUDY_WITH_PERIODIC_RAIN_LATER` | Cloudy with periodic rain later. |
| `CLOUDY_WITH_PERIODIC_SNOW` | Cloudy with periodic snow. |
| `CLOUDY_WITH_PERIODIC_SNOW_ACCOMPANIED_BY_THUNDER` | Cloudy with periodic snow accompanied by thunder. |
| `CLOUDY_WITH_PERIODIC_SNOW_AND_RAIN_SNOW_AS_MAIN_CONSTITUENT` | Cloudy with periodic snow and rain, with snow as the main constituent. |
| `CLOUDY_WITH_PERIODIC_SNOW_LATER` | Cloudy with periodic snow later. |
| `CLOUDY_WITH_RAIN_AFTER_MIDNIGHT` | Cloudy with rain after midnight. |
| `CLOUDY_WITH_RAIN_FROM_ABOUT_NOON` | Cloudy with rain from about noon. |
| `CLOUDY_WITH_RAIN_FROM_EVENING` | Cloudy with rain from evening. |
| `CLOUDY_WITH_RAIN_LATER` | Cloudy with rain later. |
| `CLOUDY_WITH_SNOW_FROM_AROUND_NOON` | Cloudy with snow from around noon. |
| `CLOUDY_WITH_SNOW_LATER` | Cloudy with snow later. |
| `FOG` | Fog. |
| `RAINSNOW_MIX_LATER_BECOMING_CLEAR_RAIN_AS_MAIN` | Rain-snow mix, later becoming clear, with rain as the main constituent. |
| `RAINSNOW_MIX_RAIN_AS_MAIN` | Rain-snow mix, with rain as the main constituent. |
| `RAINY_BUT_PERIODICALLY_CLEAR` | Rainy but periodically clear. |
| `RAIN_ACCOMPANIED_BY_LIGHTNING` | Rain accompanied by lightning. |
| `RAIN_ACCOMPANIED_BY_WINDSTORM` | Rain accompanied by windstorm. |
| `RAIN_CLEAR_AT_NIGHT` | Rain, clearing at night. |
| `RAIN_CLEAR_FROM_AROUND_EVENING` | Rain, clearing from around evening. |
| `RAIN_CLEAR_FROM_AROUND_NOON` | Rain, clearing from around noon. |
| `RAIN_LATER_BECOMING_CLEAR` | Rain, later becoming clear. |
| `RAIN_LATER_BECOMING_CLOUDY` | Rain, later becoming cloudy. |
| `RAIN_LATER_BECOMING_SNOW` | Rain, later becoming snow. |
| `RAIN_LATER_WITH_PERIODIC_SNOW` | Rain, later with periodic snow. |
| `RAIN_SNOW_AT_NIGHT` | Rain and snow at night. |
| `RAIN_SNOW_IN_THE_EVENING` | Rain and snow in the evening. |
| `RAIN_TEMPORARILY_BECOMING_SLEET` | Rain, temporarily becoming sleet. |
| `RAIN_THAT_PERIODICALLY_STOPS` | Rain that periodically stops. |
| `RAIN_WITH_BRIEF_SNOW` | Rain with brief snow. |
| `RAIN_WITH_PERIODIC_SNOW` | Rain with periodic snow. |
| `SNOWRAIN_MIX_LATER_BECOMING_CLEAR_SNOW_AS_MAIN` | Snow-rain mix, later becoming clear, with snow as the main constituent. |
| `SNOWRAIN_MIX_LATER_BECOMING_CLOUDY_SNOW_AS_MAIN` | Snow-rain mix, later becoming cloudy, with snow as the main constituent. |
| `SNOWRAIN_MIX_SNOW_AS_MAIN` | Snow-rain mix, with snow as the main constituent. |
| `SNOW_ACCOMPANIED_BY_LIGHTNING` | Snow accompanied by lightning. |
| `SNOW_BECOMING_SLEET` | Snow, becoming sleet. |
| `SNOW_LATER_CLEAR` | Snow, later clearing. |
| `SNOW_LATER_CLOUDY` | Snow, later becoming cloudy. |
| `SNOW_LATER_RAIN` | Snow, later becoming rain. |
| `SNOW_PERIODICALLY_CLEAR` | Snow, periodically clearing. |
| `SNOW_THAT_PERIODICALLY_STOPS` | Snow that periodically stops. |
| `SNOW_TURNING_TO_RAIN_AROUND_NOON` | Snow turning to rain around noon. |
| `SNOW_TURNING_TO_RAIN_IN_THE_EVENING` | Snow turning to rain in the evening. |
| `SNOW_TURNING_TO_RAIN_IN_THE_NIGHT` | Snow turning to rain at night. |
| `SNOW_WITH_BRIEF_RAIN` | Snow with brief rain. |
| `SNOW_WITH_BRIEF_SLEET` | Snow with brief sleet. |
| `SNOW_WITH_PERIODIC_RAIN` | Snow with periodic rain. |
| `VERY_HOT` | Very hot. |
| `SLEET` | Sleet. |
| `HEAVY_RAIN_TO_RAINSTORM` | Heavy rain to rainstorm. |

### Type

Represents the type of precipitation at a given location.

| Enums ||
|---|---|
| `TYPE_UNSPECIFIED` | Unspecified precipitation type. |
| `NONE` | No precipitation. |
| `SNOW` | Snow precipitation. |
| `RAIN` | Rain precipitation. |
| `LIGHT_RAIN` | Light rain precipitation. |
| `HEAVY_RAIN` | Heavy rain precipitation. |
| `RAIN_AND_SNOW` | Both rain and snow precipitations. |
| `SLEET` | Sleet precipitation. |
| `FREEZING_RAIN` | Freezing rain precipitation. |
| `PRECIPITATION_TYPE_HAIL` | Hail precipitation. |

### Unit

Represents the unit used to measure the amount of accumulated precipitation.

| Enums ||
|---|---|
| `UNIT_UNSPECIFIED` | Unspecified precipitation unit. |
| `MILLIMETERS` | The amount of precipitation is measured in millimeters. |
| `INCHES` | The amount of precipitation is measured in inches. |

### Cardinal

Represents a cardinal direction (including ordinal directions).

| Enums ||
|---|---|
| `CARDINAL_UNSPECIFIED` | The cardinal direction is unspecified. |
| `NORTH` | The north cardinal direction. |
| `NORTH_NORTHEAST` | The north-northeast secondary intercardinal direction. |
| `NORTHEAST` | The northeast intercardinal direction. |
| `EAST_NORTHEAST` | The east-northeast secondary intercardinal direction. |
| `EAST` | The east cardinal direction. |
| `EAST_SOUTHEAST` | The east-southeast secondary intercardinal direction. |
| `SOUTHEAST` | The southeast intercardinal direction. |
| `SOUTH_SOUTHEAST` | The south-southeast secondary intercardinal direction. |
| `SOUTH` | The south cardinal direction. |
| `SOUTH_SOUTHWEST` | The south-southwest secondary intercardinal direction. |
| `SOUTHWEST` | The southwest intercardinal direction. |
| `WEST_SOUTHWEST` | The west-southwest secondary intercardinal direction. |
| `WEST` | The west cardinal direction. |
| `WEST_NORTHWEST` | The west-northwest secondary intercardinal direction. |
| `NORTHWEST` | The northwest intercardinal direction. |
| `NORTH_NORTHWEST` | The north-northwest secondary intercardinal direction. |

### Unit

Represents the unit used to measure speed.

| Enums ||
|---|---|
| `UNIT_UNSPECIFIED` | The speed unit is unspecified. |
| `KILOMETERS_PER_HOUR` | The speed is measured in kilometers per hour. |
| `MILES_PER_HOUR` | The speed is measured in miles per hour. |

### Unit

Units used to measure pollutant concentration.

| Enums ||
|---|---|
| `UNIT_UNSPECIFIED` | Unspecified concentration unit. |
| `PARTS_PER_BILLION` | Parts per billion (ppb). |
| `MICROGRAMS_PER_CUBIC_METER` | Micrograms per cubic meter (µg/m³). |

### Tool Annotations


[Tool annotations](https://modelcontextprotocol.io/specification/latest/schema#toolannotations) are sent to MCP clients to describe the basic risk of a given tool. Most clients treat these hints as untrusted, but they can be used to decide when a confirmation prompt might be sent to a user.


Along with the title string, the following boolean hints are defined as follows:

- `readOnlyHint`: If true, the tool doesn't modify its environment. Default: false.
- `destructiveHint`: If true, then the tool can perform destructive actions. If false, then the tool can only perform additive actions. Default: true.
- `idempotentHint`: If true, then calling the tool repeatedly with the same arguments will have no additional effect on its environment. Default: false.
- `openWorldHint`: If true, then the tool can interact with an 'open world' of external entities. If false, then the tool can only interact with internal entities. For example, a web search tool would be open world, while a memory tool would not be open world.

Destructive Hint: ❌ \| Idempotent Hint: ❌ \| Read Only Hint: ✅ \| Open World Hint: ❌