Docs

Make your site agent-ready

Agents reach your site through Unbrowse as tools: "search products", "get an order", "list events". Unbrowse reads what your site already publishes for machines first, and only records a browser when you publish nothing. The more you declare, the more complete, accurate and fast those tools are, and the fewer wrong guesses anyone makes about your site.

Check your site on its page, https://unbrowse.ai/sites/<your-domain> ("Check now"), or with GET https://unbrowse.ai/api/v1/sites/<your-domain>/readiness?refresh=1. It returns a score out of 100, what was found, and the fix for each gap. A refresh runs at most once every 10 minutes per site, and reads only public URLs.

What Unbrowse reads, in order

SignalPointsWhat it gives agents
Your own MCP server25 open, 20 with OAuthYour tools, under your names. Unbrowse proxies the read-only tools of an open server (readOnlyHint: true) and never a destructive one.
An API description: OpenAPI, or GraphQL with introspection20One tool per public GET operation, or per root query field, with your names, parameters and descriptions.
An OpenSearch description10A proven search tool in one request, no browser.
A sitemap listed in robots.txt10Every page type, templated into a reader tool.
Structured data (JSON-LD, or JSON in the HTML)10Clean records instead of scraped text.
Content in the HTML10Plain HTTP reads (about 0.1–0.5 s), not a rendered browser (seconds).
No bot wall on public reads10Tools that keep working.
/llms.txt5The pages and docs agents should read.
/.well-known/unbrowse.json5Your own pointers, and the paths to skip.

Declare your API and MCP server

Publish your OpenAPI document at /openapi.json, or point to it:

// https://example.com/.well-known/unbrowse.json
{
  "version": 1,
  "openapi": "/api/openapi.json",
  "graphql": "/api/graphql",
  "mcp": "https://mcp.example.com/mcp",
  "sitemaps": ["/sitemap-products.xml"],
  "exclude": ["/api/nav", "/wp-json/menus"]
}

Put state in the URL

Use real forms and labels

A <form method="get"> with named inputs (name="q", name="location") and <label>s becomes a tool with no browser, named after your fields. An autocomplete that only emits a GraphQL blob does not.

Keep the API path obvious

Let verified agents through

Keep public read paths open to agents, or allow Unbrowse's indexer through your bot manager. Sign-in should be a normal form (username, password, one-time code), so a person's saved login can fill it and their session carries the actions behind it. Unbrowse never publishes anything behind a sign-in.

What happens next

Once your site declares these, the next index pass (or unbrowse.index / POST /api/v1/index) publishes your tools, proven. Each is re-checked on a schedule with the input your document gives, and taken down if your site stops answering. Your site then has its own MCP server at https://unbrowse.ai/mcp/<your-domain> and a skill anyone can install: npx skills add https://unbrowse.ai --skill <your-site>.