# AgentBrowse

Let AI agents read **public webpages** safely — with short quotes you can check.

**Product:** https://agentmediatools.com/agentbrowse

**API:** https://agentmediatools.com/tool/browser-browse

**Companion status:** `GET /api/browser/companion`

## Why this beats “agent already has the web”

| What people use today | Gap | AgentBrowse |
|----------------------|-----|-------------|
| Model built-in browse | Hard to audit; weak proof | Title, URL, short quotes |
| Raw fetch / DIY Playwright | You host it; SSRF risk | Private nets blocked; site allowlists |
| Field scrapers | Rigid columns | Research answers + evidence |
| Cloud-browser-only | Expensive for simple pages | Free daily light reads; Companion for private/hard cases |

## Companion (first-class private mode)

Pages load on **your computer and your internet** when Companion is online.

### Downloads

| Platform | URL |
|----------|-----|
| Linux x64 | [/downloads/agentbrowse/agentbrowse-companion-linux-x64](/downloads/agentbrowse/agentbrowse-companion-linux-x64) |
| Windows x64 | [/downloads/agentbrowse/agentbrowse-companion-windows-x64.exe](/downloads/agentbrowse/agentbrowse-companion-windows-x64.exe) |
| macOS Apple Silicon | [/downloads/agentbrowse/agentbrowse-companion-darwin-arm64](/downloads/agentbrowse/agentbrowse-companion-darwin-arm64) |
| macOS Intel | [/downloads/agentbrowse/agentbrowse-companion-darwin-x64](/downloads/agentbrowse/agentbrowse-companion-darwin-x64) |

### Confirm Companion is working

```bash
curl -s https://agentmediatools.com/api/browser/companion \
  -H "Authorization: Bearer YOUR_API_KEY" | jq .
# → companion_online: true
```

Also: green “Ready” in the Companion panel, and the badge on [Agent Hub](/agents#agentbrowse).

## How it works

1. Agent asks about a page.
2. **Who opens it?** Companion online → your machine. Else → server HTTP when capacity allows.
3. **Outcomes:** full extract · partial · hard failure (JS wall / bot / timeout) with a clear code.
4. Proof: title, URL, quotes. Optional `evidence: "paragraph"` for longer research excerpts.

## JS-heavy sites

| Outcome | Meaning |
|---------|---------|
| Successful HTTP read | Usable text extracted |
| Partial | Thin content (`content_quality: partial`) |
| Hard failure | `js_wall` / `blocked` / `timeout` — use **Companion** |

Mode **`auto`** (recommended): Companion if online → server HTTP → Companion on JS walls.

## Quick start

```bash
curl -X POST https://agentmediatools.com/api/browser/browse \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "goal": "Summarize this page",
    "start_url": "https://example.com",
    "allowed_domains": ["example.com"],
    "mode": "auto",
    "evidence": "short"
  }'
```

`allowed_domains` is **required** (list real public domains). Private networks are always blocked.

## Pricing

| What | Free daily | After free |
|------|------------|------------|
| Page read (server or Companion) | Yes | **1** credit |
| `cloud_browser` (if enabled) | Usually none | **3** credits |

Response `billing.free_remaining` and header `X-AgentBrowse-Free-Remaining` when relevant.

Header `X-AgentBrowse-Companion: online|offline` on browse responses.

## Modes (MCP `browse_web` = same fields)

| Mode | Behavior |
|------|----------|
| **auto** ★ | Companion → HTTP → Companion on JS/bot walls |
| http_read | Server public HTML |
| local_browser | Always Companion |
| cloud_browser | Server Chromium (opt-in) |

## Safety (unchanged)

- SSRF: private IPs, localhost, cloud metadata blocked
- `allowed_domains` required
- Proof quotes, not vibes

## Verification

Live suite: https://agentmediatools.com/benchmark/agentbrowse

Machine-readable snapshot: https://agentmediatools.com/data/agentbrowse-benchmark.json

Re-run: `npm run test:sites -- --json ./agentbrowse-benchmark.json`
