def scrape_website(self, url: str, timeout: int = 30000, only_main_content: bool = True, 
                      formats: List[str] = None, include_tags: List[str] = None, 
                      exclude_tags: List[str] = None, headers: Dict[str, str] = None, 
                      wait_for: int = 0) -> Any:
        """
        Scrape a website using Firecrawl API.
        
        Args:
            url: Website URL to scrape
            timeout: Timeout in milliseconds (default: 30000)
            only_main_content: Whether to extract only the main content (default: True)
            formats: Output formats (default: ["markdown"])
            include_tags: HTML tags to include in the extraction
            exclude_tags: HTML tags to exclude from the extraction
            headers: Custom HTTP headers to use for the request
            wait_for: Time to wait for JavaScript execution in milliseconds
            
        Returns:
            Scraped content from the website
        """
        # Set default values
        if formats is None:
            formats = ["markdown"]
        if include_tags is None:
            include_tags = []
        if exclude_tags is None:
            exclude_tags = []
        if headers is None:
            headers = {}
        
        # Prepare scrape options
        options = {
            "formats": formats,
            "onlyMainContent": only_main_content,
            "includeTags": include_tags,
            "excludeTags": exclude_tags,
            "headers": headers,
            "waitFor": wait_for,
            "timeout": timeout,
        }
        
        # Initialize FirecrawlApp and scrape the URL
        from firecrawl import FirecrawlApp
        _firecrawl = FirecrawlApp(api_key=self.api_key)
        
        return _firecrawl.scrape_url(url, **options)

        Scrape a website using Firecrawl API.
        
        Args:
            url: Website URL to scrape
            timeout: Timeout in milliseconds (default: 30000)
            only_main_content: Whether to extract only the main content (default: True)
            formats: Output formats (default: ["markdown"])
            include_tags: HTML tags to include in the extraction
            exclude_tags: HTML tags to exclude from the extraction
            headers: Custom HTTP headers to use for the request
            wait_for: Time to wait for JavaScript execution in milliseconds
            
        Returns:
            Scraped content from the website
        
src/upsonic/tools.py