Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
39 changes: 39 additions & 0 deletions data/merchants.json
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down Expand Up @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand Down Expand Up @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand Down Expand Up @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand All @@ -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",
Expand Down
36 changes: 35 additions & 1 deletion src/components/merchant-card.tsx
Original file line number Diff line number Diff line change
@@ -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,
Expand Down Expand Up @@ -45,6 +51,34 @@ export function MerchantCard({ merchant }: { merchant: Merchant }) {
</div>
</div>
<CardDescription>{merchant.description}</CardDescription>
{(merchant.website || merchant.apiDocs) && (
<div className="flex items-center gap-2 pt-1">
{merchant.website && (
<a
href={merchant.website}
target="_blank"
rel="noopener noreferrer"
aria-label={`${merchant.name} website`}
onClick={(e) => e.stopPropagation()}
className="text-muted-foreground hover:text-foreground transition-colors"
>
<Globe className="size-4" />
</a>
)}
{merchant.apiDocs && (
<a
href={merchant.apiDocs}
target="_blank"
rel="noopener noreferrer"
aria-label={`${merchant.name} API documentation`}
onClick={(e) => e.stopPropagation()}
className="text-muted-foreground hover:text-foreground transition-colors"
>
<BookOpen className="size-4" />
</a>
)}
</div>
)}
</CardHeader>
<CardContent className="mt-auto flex flex-col gap-3">
<div className="flex flex-wrap gap-1.5">
Expand Down
2 changes: 2 additions & 0 deletions src/lib/mcp/tools/x402-browse-directory.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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 });
Expand Down
2 changes: 2 additions & 0 deletions src/lib/merchants/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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<typeof MerchantEntrySchema>;
Expand Down
Loading