Your agent can't Google. Every "research agent" tutorial hand-waves this step: you go get a search API key,
put it in an env file, set up billing, and hope the key never leaks out of a prompt.
There is a simpler way now that x402 exists: the agent pays for each query itself, from its own wallet,
in USDC on Base. No signup, no key, no plan. Here is the whole integration.
1. Try it free from your terminal
curl -H "X-Free-Trial: 1" \
"https://search.cyberwarex.com/search?q=x402+payment+protocol&n=3"
You get back plain JSON: title, url, snippet, source engine. Three free calls a day per IP, no account.
2. Paid path: 5 lines
Python:
pip install "x402[evm,requests]"
import os
from eth_account import Account
from x402 import x402ClientSync
from x402.http.clients import x402_requests
from x402.mechanisms.evm import EthAccountSigner
from x402.mechanisms.evm.exact import ExactEvmScheme
client = x402ClientSync()
client.register("eip155:8453", ExactEvmScheme(EthAccountSigner(Account.from_key(PK)))) # a wallet with a little USDC on Base
s = x402_requests(client) # a requests.Session that pays 402s for you
r = s.get("https://search.cyberwarex.com/search", params={"q": "latest base chain news", "n": 5}).json()
for hit in r["results"]:
print(hit["title"], hit["url"])
TypeScript:
npm i @x402/fetch @x402/evm viem
import { wrapFetchWithPaymentFromConfig } from "@x402/fetch";
import { ExactEvmScheme } from "@x402/evm";
import { privateKeyToAccount } from "viem/accounts";
const f = wrapFetchWithPaymentFromConfig(fetch, {
schemes: [{ network: "eip155:8453", client: new ExactEvmScheme(privateKeyToAccount(PK)) }], // Base mainnet
});
const r = await f("https://search.cyberwarex.com/search?q=latest+base+chain+news&n=5");
const { results } = await r.json();
Both samples were run against the live host on 2026-10-19 with the current SDKs (x402 2.25 on PyPI, @x402/fetch 2.28 on npm). The older x402-fetch 1.x package rejects the v2 network id and will not work.
What happens under the hood: the first request gets an HTTP 402 with a price quote ($0.003 = 3000 micro-USDC),
the client signs an EIP-3009 authorization, retries with an X-PAYMENT header, and the server settles it through
the Coinbase facilitator. Gasless for the payer. Queries that return zero results are not charged.
3. The rest of the research loop, same host
| Call | What you get | Price |
|---|---|---|
| /search?q= | up to 10 web results | $0.003 |
| /news?q= | ranked, corroborated headlines with age in minutes | $0.001 |
| /contents?url= | one page as clean markdown, JS rendered | $0.002 |
| /search-contents?q= | search + the readable text of each result page | $0.006 |
| /papers?q= | arXiv, PubMed, Semantic Scholar, OpenAlex | $0.003 |
| /answer?q= | a concise cited answer built from live pages | $0.03 |
/search-contents is the one I would start with for a research agent: it collapses the search-then-fetch
loop into one paid call.
4. If you don't want to sign every call
Top up once and use a header instead:
r = s.get("https://safe.cyberwarex.com/subscribe?usd=3").json() # $3 -> $3.30 credit -> 1,100 searches
requests.get("https://search.cyberwarex.com/search", params={"q": q},
headers={"X-Subscription-Key": r["key"]})
Why not just a free search API
Free tiers are shared resources with per-IP limits and surprise deprecations. A key is a secret your agent
has to carry. Here the wallet is the credential, the price is $0.003 (typical x402 web search is $0.01),
and the results are Google-grade. Uptime and probes are public on x402-list.com.
Quickstart page: https://cyberwarex.com/assets/search-quickstart.html
Docs for agents: https://search.cyberwarex.com/llms.txt
Top comments (0)