Pay-per-call MCP server. $0.01 USDC extracts schema.org/Product JSON from any URL via x402.
Config is the same across clients — only the file and path differ.
{
"mcpServers": {
"x402-extract": {
"env": {
"BUYER_PRIVATE_KEY": "0xYOUR_PRIVATE_KEY"
},
"args": [
"-y",
"x402-extract-mcp"
],
"command": "npx"
}
}
}Are you the author?
Add this badge to your README to show your security score and help users find safe servers.
A paid MCP server that gives AI agents structured product data from any URL.
No automated test available for this server. Check the GitHub README for setup instructions.
Five weighted categories — click any category to see the underlying evidence.
No known CVEs.
No package registry to scan.
Click any tool to inspect its schema.
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 other
Pi Coding Agent extension (CLI-first) — routes bash/read/grep/find/ls through lean-ctx CLI for strong token savings. Optional MCP bridge can register advanced tools.
Compress tool outputs, logs, files, and RAG chunks before they reach the LLM. 60-95% fewer tokens, same answers. Library, proxy, MCP server.
97% token reduction for AI coding sessions — zero deps, 21 languages, MCP server
Autonomous spec-to-product coding-agent CLI with an MCP server exposing 34 tools over stdio.
MCP Security Weekly
Get CVE alerts and security updates for io.github.UltraStarz/x402-extract and similar servers.
Start a conversation
Ask a question, share a tip, or report an issue.
Sign in to join the discussion.
A paid MCP server that gives AI agents structured product data from any URL.
Each extract_product tool call:
schema.org/Product JSON blob (name, price, currency, availability, variants, …)No API keys. No subscription. The agent pays the toll, gets the data.
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.
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.
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.
{
"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 }
}
| 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.
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.
Works well:
Will return a fetch error (page status 403/429/no-content):