WebLens

Official registry Search and web

Scrape, crawl, map and extract the web. Pay per call in USDC, no account or API key.

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

Remote (streamable-http)
Claude Code
claude mcp add --transport http weblens 'https://api.weblens.dev/mcp'
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "weblens": {
            "type": "http",
            "url": "https://api.weblens.dev/mcp"
        }
    }
}

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. WebLens
  2. Try it free, right now
  3. Preview before you pay (free)
  4. ERC-8004: receipts and feedback
  5. Endpoints
  6. Use with AI agents (MCP)
  7. API usage
  8. How payments work
  9. Development
  10. Tech stack
  11. Links
  12. License

WebLens

Premium web intelligence API for AI agents, with x402 micropayments. No account needed — pay per request in USDC on Base or Solana.

🌐 Live API: https://api.weblens.dev 📖 Interactive docs: https://api.weblens.dev/docs 🤖 Agent guide: https://api.weblens.dev/llms.txt 🔎 Marketplace: listed on x402scan

Try it free, right now

No wallet, no signup — these are rate limited to 10 requests/hour per IP:

curl https://api.weblens.dev/r/https://example.com     # any page as markdown
curl https://api.weblens.dev/s/cloudflare+workers      # web search

Preview before you pay (free)

An agent shouldn't have to buy a call to learn what it returns. POST /preview is free and answers that up front — the live price, a one-line summary, and a real sample of the exact response shape:

curl -X POST https://api.weblens.dev/preview \
  -H "Content-Type: application/json" \
  -d '{"endpoint": "/answer"}'
{
  "endpoint": "/answer",
  "price": "$0.05",
  "currency": "USD",
  "summary": "A direct answer with inline [n] citations to real sources.",
  "sample": { "query": "...", "answer": "...", "citations": [], "confidence": 0.92 },
  "sampleType": "recorded",
  "livePreviewAvailable": false,
  "livePreviewHint": "This endpoint calls a paid upstream provider, so free live previews are not offered — the recorded sample shows the exact response shape."
}

Live vs recorded. A real, truncated live preview runs only for endpoints whose marginal cost is a plain fetch — currently /fetch/basic, /contents and /map — and only when you pass a url. Everything else is backed by a metered upstream (SerpAPI, Anthropic); running those free would burn upstream credits, so they return the recorded sample, which still shows every field name and type. An endpoint that isn't sold returns 404.

# live: the first 500 chars of the real result, for free
curl -X POST https://api.weblens.dev/preview \
  -H "Content-Type: application/json" \
  -d '{"endpoint": "/fetch/basic", "url": "https://example.com"}'

Rate limited to 10 requests/hour per IP like the rest of the free tier.

ERC-8004: receipts and feedback

ERC-8004 (Trustless Agents) keeps compact signals on-chain and the detailed documents off-chain. WebLens hosts the off-chain half — the part a service operator can run without deploying a contract. To be precise about what that is and isn't: WebLens is not registered on-chain, holds no agent id, and writes nothing to any registry.

EndpointWhat it gives you
GET /.well-known/agent-registration.jsonThe ERC-8004 registration document: name, description, image, services, x402Support, payment info, feedback endpoints. registrations is empty (no on-chain registration) and supportedTrust is ["feedback"].
GET /receipts/{requestId}The receipt for a paid call — endpoint, status, outcome, price, payment method, network, pay-to. Every paid response returns X-Receipt-Id and X-Receipt-Url headers pointing here. Kept 30 days.
POST /feedbackHost a feedback document you author; returns {feedbackURI, feedbackHash} (keccak-256), the pair giveFeedback() expects. Required fields: agentRegistry, agentId, clientAddress, createdAt, value, valueDecimals — a missing one returns 400 naming it.
GET /feedback/{id}Serves that document byte-for-byte, so its keccak-256 hash matches the feedbackHash you were given. This URL is the feedbackURI.

Two more things worth stating plainly:

  • A receipt is unsigned. Its evidence is the settlement transaction it names, which anyone can check on-chain; nothing else here is trustless.
  • The buyer authors the feedback document and posts giveFeedback() themselves. WebLens only hosts the document verbatim and returns its hash; it never authors, edits, or submits feedback.

