ShopGraph
Structured product data from the open web — where platform APIs don't reach. Schema.org + AI extraction. Pay per call via Stripe MPP.
@laundromatic/shopgraph
Structured product data from the open web, where platform APIs don't reach. Schema.org + AI extraction. Pay per call via Stripe MPP.
Website: https://shopgraph.dev | MCP Endpoint: https://shopgraph.dev/mcp
What it does
Agents connect via Model Context Protocol and call enrichment tools to extract structured product data from URLs. Requests are payment-gated via Stripe: unauthenticated calls receive a 402 challenge, authenticated calls with a payment_method_id are processed and billed.
Architecture
Agent → MCP (streamable-http) → enrich_product / enrich_basic
→ Cache hit? Return immediately (free)
→ No payment_method_id? Return 402 + MPP challenge
→ Payment confirmed → schema.org extraction (fast, 0.95 confidence)
→ No structured data? → Gemini LLM fallback (0.7+ confidence)
→ Bot-blocked or JS-rendered? → Playwright browser fallback
→ Return ProductData + PaymentReceipt
Setup
npm install
Required environment variables in .env:
| Variable | Purpose |
|---|---|
STRIPE_TEST_SECRET_KEY | Stripe test mode secret key |
GOOGLE_API_KEY | Gemini API key for LLM fallback |
Note: Check .env for duplicate key definitions — dotenv uses the last occurrence.
Build & Run
npm run build # Compile TypeScript
npm start # Run MCP server (stdio)
npm run start:http # Run HTTP server (for Vercel/remote)
npm run dev # Run with tsx (no build needed)
Test
npm run test:run # Run all tests once
npm test # Run tests in watch mode
Tools
| Tool | Price | Description |
|---|---|---|
enrich_product | $0.02 | Full product data extraction |
enrich_basic | $0.01 | Basic attributes only (no images) |
Cached results are returned free of charge (24-hour TTL).
MCP Configuration
Add to your MCP client config:
{
"mcpServers": {
"shopgraph": {
"command": "node",
"args": ["/path/to/shopgraph/dist/index.js"]
}
}
}
Related Servers
Bright Data
sponsorDiscover, extract, and interact with the web - one interface powering automated access across the public internet.
Crypto News MCP Server
Fetches the latest cryptocurrency news and converts article content from HTML to Markdown.
MCP NPX Fetch
Fetch and transform web content into various formats like HTML, JSON, Markdown, or Plain Text.
https://prowldata.dev/mcp
Real-world intelligence for AI agents via x402 micropayments. Prediction markets, economics, weather, narrative, and geopolitics.
Steel Puppeteer
Provides browser automation capabilities using Puppeteer and Steel, configurable for local or cloud instances.
Fetcher MCP
Fetch and extract web content using a Playwright headless browser, with support for intelligent extraction and flexible output.
Playlist-MCP
Provides access to the transcripts of any YouTube playlist, configurable via URL.
YouTube Transcript
A zero-setup server to extract transcripts from YouTube videos on any platform.
HTTP Requests
An MCP server for making HTTP requests, enabling LLMs to fetch and process web content.
SnapSender
Capture any website as PNG, JPEG, WebP, or PDF with a single tool call.
transcriptor-mcp
An MCP server (stdio + HTTP/SSE) that fetches video transcripts/subtitles via yt-dlp, with pagination for large responses. Supports YouTube, Twitter/X, Instagram, TikTok, Twitch, Vimeo, Facebook, Bilibili, VK, Dailymotion. Whisper fallback — transcribes audio when subtitles are unavailable (local or OpenAI API). Works with Cursor and other MCP host