Live 20 Oct 2026, 13:19 PT · one request

$ curl -X POST https://api.exa.ai/search \

-d '{"query":"agent native search"}'

HTTP/1.1 402 Payment Requiredresponse, abridged

WWW-Authenticate: Payment …

{"tag":"X402_PAYMENT_REQUIRED", "x402Version":2,

"accepts":[{"scheme":"exact", "network":"eip155:8453", "amount":"7000",

"extra":{"name":"USD Coin", "totalUsd":0.007}}]}

No account. No key. The API answered with a price.

Seven tenths of a cent, in a stablecoin (a digital dollar). Pay it, and the search runs. We did not pay.

research/agentnative/walk/probes.jsonl · walk.md, Exa row 13 · read only, 2026-10-20

One of four talks

Four talks, one question: how should agents search?

A

Search API Battle Royale

Same questions, different sources, measured 20 Oct 2026.

B

System 1 vs System 2 search

Quick search, deep research, and when to route between them.

C

Self improving RAG

A research loop that learns from its own mistakes.

D

Agent native search platforms

What search looks like when the user is an agent.

Talk D Claude Code Build Night · Bright Data SF · 2026-10-20

Agent native search platforms

What search looks like when the user is a program, not a person.

Ray Zahid · Immersive Commons

1

Part 1 · Foundations

What an agent needs

1.1 What an agent does with search

An agent is an AI that decides its next step and uses a tool to do it

Find the tooldoes it exist? Get accessa key, no password Asksend the request Read the answerlabelled data, not a web page Use it, or recoverfix what went wrong repeat thousands of times, with nobody watching

A person does this once and reads the screen. An agent does it thousands of times, alone. If a step needs a person, the agent gets stuck there.

1.2 The same search, twice

Search results for a person, and for an agent

For a person · illustration

who is leo messi
Sponsored Football shirts, big sale today …
Lionel Messi Facts | Britannicabritannica.com › factsArgentine footballer, born 1987 in Rosario, who …
Lionel Messi · Wikipediaen.wikipedia.org › wikiLionel Andrés Messi is an Argentine professional …
Messi stats and newsexample-sports.comLatest goals, transfer talk and …
More results
I'm not a robot

For an agent · Tavily's documented response shape

{"query": "Who is Leo Messi?", "results": [{ "title": "Lionel Messi Facts | Britannica", "url": "https://www.britannica.com/facts/Lionel-Messi",cite it "content": "<snippet>",read it, no scraping "score": 0.81,rank it "published_date": "Tue, 11 Mar 2025 17:00:00 GMT"}],is it fresh? "usage": {"credits": 1},what did it cost? "request_id": "123e4567-…"}report a failure

Each field is written down, and its name never changes.

docs.tavily.com/documentation/api-reference/endpoint/search (response example) · left panel is an illustration

1.3 Six questions an agent asks a platform

Discover

Can the agent find you, and learn what you do?

Small files at fixed web addresses that describe you: llms.txt, an agent card, an API catalog.

Auth

Can it get a key with no password?

A person approves once, with a short code on a phone (device code). An error says where to sign in. The key allows only named actions.

Tools

Can it call you without reading a manual?

Each action lists its inputs in a fixed format. MCP is the standard plug between AI and tools; OpenAPI describes a web API.

Results

Can it read, cite and date the answer?

The same fields every time: url, content, score, date. Plain text (Markdown) on request.

Errors

When it fails, does the error say what to do?

A fixed error code, a line on how to fix it, a request id. If busy, say when to retry.

Pay

Can it pay without a card form?

The server replies with a price a program can read (HTTP 402). x402 is the way to pay it and retry.

1.4 Discover · a mailbox at a fixed address

what an agent can fetch before it knows anything about youGET /llms.txt    # Acme Search    > Web search API for agents.    - [Search](https://acme.dev/docs/search.md)GET /.well-known/agent-card.json    {"name":"Acme", "url":"https://api.acme.dev", "skills":[…]}GET /.well-known/api-catalog    {"linkset":[{"anchor":"https://api.acme.dev",      "service-desc":[{"href":"…/openapi.json"}]}]}

  • llms.txtA convention, not a standard. Proposed 2024-09-03. It is not clear that the big AI companies read it.
  • Agent cardA2A v1.0, under the Linux Foundation. check primary
  • API catalogA list of your APIs. A published standard, RFC 9727.