Endpoints

All paid endpoints are POST with a JSON body. Prices are per request in USDC.

Core
EndpointDescriptionPrice
/fetch/basicFetch a webpage as clean markdown$0.002
/fetch/proFetch with full JavaScript rendering (SPAs)$0.006
/fetch/resilientAuto-fallback: native scraper → headless Chromium$0.008
/contentsBulk page text for 1–20 URLs$0.0015/URL
/screenshotCapture a webpage screenshot (PNG)$0.008
/mapDiscover a site's URLs (sitemaps + links, no page fetches)$0.004
/domainRegistration + DNS + SaaS stack + risk signals for a domain$0.005
/techDetect a site's framework, CMS, CDN, analytics and payments stack$0.005
/packagenpm/PyPI package health: deprecation, downloads, maintenance$0.003
/discussionsHacker News stories on a topic, with aggregates$0.004
/intel/projectOff-chain project due diligence: domain age, team/whitepaper, contract cross-check, A–F grade$0.05
/crawlBounded whole-site crawl → markdown per page$0.0015/page
EndpointDescriptionPrice
/searchReal-time web search (includeContent adds page markdown, +$0.0015/result)$0.015
/search/newsGoogle News articles with source and date$0.015
/search/imagesImage results with dimensions and source pages$0.015
/search/placesLocal businesses: address, rating, phone, coordinates$0.045
/search/shoppingProducts with prices, sellers, ratings$0.015
/search/scholarAcademic papers with citation counts$0.015
/search/autocompleteQuery suggestions (keyword/intent research)$0.015
/search/trendsInterest-over-time timeline$0.015
Social
EndpointDescriptionPrice
/social/youtube/transcriptFull video transcript with timestamps$0.03
Extraction & research
EndpointDescriptionPrice
/extractStructured extraction against a JSON schema$0.03
/pdfExtract text and metadata from a PDF$0.004
/answerGrounded answer with inline [n] citations$0.05
/research/deepCited research: one search (quick) or sub-questions → search each (standard, deep) → answer with inline [n] citations$0.08–$0.35

/research/deep is the only long-running endpoint: it plans sub-questions, runs a web search per sub-question, fetches and dedupes the sources, then synthesizes a cited answer — all in one synchronous call. A standard run (3 sub-questions, 8 sources, $0.20) takes roughly 30–60 seconds; deep (5 sub-questions, 12 sources, $0.35) takes longer. Set a generous HTTP timeout (120s+) and don't retry on a client timeout, or you'll pay twice.

Intelligence
EndpointDescriptionPrice

Free and unauthenticated: /, /health, /docs, /openapi.json, /llms.txt, /discovery, /.well-known/x402, /mcp, /r/{url}, /free/fetch, /preview, /.well-known/agent-registration.json, /receipts/{requestId}, /feedback, /feedback/{id}.

Dynamically-priced endpoints (/fetch/pro, /extract) apply a complexity multiplier — up to 3× for bot-protected domains. Cached responses on the fetch family are 70% cheaper. The exact price is always in the 402 challenge.

Use with AI agents (MCP)

Remote HTTP — nothing to install:

{ "mcpServers": { "weblens": { "url": "https://api.weblens.dev/mcp" } } }

API usage

# Fetch a page as markdown
curl -X POST https://api.weblens.dev/fetch/basic \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com"}'

# Search, with page content included
curl -X POST https://api.weblens.dev/search \
  -H "Content-Type: application/json" \
  -d '{"query": "latest AI news", "limit": 5, "includeContent": true}'

# Structured extraction
curl -X POST https://api.weblens.dev/extract \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com/product",
       "schema": {"title": {"type": "string"}, "price": {"type": "number"}},
       "instructions": "Extract the product title and price"}'

# Crawl a site (pay for the page budget you request)
curl -X POST https://api.weblens.dev/crawl \
  -H "Content-Type: application/json" \
  -d '{"url": "https://example.com", "limit": 10, "maxDepth": 2}'

