diff --git a/data/merchants.json b/data/merchants.json index abdef4e..01796c7 100644 --- a/data/merchants.json +++ b/data/merchants.json @@ -5,6 +5,8 @@ "description": "Portfolio tracking, token pricing, and DeFi analytics via x402 micropayments.", "category": "service", "chains": ["base"], + "website": "https://zapper.xyz", + "apiDocs": "https://protocol.zapper.xyz/docs/api/", "endpoints": [ { "url": "https://public.zapper.xyz/x402/token-price", @@ -39,6 +41,8 @@ "description": "Smart money netflow data tracking institutional and whale movements.", "category": "service", "chains": ["base", "solana"], + "website": "https://www.nansen.ai", + "apiDocs": "https://docs.nansen.ai/", "endpoints": [ { "url": "https://api.nansen.ai/api/v1/smart-money/netflow", @@ -53,6 +57,8 @@ "description": "Crypto market data API with pay-per-use pricing — token prices and on-chain data for 28M+ tokens.", "category": "service", "chains": ["base", "solana"], + "website": "https://www.coingecko.com", + "apiDocs": "https://docs.coingecko.com/docs/x402", "endpoints": [ { "url": "https://pro-api.coingecko.com/api/v3/x402/simple/price", @@ -72,6 +78,8 @@ "description": "Pay-per-use headless browser sessions for AI agents. No API keys — just pay with USDC on Base and connect.", "category": "service", "chains": ["base"], + "website": "https://www.browserbase.com", + "apiDocs": "https://docs.browserbase.com/integrations/x402/introduction", "endpoints": [ { "url": "https://x402.browserbase.com/browser/session/create", @@ -85,6 +93,8 @@ "description": "Account-free IPFS uploads and retrievals using x402 crypto payments. Pin public or private files with USDC on Base.", "category": "service", "chains": ["base"], + "website": "https://pinata.cloud", + "apiDocs": "https://docs.pinata.cloud/files/x402/intro", "endpoints": [ { "url": "https://402.pinata.cloud/v1/pin/public", @@ -102,6 +112,8 @@ "description": "Farcaster social data API — casts, profiles, channels, and social graph. Pay per request with USDC on Base, no API key needed.", "category": "service", "chains": ["base"], + "website": "https://neynar.com", + "apiDocs": "https://docs.neynar.com/", "endpoints": [ { "url": "https://api.neynar.com/v2/farcaster/feed", @@ -116,6 +128,8 @@ "description": "Pay-as-you-go AI gateway providing 30+ LLMs (OpenAI, Anthropic, Google, DeepSeek, xAI) via x402. No API keys — wallet is your auth.", "category": "service", "chains": ["base"], + "website": "https://blockrun.ai", + "apiDocs": "https://blockrun.ai/docs", "endpoints": [ { "url": "https://blockrun.ai/api/v1/chat/completions", @@ -130,6 +144,8 @@ "description": "Blockchain data API across 100+ chains — balances, NFTs, transactions, DEX data, pricing, and security. Pay per call with USDC.", "category": "service", "chains": ["base"], + "website": "https://goldrush.dev", + "apiDocs": "https://goldrush.dev/blog/goldrush-x402-blockchain-data-for-agents/", "endpoints": [ { "url": "https://x402.goldrush.dev/v1/x402/endpoints", @@ -172,6 +188,7 @@ "description": "On-chain analytics, DeFi yield discovery, and crypto news aggregation.", "category": "service", "chains": ["base"], + "website": "https://httpay.xyz", "endpoints": [ { "url": "https://httpay.xyz/api/gas-tracker-advanced", @@ -196,6 +213,8 @@ "description": "AI-powered X/Twitter search agent for social media intelligence.", "category": "service", "chains": ["base"], + "website": "https://402box.io", + "apiDocs": "https://402box.io/docs", "endpoints": [ { "url": "https://agents.402box.io/x_searcher", @@ -210,6 +229,8 @@ "description": "Pay-per-request web scraping with automatic proxy rotation, JS rendering, and premium domain handling. No signup, no API keys.", "category": "service", "chains": ["base"], + "website": "https://www.payperscrape.com", + "apiDocs": "https://www.payperscrape.com/how-it-works", "endpoints": [ { "url": "https://www.payperscrape.com/api/scrape", @@ -224,6 +245,7 @@ "description": "Pay-per-request AI gateway with 200+ OpenAI-compatible models, batch USDC payments, and live Uniswap V3 swap quotes.", "category": "service", "chains": ["base"], + "website": "https://gateway.spraay.app", "endpoints": [ { "url": "https://gateway.spraay.app/api/v1/chat/completions", @@ -242,6 +264,8 @@ "description": "AI-powered blockchain analytics via x402 micropayments — on-chain token data, liquidity pools, and AI-generated market analysis powered by Bitquery.", "category": "service", "chains": ["base"], + "website": "https://emc2ai.io", + "apiDocs": "https://emc2ai.io/docs", "endpoints": [ { "url": "https://emc2ai.io/x402/bitquery/latest-pairs", @@ -256,6 +280,8 @@ "description": "Production-grade real-time speech-to-text for AI agents with VAD, noise reduction, hallucination filtering, and 99+ language support.", "category": "service", "chains": ["base"], + "website": "https://www.dtelecom.org", + "apiDocs": "https://docs.dtelecom.org/", "endpoints": [ { "url": "https://x402stt.dtelecom.org/v1/session", @@ -275,6 +301,7 @@ "description": "AI-powered crypto risk intelligence — check any token for rug pulls, honeypots, and scams. 1.1M+ historical scans with LLM forensic analysis.", "category": "service", "chains": ["base", "solana"], + "website": "https://cryptorugmunch.app", "endpoints": [ { "url": "https://cryptorugmunch.app/api/agent/v1/check-risk", @@ -314,6 +341,8 @@ "description": "Bitcoin Ordinals explorer and API — query inscriptions, runes, rare sats, and inscribe content on Bitcoin via x402.", "category": "service", "chains": ["base"], + "website": "https://ordiscan.com", + "apiDocs": "https://ordiscan.com/docs/api", "endpoints": [ { "url": "https://api.ordiscan.com/v1/inscriptions", @@ -340,6 +369,7 @@ "description": "61 pay-per-call APIs for AI agents — 30 LLMs, image generation, code execution, audio transcription, crypto data, and more.", "category": "service", "chains": ["base"], + "website": "https://x402engine.app", "endpoints": [ { "url": "https://x402engine.app/api/image/fast", @@ -365,6 +395,7 @@ "description": "Fetch metadata and content summaries from any web page via x402 micropayment.", "category": "service", "chains": ["base"], + "website": "https://minifetch.com", "endpoints": [ { "url": "https://minifetch.com/api/v1/x402/extract/url-metadata", @@ -378,6 +409,8 @@ "description": "A unified API to fund your account via x402 and tip anyone on the internet.", "category": "service", "chains": ["base"], + "website": "https://grove.city", + "apiDocs": "https://grove.city/docs", "endpoints": [ { "url": "https://api.grove.city/v1/tip", @@ -395,6 +428,7 @@ "description": "Publishing platform for AI agents with per-read micropayments via x402. Agents register, publish, and read paywalled content.", "category": "service", "chains": ["base"], + "website": "https://postera.dev", "endpoints": [ { "url": "https://postera.dev/api/agents/verify", @@ -414,6 +448,8 @@ "description": "AI agents can get prepaid cards and make Venmo/PayPal payments with a single API call. Pay with USDC on Base via x402.", "category": "service", "chains": ["base"], + "website": "https://laso.finance", + "apiDocs": "https://laso.finance/api-reference/introduction", "endpoints": [ { "url": "https://laso.finance/auth", @@ -438,6 +474,8 @@ "description": "High-performance REST API turning complex zero-knowledge proof workflows into a pay-as-you-go service via x402.", "category": "service", "chains": ["base"], + "website": "https://kurier.xyz", + "apiDocs": "https://kurier.xyz/docs", "endpoints": [ { "url": "https://api.kurier.xyz/api/v1/submit-proof", @@ -457,6 +495,7 @@ "description": "Returns any wallet's token holdings including values, prices, and NFTs across Ethereum and Solana.", "category": "service", "chains": ["base", "ethereum", "solana"], + "website": "https://invy.bot", "endpoints": [ { "url": "https://invy.bot/api/holdings", diff --git a/src/components/merchant-card.tsx b/src/components/merchant-card.tsx index 8d5599b..5ac4d35 100644 --- a/src/components/merchant-card.tsx +++ b/src/components/merchant-card.tsx @@ -1,7 +1,13 @@ "use client"; import { useState } from "react"; -import { ChevronDown, ChevronUp, ExternalLink } from "lucide-react"; +import { + ChevronDown, + ChevronUp, + ExternalLink, + Globe, + BookOpen, +} from "lucide-react"; import type { Merchant, Pricing } from "@/lib/merchants/types"; import { Card, @@ -45,6 +51,34 @@ export function MerchantCard({ merchant }: { merchant: Merchant }) { {merchant.description} + {(merchant.website || merchant.apiDocs) && ( +
+ {merchant.website && ( + e.stopPropagation()} + className="text-muted-foreground hover:text-foreground transition-colors" + > + + + )} + {merchant.apiDocs && ( + e.stopPropagation()} + className="text-muted-foreground hover:text-foreground transition-colors" + > + + + )} +
+ )}
diff --git a/src/lib/mcp/tools/x402-browse-directory.ts b/src/lib/mcp/tools/x402-browse-directory.ts index 17bbbe0..dd2abe8 100644 --- a/src/lib/mcp/tools/x402-browse-directory.ts +++ b/src/lib/mcp/tools/x402-browse-directory.ts @@ -52,6 +52,8 @@ export function registerX402BrowseDirectory( ...(e.pricing && { pricing: e.pricing }), })), source: m.source, + ...(m.website && { website: m.website }), + ...(m.apiDocs && { apiDocs: m.apiDocs }), })); return jsonContent({ count: entries.length, merchants: entries }); diff --git a/src/lib/merchants/types.ts b/src/lib/merchants/types.ts index 20b460f..e59f57e 100644 --- a/src/lib/merchants/types.ts +++ b/src/lib/merchants/types.ts @@ -24,6 +24,8 @@ export const MerchantEntrySchema = z.object({ category: z.enum(["service", "infrastructure", "client", "facilitator"]), chains: z.array(z.string()).min(1), endpoints: z.array(EndpointSchema).min(1), + website: z.url().optional(), + apiDocs: z.url().optional(), }); export type MerchantEntry = z.infer;