def __init__(self, api_key: Optional[str] = None):
        """
        Initialize the FirecrawlCrawlWebsiteTool.
        
        Args:
            api_key: Firecrawl API key (optional, will try to load from environment if not provided)
        """
        # Set API key
        self.api_key = api_key
        
        # If API key not provided, try to load from environment or .env file
        if self.api_key is None:
            # First check environment variables
            if "FIRECRAWL_API_KEY" in os.environ:
                self.api_key = os.environ["FIRECRAWL_API_KEY"]
            else:
                # Try to load from .env file
                try:
                    api_key = self._load_api_key_from_env_file()
                    if api_key:
                        self.api_key = api_key
                    else:
                        # Print missing API key message
                        missing_api_key("FirecrawlCrawlWebsiteTool", "FIRECRAWL_API_KEY")
                        raise EnvironmentError("FIRECRAWL_API_KEY environment variable is not set and could not be found in .env file")
                except ImportError:
                    # If dotenv is not installed and no API key in environment
                    if "FIRECRAWL_API_KEY" not in os.environ:
                        # Print missing API key message without dotenv support
                        missing_api_key("FirecrawlCrawlWebsiteTool", "FIRECRAWL_API_KEY", dotenv_support=False)
                        raise EnvironmentError("FIRECRAWL_API_KEY environment variable is not set and python-dotenv is not installed")
                    self.api_key = os.environ["FIRECRAWL_API_KEY"]
        
        # Initialize FirecrawlApp
        try:
            from firecrawl import FirecrawlApp
        except ImportError:
            raise ImportError("firecrawl-py is not installed. Please install it with 'pip install firecrawl-py'")

        Initialize the FirecrawlCrawlWebsiteTool.
        
        Args:
            api_key: Firecrawl API key (optional, will try to load from environment if not provided)
        
src/upsonic/tools.py