# browser_navigate

## Description

Navigate the browser to a specified URL. This is a non-blocking operation that starts navigation and returns immediately. Use `browser_wait_for_network_idle` or `browser_wait_for_selector` to wait for the page to fully load. Supports HTTP, HTTPS, file, and data URLs. When `wait_until` is set (load, networkidle, fullscroll, domcontentloaded) and the page declares WebMCP tools, the response includes a `webmcp_tools` array containing the full tool definitions (name, description, inputSchema). Use `browser_webmcp_call_tool` to execute any of these tools directly.

## Usage Example

### CURL

```bash
POST `/api/execute/browser_navigate`

curl -X POST \
 -H "Authorization: Bearer <token>" \
 -H "Content-Type: application/json" \
 -d '{

"context_id": "ctx_000001",

"url": "https://example.com"

}' \
http://localhost:8080/api/execute/browser_navigate
```

### Python SDK

```python
import asyncio

from owl_browser import OwlBrowser, RemoteConfig

# Async usage

async with OwlBrowser(config) as browser:
    context = await browser.create_context()
    context_id = context["context_id"]
    await browser.navigate(
        context_id=context_id,
        url="https://example.com"
    )
```

### Node.js SDK

```javascript
import { OwlBrowser } from '@olib-ai/owl-browser-sdk';

// Async usage

const ctx = await browser.createContext();
const contextId = ctx.context_id;
await browser.navigate({
    context_id: contextId,
    url: 'https://example.com'
});
```

## Parameters

### Required

- `context_id` **string** required  
  The unique identifier of the browser context to navigate (e.g., 'ctx_000001')
- `url` **string** required  
  The full URL to navigate to, including protocol (e.g., 'https://example.com'). Supports http://, https://, file://, and data: URLs

### Optional

- `wait_until` **enum**  
  When to consider navigation complete: '' (return immediately, default), 'load' (wait for load event), 'domcontentloaded' (wait for DOMContentLoaded), 'networkidle' (wait for network to be idle), 'fullscroll' (scroll full page to trigger lazy loading, then scroll back to top)
- `timeout` **string**  
  Maximum time to wait for navigation in milliseconds. Only used when `wait_until` is set. Default: 30000 (30 seconds)

## Response

Returns a JSON object with the operation result.

```json
{
  "success": true,
  "result": <value>
}
```
