Jettson Browser
A headless browser driven by the agent — navigate, extract text, and screenshot pages.
Every agent gets a headless browser tab on its computer. There's exactly one browser instance per agent, reused across all jettson_browser_* calls in a single run — so multi-page workflows stay fast.
jettson_browser_navigate
Load a URL. Always call this before extract_text, click, etc.
| Field | Type | Description |
| --- | --- | --- |
| url (required) | string | Absolute http(s) URL. Relative paths are rejected. |
Returns:
{
"url": "https://news.ycombinator.com",
"title": "Hacker News",
"status": 200,
"text_preview": "Hacker News new past comments ask show jobs submit..."
}text_preview is the first 500 characters of the body — useful for the Mind to verify it landed somewhere reasonable before paying for a full extract.
jettson_browser_extract_text
Pull visible text from the current page (or a specific element).
| Field | Type | Description |
| --- | --- | --- |
| selector | string | Optional CSS selector. Omit for whole-page body text. |
Returns:
{
"text": "Hacker News\n...",
"truncated": false
}Truncated at 5,000 characters. truncated: true means the page was longer than that — agents typically narrow with a selector argument on the next call if they need the rest.
jettson_browser_click
Click an element and wait for any resulting navigation.
| Field | Type | Description |
| --- | --- | --- |
| selector (required) | string | CSS selector of the element to click. |
Returns the new URL and page title.
jettson_browser_fill
Fill an input or textarea.
| Field | Type | Description |
| --- | --- | --- |
| selector (required) | string | CSS selector of the input/textarea. |
| value (required) | string | Value to type into the field. |
jettson_browser_screenshot
Capture a PNG of the current viewport (not the full page).
Returns:
{
"image_base64": "...",
"mime_type": "image/png",
"url": "https://..."
}Base64-encoded — your agent task can return it inline or stash it via jettson_files_write.
Example: multi-step browse
1. jettson_browser_navigate({ url: "https://example.com" })
2. jettson_browser_extract_text()
3. (Mind reasons over the text, finds a "Pricing" link selector)
4. jettson_browser_click({ selector: "a[href*='pricing']" })
5. jettson_browser_extract_text()The browser instance persists across (2), (4), and (5) — no re-launch cost.
Failure modes
| Cause | Returns |
| --- | --- |
| Bad URL (non-http/https) | { "error": "Jettson Browser failed: url must be an http(s) URL." } |
| Page load timeout (30s) | { "error": "Jettson Browser failed: navigation to <url> timed out." } |
| Selector not found | { "error": "Jettson Browser failed: could not find selector …" } |
Failures are returned as the tool result — the agent loop continues and the Mind decides what to do next (retry with a different selector, give up gracefully, return a partial answer).
Related
- Tools overview
- Tool composition patterns —
browser + httpandbrowser + filesrecipes