> ## Documentation Index
> Fetch the complete documentation index at: https://docs.2extract.com/llms.txt
> Use this file to discover all available pages before exploring further.

# LLM References

> Two machine-readable documentation files following the llms.txt standard - an index and a full-text dump of the entire 2extract documentation.

The [llms.txt standard](https://llmstxt.org) is a convention for publishing a site's content in a form a language model can read directly, without parsing navigation, sidebars, or scripts.

We publish both files it defines. They update automatically whenever this documentation changes.

<CardGroup cols={2}>
  <Card title="llms.txt" icon="list" href="https://docs.2extract.com/llms.txt">
    An index: every page with its title, description, and a link. Roughly 14 KB.
  </Card>

  <Card title="llms-full.txt" icon="book" href="https://docs.2extract.com/llms-full.txt">
    The entire documentation as one plain-text file. Roughly 330 KB.
  </Card>
</CardGroup>

***

## Which file to use

|                      | `llms.txt`                  | `llms-full.txt`                 |
| :------------------- | :-------------------------- | :------------------------------ |
| **Size**             | \~14 KB                     | \~330 KB                        |
| **Contains**         | Titles, descriptions, links | Every page, full text           |
| **Fits in context**  | Always                      | Usually, but it is not free     |
| **Needs web access** | Yes, to follow links        | No                              |
| **Best for**         | Agents that can fetch       | One-shot loading into a session |

**Use `llms.txt`** when the model can reach the web. It reads the index, decides which page it needs, fetches that page, and spends nothing on the rest.

**Use `llms-full.txt`** when it cannot, or when you would rather pay once for complete knowledge than pay per lookup. At around 330 KB it is roughly 80-90k tokens - comfortable in a large context window, wasteful in a small one.

<Warning>
  Do not paste `llms-full.txt` into every request. Load it once at the start of a session, or attach it as a project-level document that persists.
</Warning>

***

## What is inside

`llms.txt` is a flat list of links with descriptions:

```text icon="file-lines" theme={null}
# 2extract Docs

## Docs

- [Country List](https://docs.2extract.com/data/countries.md): Full list of countries
  available for geo-targeting, with the parameter value to use in the proxy connection username.
- [Quick Start: Your First Request in 2 Minutes](https://docs.2extract.com/getting-started/quick-start.md):
  Follow these 4 simple steps to go from a new account to a successful proxy request.
```

Every link points at the `.md` version of the page, so following one costs no HTML.

`llms-full.txt` concatenates those pages, each with a header and its source URL:

```text icon="book" theme={null}
# City List
Source: https://docs.2extract.com/data/cities

Countries with city-level targeting available.
...
```

***

## Any page as markdown

Both files are built from a third mechanism you can use directly: **append `.md` to any URL on this site**.

```bash icon="terminal" theme={null}
curl https://docs.2extract.com/proxy-products/configuration/geo-targeting.md
```

Useful when you know exactly which page you need and do not want either file.

***

## Loading them into a tool

<AccordionGroup>
  <Accordion title="Claude Projects" icon="brain">
    Download `llms-full.txt` and add it to the project's knowledge. It persists across every conversation in that project, so the model has the full documentation without you re-attaching it.

    ```bash icon="terminal" theme={null}
    curl -O https://docs.2extract.com/llms-full.txt
    ```
  </Accordion>

  <Accordion title="Cursor" icon="code">
    **Settings** → **Features** → **Docs** → **Add new doc**, and give it:

    ```
    https://docs.2extract.com/llms-full.txt
    ```

    Then reference it in chat with `@Docs`. Cursor indexes it and pulls in the relevant parts rather than the whole file.
  </Accordion>

  <Accordion title="A coding assistant in your terminal" icon="terminal">
    Drop the file into the repository where the assistant will find it:

    ```bash icon="terminal" theme={null}
    curl -o docs/2extract-reference.txt https://docs.2extract.com/llms-full.txt
    ```

    Then tell it where to look: "The 2extract proxy documentation is in `docs/2extract-reference.txt` - read it before writing the proxy configuration."
  </Accordion>

  <Accordion title="Your own application" icon="gear">
    Fetch and cache. The files are static and regenerate when the docs change, so a daily refresh is plenty.

    ```python icon="python" theme={null}
    import requests

    def load_reference() -> str:
        r = requests.get("https://docs.2extract.com/llms-full.txt", timeout=30)
        r.raise_for_status()
        return r.text
    ```

    For per-question retrieval rather than bulk loading, the [Docs MCP Server](/ai/for-agents/docs-mcp-server) is the better fit.
  </Accordion>
</AccordionGroup>

***

## What this is good for

The recurring problem people hit with proxies is not the HTTP client - it is the username format. Geo, session, and protocol parameters are all encoded in the username, in a specific order, with specific separators. A model that has not seen the format invents something plausible and you get a 407.

With the reference loaded, the assistant writes:

```
2xt-customer-K3nP7qLm2Xv-proxy-my_project-country-de-city-munich-session-run1-time-10
```

correctly, first time - including the rule that proxy names cannot contain hyphens.

***

## Next steps

<CardGroup cols={2}>
  <Card title="Docs MCP Server" icon="magnifying-glass" href="/ai/for-agents/docs-mcp-server">
    Live search instead of a static file.
  </Card>

  <Card title="MCP Server" icon="plug" href="/ai/mcp-server/overview">
    When the agent should act, not just read.
  </Card>
</CardGroup>
