> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.privategpt.dev/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.privategpt.dev/_mcp/server.

# Web Tools

> Configure built-in web search and web fetch tools in settings.yaml.

This page covers the server-side configuration for built-in web tools.

Use this together with [Tools](/api-guide/tools) for request examples.

---

## Supported web tools

Built-in web tools include:

* `web_search_v1`
* `web_fetch_v1`
* `/v1/tools/web-search`
* `/v1/tools/web-fetch`

`web_extract_v1` remains accepted as a legacy alias for `web_fetch_v1`.

---

## How to install

Install requirements:

* `private-gpt[tool-web-scraping]`
* or `private-gpt[tools]`
* or `private-gpt[core]`

After installing or updating Playwright, download the required browsers:

```bash
playwright install
```

---

## Settings reference

### Enable web fetch

`web_fetch_v1` and `/v1/tools/web-fetch` require `web_fetch.enabled: true`.

```yaml
web_fetch:
  enabled: true
  timeout_seconds: 15
```

---

### Enable web search

`web_search_v1` and `/v1/tools/web-search` require both web fetch and web search, plus a configured provider.

```yaml
web_fetch:
  enabled: true

web_search:
  enabled: true
  provider: brave
  processor: best_links
  num_links: 20
  mode_quality: fast
  cached: false
  context_token: 0

brave:
  api_key: ${PGPT_BRAVE_API_KEY:}
  rate_limit: 1
```

> **Note**
>
> `web_search` depends on web fetching, so `web_fetch.enabled` must also be `true`.

---

### Settings

| Setting                     | Description                                                                 |
| --------------------------- | --------------------------------------------------------------------------- |
| `web_fetch.enabled`         | Enables URL fetching and text extraction.                                   |
| `web_fetch.timeout_seconds` | Timeout for fetching a page.                                                |
| `web_search.enabled`        | Enables web search.                                                         |
| `web_search.provider`       | Search provider. Current built-in options are `brave` and `mock`.           |
| `web_search.processor`      | Post-processing strategy for results.                                       |
| `web_search.num_links`      | Maximum number of fetched search results.                                   |
| `web_search.mode_quality`   | Preset that controls the fast vs accurate parameter block.                  |
| `web_search.cached`         | Enables caching for repeated searches.                                      |
| `web_search.context_token`  | Optional token budget used by the result processor. `0` disables the limit. |
| `brave.api_key`             | Brave Search API key. Required when using `provider: brave`.                |
| `brave.rate_limit`          | Minimum seconds between Brave API requests.                                 |