dev.weblens/weblens is an MCP server that scrape, crawl, map and extract the web. Pay per call in USDC, no account or API key. Its tool list has not been published yet over http, requires no API key, and scores 60/100 on MCPpedia's security, maintenance and efficiency rubric.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"weblens": {
"url": "https://api.weblens.dev/mcp"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
Premium web intelligence API for AI agents, with x402 micropayments. No accounts, no API keys — pay per request in USDC on Base.
Run this in your terminal to verify the server starts. Then let us know if it worked — your result helps other developers.
npx -y 'pnpm' 2>&1 | head -1 && echo "✓ Server started successfully"
After testing, let us know if it worked:
Five weighted categories — click any category to see the underlying evidence.
pnpm: Path traversal in configDependencies env lockfile allows symlink creation outside node_modules/.pnpm-config
## Summary `pnpm` accepts package names from the env lockfile `configDependencies` section and uses those names directly when creating config dependency symlinks under `node_modules/.pnpm-config`. A malicious repository can commit a crafted `pnpm-lock.yaml` whose env-lockfile document contains a traversal-shaped config dependency name such as `../../PWNED_CFGDEP`. During `pnpm install`, pnpm installs the config dependency and creates a symlink at a path derived from that name. In local testin
pnpm: `patch-remove` could delete project-selected files outside the patches directory
## Summary The `patch-remove` deletion-scope issue tracked as GHSA-72r4-9c5j-mj57 / CAND-PNPM-030 has been addressed in pnpm. A crafted patch entry could resolve outside the configured patches directory and cause `pnpm patch-remove` to delete an arbitrary reachable file. This patch validates the configured directory and every resolved target before unlinking anything, then deletes the final directory entry without following it. ## Security boundary - Traversal and absolute paths that resolve
pnpm: Hoisted install imports lockfile alias outside node_modules
## Summary The hoisted dependency alias issue tracked as GHSA-fr4h-3cph-29xv / CAND-PNPM-059 has been addressed in both pnpm and pacquet. A crafted lockfile alias could be joined directly under a hoisted `node_modules` directory. Traversal aliases could escape that directory, while reserved aliases such as `.bin` or `.pnpm` could overwrite pnpm-owned layout. This patch validates package-name semantics and path containment before graph insertion or filesystem work. ## Security boundary - The
pnpm: `stage download` writes outside its destination directory via manifest name/version traversal
## Summary The staged-tarball filename traversal reported as GHSA-v23m-ccfg-pq9h / CAND-PNPM-038 is fixed on `main` by [pnpm/pnpm#12303](https://github.com/pnpm/pnpm/pull/12303), merged as `65443f4bdf1f0db9c8c7dc58fee25252607e9234`. Before the fix, `pnpm stage download` derived a local filename from registry-controlled package name and version fields. A crafted manifest could escape the selected download directory and overwrite another reachable file. The merged fix validates both fields, deri
pnpm: Reserved bin name deletes PNPM_HOME during global remove
<details> <summary>Maintainer Action Plan</summary> ## Maintainer Action Plan This report is ready to review with the shared patch branch. Start with the PR and the expected fixed behavior, then use the detailed exploit narrative below only if you want to replay the original path. - Advisory: `CAND-PNPM-085` / `GHSA-4gxm-v5v7-fqc4` - Advisory URL: https://github.com/pnpm/pnpm/security/advisories/GHSA-4gxm-v5v7-fqc4 - Shared patch PR: https://github.com/pnpm/pnpm-ghsa-j2hc-m6cf-6jm8/pull/1 - S
Be the first to review
Have you used this server?
Share your experience — it helps other developers decide.
Sign in to write a review.
Others in browser
Chrome DevTools for coding agents
Monitor browser logs directly from Cursor and other MCP compatible IDEs.
🔥 Official Firecrawl MCP Server - Adds powerful web scraping and search to Cursor, Claude and any other LLM clients.
MCP server paired with a browser extension that enables AI agents to control the user's browser.
MCP Security Weekly
Get CVE alerts and security updates for dev.weblens/weblens and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
Premium web intelligence API for AI agents, with x402 micropayments. No accounts, no API keys — pay per request in USDC on Base.
🌐 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
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
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 (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.
| Endpoint | What it gives you |
|---|---|
GET /.well-known/agent-registration.json | The 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 /feedback | Host 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:
mac is a symmetric HMAC tag (the same construction as proof-of-context). Only a
holder of the key can verify it — it is not a third-party-verifiable signature, and nothing here
is trustless.giveFeedback() themselves. WebLens only
hosts the document verb