Captured 8 Aug 2026, 10:03 UTC, from Claude Code over MCP — payloads
verbatim, long bodies excerpted.

## The research question

*"Check the release notes across the projects we depend on."* Several
pages, none urgent — the agent shouldn't hold a conversation open per page,
or hammer them all at once from one IP.

## Without Search

The agent reads them one at a time, holding the conversation open for every
page — or fires them all at once from one IP and trips a site's defences.

## 1 · Queue the list — immediate acknowledgement

Four URLs — three real sources and one that no longer resolves. The
acknowledgement came back at once; nothing held the conversation open:

```
fetch_async(urls: [
  "https://deno.com/blog/v2.9",
  "https://github.com/denoland/deno/releases",
  "https://docs.deno.com/runtime/desktop/",
  "https://deno-was-retired.example.dev/changelog"
])

{ "queued": [
    "https://deno.com/blog/v2.9",
    "https://github.com/denoland/deno/releases",
    "https://docs.deno.com/runtime/desktop/",
    "https://deno-was-retired.example.dev/changelog" ],
  "alreadyDone": [] }
```

## 2 · Collect the outcomes — 29 seconds later, all four resolved

Each source is read politely, paced at a human rate. The first poll, 29
seconds after queueing, found all four settled — three done, one failed
with both attempted routes in the error:

```
fetch_results(urls: [ …same four… ])

# https://deno.com/blog/v2.9
[via direct]                                    ← 44 KB of markdown

# Deno 2.9
June 25, 2026
…

---

# https://github.com/denoland/deno/releases
[via direct]                                    ← 119 KB of markdown

# Releases: denoland/deno
…

---

# https://docs.deno.com/runtime/desktop/
[via direct]                                    ← 6 KB of markdown

# Desktop apps
`deno desktop` turns a Deno project … into a self-contained
desktop application.
…

---

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

A URL still being read reports `PENDING` in the same per-URL format — this
run simply finished before the first poll.

## 3 · Retry is a resubmission, never a silent drop

The failure names both routes tried and carries a correlation id. Retrying
is just queueing it again:

```
fetch_async(urls: [ "https://deno-was-retired.example.dev/changelog" ])

{ "queued": [ "https://deno-was-retired.example.dev/changelog" ],
  "alreadyDone": [] }
```

## Measured outcome, and where this came from

The agent came back to **three readable sources totalling 169 KB and one
explicit failure** — nothing pending, nothing silently dropped.
Acknowledgement was immediate; every URL had settled by the first poll,
29 seconds after queueing. The queue is for politeness and patience, not
volume: the same per-source pacing applies whether the list is three pages
or thirty.

- **Client:** Claude Code over MCP
- **10:03:24 UTC** — `fetch_async` → `{ queued: [4], alreadyDone: [] }`
- **10:03:53 UTC** — `fetch_results` → 3 done (44 KB, 119 KB, 6 KB) ·
  1 FAILED with both routes named (see
  [the quiet failure](/search/examples/quiet-failure.md))
- **Retention:** bodies cached server-side, 24 h

## Run it yourself

[Install Search](/search#install) and queue your own list — or
[try a live read](/search#try) first.
