# When your AI agent can't read the page

AI agents often fail to read a page: the fetch is refused, comes back empty,
or returns a bot-check page that the agent summarises as if it were content.
Levirge Search reads public pages in full, retrying in a full browser when an
ordinary read fails. When it still can't, it tells the agent why, instead of
handing back a block page.

## Three ways a read goes wrong

| What happens | What the agent sees | What Search does |
| --- | --- | --- |
| Refused | An error, zero bytes. The question can't be answered. | Reads the page in a full browser. |
| Empty | A page with no content until a browser runs it. | Notes the source and uses the browser for it from then on. |
| Wrong body | A 200 with the site's challenge page. The agent summarises it. | Detects challenge and error content; never serves it as a page. |

## Captured: a refused read, then the real page

29 Oct 2026, from Claude Code. The native fetch:

```
WebFetch("https://www.realestate.com.au/buy/property-unit+apartment-in-perth+cbd/list-1?activeSort=price-asc")
Error: Claude Code is unable to fetch from www.realestate.com.au
```

Levirge Search, same URL:

```
fetch("https://www.realestate.com.au/buy/property-unit+apartment-in-perth+cbd/list-1?activeSort=price-asc")
[via stealth]
# Apartments & units for sale in Perth - CBD and Inner Suburbs, WA
Showing 1 – 25 of 904 properties
```

An independent timed probe read it in 10.6 s while the origin answered HTTP
429. [Full run](/search/examples/blocked-portal.md).

## Captured: a failure that says so

8 Aug 2026, from Claude Code, a retired host:

```
FAILED: Error: fetch failed for https://deno-was-retired.example.dev/changelog:
direct (blocked/error content: {"error": 500, ...});
stealth (Error: stealth 502: Page.goto: net::ERR_CERT_AUTHORITY_INVALID …)
```

Both routes tried, both named. [Full run](/search/examples/quiet-failure.md).

## Boundaries

Search reads public pages a person could open in their own browser. It does
not get past logins or paywalls. Reads are paced per source at a human rate;
bulk scraping is not allowed. Read content is cached for 24 hours.

## Install in Claude Code

```bash
claude plugin marketplace add levirge/search
claude plugin install levirge-search@levirge-search
```

Restart and sign in when the browser opens. Verify with `stealth_list`.
[Other clients](/search/docs.md). [Try a live read](/search#try).

## FAQ

### Why can't my AI agent read some web pages?

Three common reasons. The tool refuses the domain or the site blocks it with
an error. The site returns an empty page that only fills in when a browser
runs it. Or the site serves a bot-check page with a 200 status, and the agent
treats it as the content.

### Why did my agent summarise a "Just a moment..." page?

Because an ordinary fetch tool delivered the site's challenge page as if it
were the article. The status was 200, so nothing flagged it. Levirge Search
detects challenge and error content and never serves it as a page.

### How does Levirge Search read sites that block other tools?

A full browser opens the page. The first time an ordinary read of a source
comes back empty, Search notes it and uses the browser for that source from
then on, with no rules file or per-source setup.

### What happens when a page still can't be read?

The agent gets an explicit failure that names each route tried and why it
failed. The read is recorded in your workspace with its URL, outcome and
timestamp. Search never hands back an empty page for an agent to summarise.

### Does it get past paywalls or logins?

No. Search reads public pages a person could open in their own browser, paced
per source at a human rate. Paywalled and login-gated sources are not
supported, and bulk scraping is not allowed.

### What does it cost?

Personal is $29 a month, Pro $99 and Business $199. Every plan includes
unlimited search and unlimited open fetch under fair use; full-browser reads
are metered per plan. [Pricing](/search/pricing.md).

[Sign up](https://signup.levirge.com/search).
