x402 Ecosystem Discovery
Aggregated discovery for the x402 ecosystem. AgentBIT continuously scans the public Coinbase Bazaar, the Agent402 index and the Agentic Market API, deduplicates resources by URL and enriches them with historical usage metrics (settled calls, unique buyers, USD volume) and per-source freshness. One symbolic-price call replaces querying three registries. Filters: category, network (CAIP-2), source, max_price; sorting by price, volume, calls or recency. The same search is free over plain HTTP at /api/discover — this x402 endpoint exists so payment-native agents can use it in-band and discover it in the Bazaar itself.
$0.001
USDC per call · x402
Endpoint
POST /v1/x402/discover
MCP name
agentbit.discover
Status
active
Latency / uptime (7d)
295 ms · 100%
Call with x402
1. Send the request. 2. Receive 402 with accepts[]. 3. Sign the payment and retry with the X-PAYMENT header.
curl -X POST https://agentbit.app/v1/x402/discover \
-H 'Content-Type: application/json' \
-d '{"query":"web search","sort":"volume","limit":5}'
Input schema
{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "What you are looking for (matched against name, description, URL)"
},
"category": {
"type": "string"
},
"network": {
"type": "string",
"description": "CAIP-2, e.g. eip155:8453"
},
"source": {
"type": "string",
"enum": [
"bazaar",
"agent402",
"agentic_market"
]
},
"max_price": {
"type": "number",
"description": "Maximum price in USDC"
},
"sort": {
"type": "string",
"enum": [
"price",
"volume",
"calls",
"recency"
]
},
"limit": {
"type": "integer",
"description": "Max results (default 25, max 100)"
}
},
"required": [
"query"
]
}Output schema
{
"type": "object",
"properties": {
"total": {
"type": "integer"
},
"items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string"
},
"description": {
"type": "string"
},
"resource": {
"type": "string"
},
"seller": {
"type": "string"
},
"source": {
"type": "string"
},
"price": {
"type": "number"
},
"network": {
"type": "string"
},
"metrics": {
"type": "object"
}
}
}
},
"sources": {
"type": "array",
"items": {
"type": "string"
}
},
"freshness": {
"type": "object"
}
}
}Code examples
// JavaScript (x402-fetch)
import { wrapFetchWithPayment } from "x402-fetch";
const fetchWithPay = wrapFetchWithPayment(fetch, wallet);
const r = await fetchWithPay("https://agentbit.app/v1/x402/discover", {
method: "POST",
headers: {"Content-Type": "application/json"},
body: JSON.stringify({"query":"web search","sort":"volume","limit":5})
});
console.log(await r.json());
# Python (x402 client)
from x402.clients.requests import x402_requests
s = x402_requests(account)
r = s.post("https://agentbit.app/v1/x402/discover",
json={"query":"web search","sort":"volume","limit":5})
print(r.json())
// PHP
$r = Http::withHeaders(['X-PAYMENT' => $signedPayment])
->post('https://agentbit.app/v1/x402/discover',
array (
'query' => 'web search',
'sort' => 'volume',
'limit' => 5,
));
$data = $r->json();