# Deep research with inline citations (slow — 30-60s, so raise the client timeout)
curl --max-time 120 -X POST https://api.weblens.dev/research/deep \
  -H "Content-Type: application/json" \
  -d '{"query": "How are AI agents using micropayments in 2026?", "depth": "standard"}'

Each returns 402 Payment Required with the price until you attach payment — see below.

How payments work

WebLens implements x402 v2:

  1. POST any paid endpoint with no payment.
  2. Get 402 Payment Required with a PAYMENT-REQUIRED header carrying the price, network, asset, and pay-to address.
  3. Sign a USDC transfer authorization with your wallet.
  4. Retry the same request with a Payment-Signature header.
  5. The payment is verified on-chain and you get your data.

On Base, payments settle through Coinbase's CDP facilitator, with PayAI taking over any payment CDP fails on; on Solana, through PayAI. Any x402 v2 client works — @x402/axios, @x402/fetch, or the bundled MCP server, which handles the whole flow for you.

Prepaid API keys are the alternative for developers who pay by card, where card sales are switched on: POST /billing/checkout {"pack": "10"} returns a Stripe Checkout link for a $10, $50 or $100 pack, and the page after payment shows an API key once. Send it as Authorization: Bearer <key> on any paid endpoint; each call is debited at its list price, and failed calls are refunded. GET /account shows the balance.

Development

pnpm install
pnpm run dev          # local dev server on :8787
pnpm run build        # tsc --noEmit (type check)
pnpm run lint         # eslint
pnpm run test         # vitest (unit + property + workerd integration)
pnpm run deploy       # wrangler deploy (production)

Secrets are set with wrangler, never committed:

wrangler secret put SERP_API_KEY        # search + all verticals + transcripts
wrangler secret put ANTHROPIC_API_KEY   # AI extraction, research, answers, intel
wrangler secret put CDP_API_KEY_ID      # optional: CDP facilitator fallback
wrangler secret put CDP_API_KEY_SECRET
VariablePurpose
PAY_TO_ADDRESSWallet that receives payments (wrangler.toml var)
NETWORKbase (production) or base-sepolia (testnet)
SERP_API_KEYSerpAPI key — search, verticals, YouTube transcripts
ANTHROPIC_API_KEYClaude — extraction, research, answers, intel
API_KEY_PREFIXPrefix of the API keys this environment sells (wl_live_ / wl_test_, wrangler.toml var)
STRIPE_SECRET_KEY, STRIPE_WEBHOOK_SECRETOptional: card sales of prepaid API keys (Stripe Managed Payments); without both, /billing/* answers 503
PAYAI_FACILITATOR_URLOptional: override the facilitator endpoint
Testing against testnet
wrangler dev --env testnet          # Base Sepolia, fake USDC
API_URL=http://localhost:8787 PRIVATE_KEY=0x... npx tsx scripts/test-payment-testnet.ts

Get free testnet USDC from the Circle faucet on Base Sepolia.

Discovery
pnpm run verify-bazaar    # check the x402 discovery extension on every route

/openapi.json doubles as the discovery document for x402scan — it carries info.x-guidance, per-operation x-payment-info, and security: [] on free operations. WebLens is listed on x402scan and indexed in the PayAI facilitator catalog.

Note on the Coinbase CDP Bazaar: it only indexes services whose payments the CDP facilitator itself settles. WebLens uses PayAI as its primary facilitator (CDP has an open Base-mainnet settlement bug, x402#1065), so it does not appear there.

Tech stack

  • Cloudflare Workers — edge runtime, Durable Objects, KV, Browser Rendering
  • Hono — web framework
  • x402 — HTTP-native micropayments
  • Zod — request validation
  • Vitest + fast-check — unit, property, and real-workerd integration tests

License

MIT

Frequently asked questions

What is WebLens?

Scrape, crawl, map and extract the web. Pay per call in USDC, no account or API key.

How do I install WebLens?

It runs as a remote server. In Claude Code: claude mcp add --transport http weblens 'https://api.weblens.dev/mcp'. For other clients, paste the JSON configuration from this page into their MCP settings.

Does WebLens need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is WebLens open source?

Its code is public on GitHub, but the repository does not declare a standard license.

Who maintains WebLens?

It is published by vasilistotskas. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.