> ## Documentation Index
> Fetch the complete documentation index at: https://phidatainc-studio-tools-doc.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# OpenWeather

> Use OpenWeather with Agno agents.

Enable Agno agents to fetch real-time weather conditions, multi-day forecasts, and environmental data like air quality directly from the OpenWeather API to make context-aware decisions.

## Prerequisites:

1. Get an API key from [https://openweathermap.org/api](https://openweathermap.org/api)
2. Set the OPENWEATHER\_API\_KEY environment variable or pass it directly to the tool

```python theme={null}
"""
OpenWeather Usage:
- Get current weather for a location
- Get weather forecast for a location
- Get air pollution data for a location
- Geocode a location name to coordinates
"""

from agno.agent import Agent
from agno.tools.openweather import OpenWeatherTools

# ---------------------------------------------------------------------------
# Create Agent
# ---------------------------------------------------------------------------


# Example 1: Enable all OpenWeather functions
agent_all = Agent(
    tools=[
        OpenWeatherTools(
            all=True,  # Enable all OpenWeather functions
            units="imperial",  # Options: 'standard', 'metric', 'imperial'
        )
    ],
    markdown=True,
)

# Example 2: Enable specific OpenWeather functions only
agent_specific = Agent(
    tools=[
        OpenWeatherTools(
            enable_current_weather=True,
            enable_forecast=True,
            enable_air_pollution=True,
            enable_geocoding=True,
            units="metric",
        )
    ],
    markdown=True,
)

# Example 3: Default behavior with all functions enabled
agent = Agent(
    tools=[
        OpenWeatherTools(
            enable_current_weather=True,
            enable_forecast=True,
            enable_air_pollution=True,
            enable_geocoding=True,
            units="imperial",  # Options: 'standard', 'metric', 'imperial'
        )
    ],
    markdown=True,
)

# Example usage with all functions enabled

# ---------------------------------------------------------------------------
# Run Agent
# ---------------------------------------------------------------------------
if __name__ == "__main__":
    print("=== Example 1: Using all OpenWeather functions ===")
    agent_all.print_response(
        "Give me a comprehensive weather report for Tokyo including current weather, forecast, and air quality",
        markdown=True,
    )

    # Example usage with specific functions only
    print(
        "\n=== Example 2: Using specific OpenWeather functions (current weather + geocoding) ==="
    )
    agent_specific.print_response(
        "What's the current weather in Tokyo?",
        markdown=True,
    )

    # Example usage with default configuration
    print("\n=== Example 3: Default OpenWeather agent usage ===")
    agent.print_response(
        "What's the current weather in Tokyo?",
        markdown=True,
    )

    # Additional examples (commented out to avoid API calls)
    # agent.print_response(
    #     "Give me a 3-day weather forecast for New York City",
    #     markdown=True,
    # )

    # agent.print_response(
    #     "What's the air quality in Beijing right now?",
    #     markdown=True,
    # )

    # agent.print_response(
    #     "Compare the current weather between London, Paris, and Rome",
    #     markdown=True,
    # )
```

## Run the Example

```bash theme={null}
# Clone and setup repo
git clone https://github.com/agno-agi/agno.git
cd agno/cookbook/91_tools

# Create and activate virtual environment
./scripts/demo_setup.sh
source .venvs/demo/bin/activate

python openweather_tools.py
```

For details, see [OpenWeather cookbook](https://github.com/agno-agi/agno/blob/main/cookbook/91_tools/openweather_tools.py).
