# X402 Private Web Tools

> Private web tools for AI agents — search, scrape, and screenshot the web with x402 micropayments (USDC on Base). Zero logging, no API keys, no accounts. Pay per use.

- Skill: `modbender/x402-private-web-tools` (Agent Skill, multi-file: 5 files)
- Install (CLI): `npx skillmds add modbender/x402-private-web-tools`
- Raw SKILL.md: https://api.skillmd.com/api/skills/modbender/x402-private-web-tools/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Integrations & APIs
- Author: modbender (https://skillmd.com/u/modbender)
- Updated: 2026-09-09
- Page: https://skillmd.com/skills/modbender/x402-private-web-tools

---


# x402 Private Web Tools

Search, scrape, and screenshot the web privately. Uses the x402 payment protocol — your agent pays per request with USDC on Base mainnet. No API keys, no accounts, no logging.

**Services:**
- 🔍 **Web Search** — Multi-engine private search ($0.002/query)
- 🕸️ **Web Scrape** — Extract clean markdown from any URL ($0.005/page)
- 📸 **Screenshot** — Capture any URL as PNG/JPEG ($0.002/shot)

**Gateway:** `https://search.reversesandbox.com`

## Prerequisites

- Node.js 18+
- A Base mainnet wallet with ETH (gas) and USDC (payments)

## First-Time Setup

### 1. Install dependencies

```bash
bash <skill-dir>/scripts/setup.sh
```

Installs the x402 SDK to `~/.x402-client/`. Only needed once.

### 2. Generate a wallet (if you don't have one)

```bash
node <skill-dir>/scripts/wallet-gen.mjs --out ~/.x402-client/wallet.key
```

### 3. Fund the wallet

Send USDC and a small amount of ETH (for gas) on **Base mainnet** to the wallet address printed by wallet-gen.

- **USDC on Base**: Bridge from any chain or buy on an exchange
- **ETH on Base**: ~$0.50 is enough for thousands of requests

### 4. Store the key

```bash
export X402_PRIVATE_KEY=$(cat ~/.x402-client/wallet.key)
```

Or pass `--key-file ~/.x402-client/wallet.key` to each request.

## Usage

All commands run from `~/.x402-client/`:

```bash
cd ~/.x402-client && node <skill-dir>/scripts/x402-fetch.mjs "<url>" --key-file wallet.key
```

### Web Search ($0.002/query)

```bash
node <skill-dir>/scripts/x402-fetch.mjs \
  "https://search.reversesandbox.com/web/search?q=latest+AI+news&count=10" \
  --key-file ~/.x402-client/wallet.key
```

**Parameters:** `q` (required), `count` (1-20, default 10), `offset` (default 0)

**Response:**
```json
{
  "query": { "original": "latest AI news" },
  "web": {
    "results": [
      { "title": "...", "url": "...", "description": "..." }
    ]
  }
}
```

### Web Scrape ($0.005/page)

```bash
node <skill-dir>/scripts/x402-fetch.mjs \
  "https://search.reversesandbox.com/scrape/extract" \
  --method POST \
  --body '{"url": "https://example.com", "format": "markdown"}' \
  --key-file ~/.x402-client/wallet.key
```

**Body (JSON):** `url` (required), `format` ("markdown"|"text", default "markdown"), `includeLinks` (bool), `timeout` (ms)

**Response:**
```json
{
  "title": "Example Domain",
  "content": "# Example Domain\nThis domain is for use in...",
  "url": "https://example.com",
  "timestamp": "2026-02-16T09:00:00.000Z",
  "format": "markdown"
}
```

### Screenshot ($0.002/shot)

```bash
node <skill-dir>/scripts/x402-fetch.mjs \
  "https://search.reversesandbox.com/screenshot/?url=https://example.com&width=1280&height=720" \
  --key-file ~/.x402-client/wallet.key \
  --save screenshot.png
```

**Parameters:** `url` (required), `format` (png|jpeg, default png), `width` (320-3840), `height` (200-2160), `fullPage` (true|false), `quality` (1-100, jpeg only)

**Returns:** Binary PNG or JPEG image. Use `--save <file>` to write to disk.

## MCP Server

For MCP-compatible agents (Claude, etc.), use the MCP server:

```bash
# Install
npm install -g x402-tools-mcp

# Run (set your wallet key)
X402_PRIVATE_KEY=0x... x402-tools-mcp
```

**GitHub:** https://github.com/kodos-vibe/x402-tools-mcp

Provides tools: `web_search`, `web_scrape`, `screenshot`

## Free Endpoints (no payment required)

- `GET /health` — Service status
- `GET /routes` — List all endpoints with prices

## Troubleshooting

- **"insufficient funds"**: Wallet needs more USDC or ETH on Base mainnet.
- **402 with no auto-payment**: Ensure setup.sh was run and you're in `~/.x402-client/`.
- **Slow scrape (10s+)**: Complex JS-heavy pages take longer. Use the `timeout` parameter.
- **Empty search results**: Try different query terms. Some niche queries may return fewer results.