llmstxt.org · aaif.io/blog/a2a-v1-0-a-builder-s-guide-part-1 (secondary) · rfc-editor.org/rfc/rfc9727

1.5 Auth · device code (RFC 8628): a person approves on a phone

The agent gets a key. It never holds the password.

Agent asksPOST /device/starton a server,with no screen or browser Server answers"user_code": "WDJB-MJHT""verification_uri": "…""interval": 5 Human approvesopens the link on a phone,types the code, says yesfrom anywhere Agent pollsPOST /token"access_token": "agt_…""scope": "search:read"
If the agent calls with no key, the 401 error says where to sign in:
HTTP/1.1 401
WWW-Authenticate: Bearer resource_metadata="https://mcp.acme.dev/.well-known/oauth-protected-resource"

rfc-editor.org/rfc/rfc8628 (device grant) · RFC 9728 (protected resource metadata) · example host acme.dev is made up

1.6 Errors · real replies to a call with no key, 20 Oct 2026

Two error messages. Only one says what to do next.

Exa · 401

{"error":"Invalid API key. Provide a valid key using 'Authorization: Bearer <key>' or 'x-api-key: <key>'. Create a key at https://dashboard.exa.ai/api-keys", "tag":"INVALID_API_KEY", "requestId":"…"}
fixed error code
INVALID_API_KEY
how to fix it
where to make a key
request id
yes

Tavily · 401

{"detail":{"error":"Unauthorized: missing or invalid API key."}}
fixed error code
none
how to fix it
none
request id
none

A few extra words turn a dead end into a next step. When too busy (429), say when to retry (Retry-After).

research/agentnative/walk.md rows 10, 11 · draft-ietf-httpapi-ratelimit-headers-11 (a draft)

1.7 Pay · HTTP 402, "Payment Required"

The server names a price. The agent pays, then retries.

POST /searchno account 402 + termsprice, currency, network Sign a paymentfrom the agent's wallet Retrywith proof of payment 200the results We stopped at the 402. Steps 3 to 5 show how the protocol works; we did not run them.
  • The real terms, 20 Oct 2026$0.007 in USD Coin, a stablecoin, on the Base network (eip155:8453), x402Version: 2. The reply on the first slide.
  • Statusx402 was open sourced by Coinbase in May 2025. It moved to an x402 Foundation at the Linux Foundation on 2026-04-02. check primary Adoption figures conflict, so we quote none.

research/agentnative/walk.md, Exa row 13 · eco.com/support/en/articles/14839402-x402-protocol-explained (secondary)

1.8 The map for the rest of the talk

The agent native search stack

LAYERTHE AGENT ASKSTHE ARTIFACT THAT ANSWERS before thefirst call everycall when it costsmoney 1DiscoverDoes this exist? What can it do?llms.txt, agent card, api-catalog,MCP card, OpenAPI 2AuthHow do I get a key, no password?device code, a file that sayswhere to sign in, scopes 3QueryHow do I ask?MCP tool with listed inputs, or OpenAPI 4ResultsAre the fields the same every time?the same fields every time: url, title,snippet, score, date, request_id 5ExtractCan I get the full text, no scraping?the full page text,or Markdown on request 6CiteWhere is this from? How fresh?url + date on every result 7PayWhat did it cost? How do I pay?cost in each reply, when to retry,x402 errors with a next step,at every layer

A person needs layers 3 and 4. An agent needs all seven.

2

Part 2 · The web today

How ready is the web?

First, scores for 5,204 sites from one public grader. Then four real APIs we tested on 20 Oct 2026.

2.1 ora.ai, a public grader of agent readiness · its leaderboard

Most of the web is not ready for agents

