npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

x402-extract-mcp

v0.1.2

Published

MCP server for paid web-extraction. Agents pay $0.01 USDC per call to extract structured Product schema from any URL.

Readme

x402-extract-mcp

A paid MCP server that gives AI agents structured product data from any URL.

Each extract_product tool call:

  1. Renders the URL through a headless browser
  2. Extracts a schema.org/Product JSON blob (name, price, currency, availability, variants, …)
  3. Costs $0.01 USDC per call, paid automatically from the configured wallet via x402

No API keys. No subscription. The agent pays the toll, gets the data.

Install in Claude Desktop / Cursor / Windsurf

Add this to your MCP config (~/Library/Application Support/Claude/claude_desktop_config.json on macOS):

{
  "mcpServers": {
    "x402-extract": {
      "command": "npx",
      "args": ["-y", "x402-extract-mcp"],
      "env": {
        "BUYER_PRIVATE_KEY": "0xYOUR_PRIVATE_KEY"
      }
    }
  }
}

Restart your MCP client. You'll see an extract_product tool available.

What you need

A wallet on Base Sepolia (testnet) funded with:

Generate a throwaway key:

node -e "const {generatePrivateKey,privateKeyToAccount}=require('viem/accounts');const k=generatePrivateKey();console.log('PRIVATE_KEY=',k);console.log('ADDRESS=',privateKeyToAccount(k).address)"

Use the printed address to claim from faucets, then put the printed key into your MCP config.

Try it

In Claude Desktop, paste a product URL and ask:

Extract this product page using extract_product: https://stormkeep-odl.bandcamp.com/album/the-nocturnes-of-iswylm-2

You'll get back structured JSON with the product name, price, formats, availability, etc. The on-chain transfer is visible at https://sepolia.basescan.org.

What the response looks like

{
  "product": {
    "name": "The Nocturnes Of Iswylm",
    "description": "...",
    "brand": "Stormkeep",
    "price": 10,
    "currency": "USD",
    "availability": "preorder",
    "variants": [
      { "name": "Format", "values": ["Digital Album", "12\" Vinyl (black)", ...] },
      { "name": "Vinyl Color", "values": ["Black", "Violet", ...] }
    ],
    "images": [],
    "url": "https://..."
  },
  "page": { "title": "...", "status": 200, "render_ms": 2879 },
  "extraction": { "model": "claude-haiku-4-5", "input_tokens": 4479, "output_tokens": 405 }
}

Configuration

| Env var | Required | Default | | ------------------- | -------- | --------------------------------------------------------- | | BUYER_PRIVATE_KEY | yes | — | | EXTRACT_URL | no | https://x402-extract-production.up.railway.app/extract |

To point the MCP server at your own seller deployment, override EXTRACT_URL.

How it works

Claude Desktop ──tool call──> MCP server (this package, on your machine)
                              │
                              │ x402 payment + URL
                              ▼
                              Public seller (Hono + Playwright + Claude on Railway)
                              │
                              │ structured JSON
                              ▼
                              MCP server ──tool result──> Claude Desktop

The MCP server doesn't render pages itself. It signs an x402 payment with the buyer's wallet, sends the payment + URL to a public seller endpoint, and returns the seller's response. The seller does the actual headless rendering and Claude-driven schema extraction.

What works, what doesn't

Works well:

  • Bandcamp release pages
  • Most small/medium Shopify stores
  • Tesla Shop product pages
  • Any site that doesn't have aggressive anti-bot

Will return a fetch error (page status 403/429/no-content):

  • Amazon, Walmart, Target, Best Buy
  • Most luxury brand sites on Cloudflare
  • LinkedIn, Twitter/X (auth wall)

A future version will add residential-proxy support to handle these.

License

MIT