# foura_browser

Load a URL in a real browser session. JS runs, DOM renders, cookies come back. 2-10s. Use for SPAs, lazy-loaded content, or JS anti-bot challenges (Cloudflare Turnstile etc.). Prefer foura_single for static HTML; foura_proxy for static pages where your IP is blocked. To rotate the browser's exit IP: call foura_proxy first, pass its returned proxy ID into this tool's proxy field - the browser exits through that pool IP. Default (no proxy) is one fixed container egress. If the target is behind a tier-1 WAF challenge (Vercel / Cloudflare / Akamai), calling this tool directly will usually still capture the challenge page rather than the post-challenge content - the snapshot fires before the challenge's deferred reload completes. Correct chain: call foura_proxy first with maxTries:25-30 against the same URL → take the returned proxy base36 ID → pass it into this tool's proxy field. The browser then exits through the IP that already cleared the challenge for this target. By default the browser actively solves an anti-bot / captcha challenge it meets along the way (the unblocker flag, default true); set unblocker:false to skip solving and return the page exactly as it loads, challenge page included.

Agent View of the PolicyLayer registry record for `foura_browser`. HTML page: https://policylayer.com/tools/ai-foura-mcp/foura-browser

## Facts

- Tool: `foura_browser`
- Server: Mcp (`@fouradata/mcp`) — https://policylayer.com/tools/ai-foura-mcp.md
- Install: `npx -y @fouradata/mcp`
- Homepage: https://github.com/fouradata/mcp
- Risk category: Write (Medium risk)
- Registry record: grade D, identity unverified
- Server auth posture: open
- Server rate-limited: no
- Parameters: 10 (1 required)
- Recommended policy verdict: Rate-limited

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `url` | string | yes | Target URL to load in a full browser session. Public hosts only - private/reserved ranges (RFC 1918 + loopback + link-local + IPv6 ULA/loopback + *.local mDNS) |
| `proxy` | string | no | Optional proxy. Three forms: (1) URL `http://user:pass@host:port` or `socks5://host:port`; (2) base36 ID from foura_proxy (e.g. `4DZ3VE`) - same pool exit IP; ( |
| `cookies` | array | no | Cookies to set before navigation: [{ name, value, domain? }] |
| `headers` | object | no | Custom HTTP headers as a key-value object (NOT [name, value] tuples). Example: {"Referer": "https://google.com/"} |
| `checkText` | string | no | One-shot post-render validator - substring search on the rendered HTML AFTER navigation completes. NOT a waiter: does not poll, does not block until the substri |
| `unblocker` | boolean | no | Actively SOLVE an anti-bot / captcha challenge (Cloudflare Turnstile and similar) encountered during navigation, instead of just rendering it. Default true. Set |
| `userAgent` | string | no | Override the browser's User-Agent string |
| `timeout_ms` | integer | no | Page load timeout in ms (default 30000, max 120000) |
| `checkStatus` | integer | no | Expected HTTP status code. If the page returns a different status → tool returns an error envelope with the actual status carried in the envelope. Example: 200 |
| `offload_large` | boolean | no | If true, response bodies >= 50KB are written to disk and returned as a resource_link instead of inlined. Default false. |

Parameters from the server's own tool schema.

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "foura_browser",
    "arguments": {
      "url": "<url>"
    }
  }
}
```

## Why foura_browser is rated Medium

An AI agent can call foura_browser faster than any human can review: one bad instruction and it creates or modifies resources in Mcp by the hundred, each call as confident as the last.

Risk signals: Accepts URL/endpoint input (url) · High parameter count (13 properties)

## Use case

AI agents use foura_browser to create or update resources in Mcp, usually the action step of a workflow, after the agent has gathered context. Every call changes real data in your Mcp environment.

## Recommended policy (PolicyLayer)

Verdict: **Rate-limited**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Mcp:

```json
{
  "version": "1",
  "default": "deny",
  "tools": {
    "foura_browser": {
      "limits": [
        {
          "counter": "foura_browser_rate",
          "window": "minute",
          "max": 30,
          "scope": "grant"
        }
      ]
    }
  }
}
```

## Other tools on Mcp (3)

- `foura_proxy` — Execute — https://policylayer.com/tools/ai-foura-mcp/foura-proxy.md
- `foura_auto` — Read — https://policylayer.com/tools/ai-foura-mcp/foura-auto.md
- `foura_single` — Read — https://policylayer.com/tools/ai-foura-mcp/foura-single.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=ai-foura-mcp · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/ai-foura-mcp