241 626 703 751 900 869 685 303 98 28 0-910-1920-2930-3940-4950-5960-6970-7980-8990-100 ora score out of 100 · bar height = number of sites median 42 3,221 sites, 62%, score under 50 immersivecommons.com · 100 our site, for reference: not on this board

ora scores four things out of 100: can an agent find you (20), get in (30), use you (40), pay you (10). Only 28 of 5,204 sites score 90 or more. Two score 100.

ora.ai public leaderboard, pulled 2026-10-17 · research/agentnative/chart-data.json · ora.ai/methodology · IC: ora scan 2026-10-20

2.2 Companies that sell search and web data · ora score of each main site

Companies that sell to agents are ahead

all sites, median 42
Agent Tools category, median 59.5
zenrows.com
96
apify.com
96
tavily.com
92
exa.ai
90
parallel.ai
89
brightdata.comevent host
89
firecrawl.dev
84
linkup.so
64
jina.ai
61
perplexity.ai
59
serper.dev
33

This is how ready the site is for agents, not how good the search is. Scans dated 2026-09-18 to 2026-10-17.

ora.ai public leaderboard, pulled 2026-10-17 · research/agentnative/chart-data.json (search_and_data_vendors, category_medians)

2.3 The method · a standard usability test, with a program as the user

We acted as the agent and tried every step it would try.

  • No account, no key, no payment. We read public pages and called each API with no key to see the errors.
  • 13 checks across the 7 layers. Each result links to its evidence.
  • Not a quality test. We compared no search results.
  • One afternoon, one network, about twelve minutes, run by a script.

Five personas the full method uses

  • Coding agent: "add search to this app"
  • MCP native agent: "connect from the site alone"
  • Procurement agent: "get access, no human typing a password"
  • Crawler or answer engine: "can I read the site at all?"
  • Evaluating agent: "compare vendors from what is published"

At each step, four questions: does it know what to do, can it find how, does it understand the response, can it tell it made progress?

research/agentnative/walk.md · walk_probe.py · walk_probe2.py · walked 2026-10-20 13:18 to 13:30 PT

2.4 The walk · 20 Oct 2026, 13:18 to 13:30 PT · read only

Thirteen checks, five platforms

presentpartlynot foundn/a
Exa
Tavily
Bright Dataweb data API
Wikipediafor contrast
ICours, reference
Discover
llms.txt
A2A agent card
API catalog (RFC 9727)
MCP server
Rules for AI bots (robots.txt)
Auth
Sign-in details a program can find
n/a
Start with no person present
Query
OpenAPI spec
Extract
Markdown on request
Recover
Error with a next step
Published limits + when to retry
Pay
Prices in a plain-text file
n/a
x402 pay per call
n/a

Click a cell to see the evidence. This is not a ranking. The rows are not equal, the checklist is ours, and we built our own site against it.

research/agentnative/walk.md (every cell sourced) · walk/probes.jsonl · walk/probes2.json

Finding 1 Where the files live · try it: pick a vendor

At the address an agent calls, most files are missing (404)

