> For the complete documentation index, see [llms.txt](https://docs.unbrowse.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.unbrowse.ai/for-agents/how-an-agent-uses-unbrowse.md).

# How an Agent Uses Unbrowse

This page is the operating model for an AI agent that has Unbrowse available.

The current mental model is one step: **get the result**. The agent describes the internet result it needs — intent, optional URL, optional params, and explicit approval for writes — and Unbrowse decides how to satisfy it. That may mean a direct document fetch, a shared route-graph entry, a standard adapter, a local-auth browser capture, HAR inspection, or indexing a newly discovered route for the next call.

The agent should not choose between `resolve`, `execute`, `go`, `snap`, `fetch`, HAR, or cookies for ordinary work. Those are implementation layers under the typed hole.

The request exposes four client-fillable fields:

* `intent`
* `approval`
* `local_capability_result`
* `typed_pointer`

In shell or code, use the same flow:

```bash
unbrowse "top stories with point counts"
unbrowse "top stories with point counts" --url "https://news.ycombinator.com"
```

```ts
import { createHole } from "unbrowse/sdk";

const hole = createHole();
const result = await hole.fill({
  intent: "top stories on Hacker News with point counts",
  url: "https://news.ycombinator.com",
});
```

Use the old route view only when debugging or when a host cannot call the hole directly. In that compatibility path, resolve gathers candidates and execute replays one chosen route. It is not the preferred surface for new agents.