the host the agent calls

    where the file actually is

    elsewhere

      research/agentnative/walk/probes.jsonl · probes2.json · walk.md finding 2

      Finding 2 Getting in · each vendor's sign-in settings, read 20 Oct 2026

      Discovery is solved. Getting in without a human is not.

      auth.exa.ai

      Sign in with a browser

      Grants authorization_code, refresh_token, jwt-bearer.

      No device code option.

      mcp.tavily.com

      Sign in with a browser

      Grants authorization_code, refresh_token.

      No device code option. Its 401 error does say where to sign in, as the standard asks.

      brightdata.com

      Sign in with a browser

      Grants authorization_code, refresh_token.

      No device code option. Its 401 error does say where to sign in, as the standard asks.

      api.exa.ai/search

      402: here is the price

      No key needed to start. Its MCP server also listed its tools with no key.

      1 of 3 vendors lets an agent start alone.

      Three ways in for an agent with no person present: device code, a keyless trial, or pay per call.

      research/agentnative/walk.md rows 8 and 9 · oauth-authorization-server metadata on each host · walk/probes.jsonl

      Finding 3 Wikipedia's search API · keyless

      Wikipedia works for agents without the new files

      GET en.wikipedia.org/w/rest.php/v1/search/page   (no q)
      400 {"error":"parameter-validation-failed", "name":"q",
           "failureCode":"missingparam",
           "messageTranslations":{"en":"The \"q\" parameter must be set."}}
      • Search works with no key: ?q=agent returns results (200).
      • Published limits: 10 calls a minute if anonymous, 200 if the caller names itself. It says when to retry.
      • An OpenAPI spec at /api/rest_v1/?spec. No llms.txt, no agent card, no MCP.

      Agent native is mostly about taking the human out of the loop, not about adding files.

      research/agentnative/walk.md, Wikipedia rows · mediawiki.org/wiki/Wikimedia_APIs/Rate_limits

      Finding 4 Usage limits

      Nobody sends rate limit headers yet.

      • Rate limit headers would tell an agent, in each reply, how many calls it has left. They are a draft standard.
      • Exa, Tavily and Wikipedia publish limits and say when to retry. None documents the draft headers.
      • Bright Data names its "too many requests" errors (rate_limit, sr_rate_limit). We found no published numbers.

      The cheapest fix needs no standard: put the cost of each call in the reply.

      exa.ai/docs/reference/rate-limits · docs.tavily.com/documentation/rate-limits · walk.md row 11

      3

      Part 3 · Our story

      Our site: 52 to 100, and what it did not change

      immersivecommons.com is the site of a members-run AI space in San Francisco. We used it as our test site.

      3.1 ora score over time · immersivecommons.com

      52 to 100 in 51 days

      5060708090100 Jul 15Aug 1Sep 1Oct 1Oct 20 52 +28 in one dayOpenAPI, MCP card, x402, SDKs two categories fullusability and access, Jul 18 worked out the name search check 100: tools added to the web pageSep 4, and holding on Oct 20 Sep 5 showed 77: a grader fault, not our change. Not plotted.
      100/100

      ora, 2026-10-20: discovery 19/19, access 67/67, usability 181/182, payments 2/2.

      Level 5

      "Agent Native" on Cloudflare's isitagentready, scan 2026-10-20.

      8 of 91,548

      sites on ora's two public leaderboards hold 100 on 20 Oct 2026. We are one of them.

      We do not claim to be number one: we have no dated record of a rank.

      research/agentnative/chart-data.json (ic_timeline) · ic-case-study.md · ora-ic-score-2026-10-20.txt · walk/ora-*-p*.json

      3.2 What moved the score

      Most points came from basic developer features

      1. 1

        Describe your API in a machine format.

        OpenAPI spec 7 points, public API 7. Publishing it turned on more checks: the usability maximum grew from 81 to 150.

      2. 2

        Be a real developer product.

        Developer portal 6, OAuth sign-in 5. Then clear errors, versions, paging, safe retries, limit headers, SDKs and a CLI: 78 usability points.

      3. 3

        Let an agent join with a human's OK.

        Device code: a person approves on a phone. The agent cannot give itself a key.

      4. 4

        Get listed where agents look.

        The grader searches the web for your name and checks public directories (npm, the MCP registry, skills.sh). You cannot fix this with code. It took the longest.

      5. 5

        The last point: tools inside the web page.

        WebMCP lets a web page offer tools to an agent. We put it in the page's HTML so the grader could see it. Worth +1.2, as the grader predicted. WebMCP is a Chrome trial feature. check primary

      research/agentnative/ic-case-study.md (biggest movers) · WebMCP status: blink-dev origin trial thread

      3.3 What graders taught us

      Learn how a grader measures before you trust its score

      9 of 9

      times we said "can't be fixed", we were wrong.

      Read its method. Copy what passing sites do. Fix the exact address it checks. Its checks were simple: two fixed paths, a text match, a homepage link.

      +0

      A real fix can move the score by zero.

      When a category is about 95% full, one more pass can round to zero. It happened at least 4 times.

      81 → 183

      Graders reuse old results, and add new checks.

      Some results are kept for days before a re-check. New checks keep arriving: the usability maximum went from 81 to 183.

      77

      A drop can be the grader, not you.

      2026-09-05: 42 checks failed at once. The grader could load our homepage and no other page. Nothing on our side had changed.

      research/agentnative/ic-case-study.md (hard lessons)

      3.4 The honest part

      A higher score did not bring more use

      −41%new agent keys per day, during the climb versus before it: 2.68 a day down to 1.57.
      • 431 agent keys issued in total. 247 of them, 57%, were never used.
      • The biggest jump in four months: 78 keys in two days, at a hackathon. People in a room did that, not the score.
      • So we count real use: 305,809 agent calls (MCP and A2A), Sep 8 to Oct 17. 1.5% were errors. 22 callers; two of them make 97% of the calls.
      • One caveat: interest may have faded after launch, and we cannot separate that out.

      A grader tells you the door is open. It does not tell you anyone walked in.

      research/agentnative/ic-case-study.md · agentify/analysis/AGENT-TRAFFIC.md (2026-09-06) · live counters to 2026-10-17

      Part 4 Build it tonight

      Rafa showed how your agent reaches the web. Now make your product reachable by agents.

      Reach the web

      Bright Data MCP

      endpoint
      mcp.brightdata.com/mcp?token=…
      free tier
      5,000 requests a month
      tools
      32. Three are on by default: search_engine, scrape_as_markdown, discover. The rest come in groups: batch, extract, scrapers, browser.

      Be reachable

      Your own server

      discover
      llms.txt and a card on the host the agent calls
      call
      one MCP tool that says what comes back
      recover
      errors with a fix, cost in each reply

      Your agent gets the web from Bright Data and your own data from your server.

      docs.brightdata.com/mcp-server/overview · /mcp-server/tools · /mcp-server/remote/quickstart (public docs)

      4.2 The checklist

      Ten things to ship

      1. Put llms.txt at your site root: a title, one line on what you do, links to your docs.
      2. Write an OpenAPI file, and keep field names stable.
      3. Give every result a url, a date and a request_id.
      4. Offer full text or Markdown, so nobody has to scrape you.
      5. Make every error say what to do next: a stable code plus a fix line. an hour
      6. When too busy (429), send Retry-After. Put the cost of each call in the reply. an hour
      7. Wrap your API as an MCP server, with one sentence tool descriptions that say what comes back.
      8. On a 401 error, say where to sign in (a WWW-Authenticate header). an hour
      9. Give agents a way in with no person present: device code, a keyless trial, or pay per call.
      10. Put discovery files on the host the agent calls. Generate them from code. Then test them with a fresh agent.

      4.3 Build it in 70 minutes

      server.py · pip install mcpfrom mcp.server.fastmcp import FastMCPmcp = FastMCP("my-search") @mcp.tool()def search(q: str, limit: int = 5) -> dict:    """Search my index. Returns results[] with url, title,    snippet, date, plus cost and request_id."""    if not q.strip():        return {"ok": False, "error_kind": "bad_query",                "fix": "pass a non-empty q"}    return {"ok": True, "results": index.search(q, limit),            "cost": {"credits": 1}, "request_id": new_id()} mcp.run(transport="streamable-http")# claude mcp add --transport http my-search \#   http://localhost:8000/mcp

      The 70 minutes

      20 minthe server, against your own data
      10 minllms.txt and an agent card on the same host
      20 minerrors with a fix, cost in each reply, Retry-After
      20 mintest it cold: open a new Claude Code session with no hints. Ask it to "use my-search to answer X". Fix what it trips on.
      plusadd Bright Data's MCP for the open web, so one agent has both halves.

      MCP Python SDK (FastMCP) · docs.brightdata.com/mcp-server/remote/quickstart · a sketch, not run on stage

      The one line Agent native search platforms

      An agent native platform is one an agent can find, join, call, understand, recover from and pay, without a human reading a web page.

      Then count who actually walks in.

      Ray Zahid · Immersive Commons · slides: agent-search-talks.pages.dev/agentnative

      short cut01 / 01
      Overview · arrows + Enter or click · Esc to close