Connection
URL: https://api.x402dash.com/mcp
Transport: streamable-http
Protocol: MCP 2025-03-26
Add to your MCP client configuration:
{
"mcpServers": {
"x402dash": {
"url": "https://api.x402dash.com/mcp"
}
}
}
This page is designed for AI agents and LLM-powered systems. It contains everything
needed to discover, query, and pay for x402 endpoint intelligence programmatically.
Machine-readable discovery: GET /.well-known/x402 and /llms.txt.
MCP server: https://api.x402dash.com/mcp
AI agents can connect natively via MCP to search and evaluate x402 endpoints — no HTTP calls needed. Works with Claude, ChatGPT, Gemini, and any MCP-compatible client.
URL: https://api.x402dash.com/mcp
Transport: streamable-http
Protocol: MCP 2025-03-26
Add to your MCP client configuration:
{
"mcpServers": {
"x402dash": {
"url": "https://api.x402dash.com/mcp"
}
}
}
search_endpoints(query, limit) — FTS5 search + liveness rankingfind_best_endpoint(task) — agent routing: best + fallbacksget_endpoint_detail(endpoint) — full record with AI enrichmentget_endpoint_history(endpoint, limit) — liveness time-serieslist_categories() — all categories with countslist_providers(limit) — top providers + aggregate statsget_ecosystem_stats() — totals, top endpoints, last crawlcheck_health() — service statusx402dash is a liveness monitoring and discovery index for the x402 payment protocol ecosystem.
It tracks all x402 endpoints registered in the Coinbase CDP Bazaar, checks their availability every 30 minutes, computes a liveness score (0–100), and enriches metadata with AI classification and tags.
An AI agent that needs to call external APIs (data feeds, DeFi, oracles, AI services) can use /v1/search to discover which x402 endpoints are currently alive, what they cost, and whether they are ready to call — before spending USDC on the wrong endpoint.
https://api.x402dash.com primary
https://api.x402market.shop fallback
HTTPS only. All responses are JSON. CORS open. No API key required for free endpoints.
GET https://api.x402dash.com/.well-known/x402
Returns the x402 protocol manifest: paid endpoints, accepted asset (USDC on Base), prices, and payTo address. Always check this first — prices may change.
GET https://x402dash.com/llms.txt
Structured Markdown summary of the service for LLM context injection. Lists all API endpoints with signatures, payment model, and agent-ready query examples.
GET https://api.x402dash.com/v1/ecosystem
Live aggregate: total endpoints indexed, average liveness score, readiness breakdown (ready_now / needs_payload / not_ready), last crawl time.
POST /v1/register — submit a URL, we verify it returns HTTP 402 with a valid x402 spec, then index it with reliability scoring and AI enrichment. 5 req/hour, free, no auth.
curl -X POST https://api.x402dash.com/v1/register \
-H "Content-Type: application/json" \
-d '{"url": "https://your-api.com/endpoint"}'
Submit via web form →
GET /v1/ecosystem
→ aggregate totals, top 10 endpoints, last crawl
Live aggregate: total endpoints indexed, average liveness score, readiness breakdown, top endpoints. 10 req/min.
GET /v1/categories
→ { "items": [{ "category": "DeFi/Crypto", "count": 4200 }, ...] }
Get all category names and endpoint counts. Use these values as the category filter in search. 60 req/min.
GET /v1/health
→ { "status": "ok", "latest_run": {...} }
Confirms the service is operational and shows the most recent crawl run metadata. 60 req/min.
GET /v1/liveness?endpoint=<id-or-url>
→ full record with accepts[], ai_description,
ai_tags, L1-L3 scores, on-chain data, price_usd
Full record for one endpoint. Includes on-chain activity data (transaction counts, unique payers) and payment spec. Use this to evaluate an endpoint before calling it. 1 req/min.
GET /.well-known/x402
→ x402 payment manifest with prices and payTo
Machine-readable list of payment-gated endpoints, accepted assets, and current pricing. 60 req/min.
POST /v1/register
→ { "url": "https://your-api.com/endpoint" }
Self-register an x402 endpoint. Must return HTTP 402 with valid x402 spec. Optional fields: name, description, category, tags, contact. 5 req/hour.
GET /v1/endpoints
?limit=50 &offset=0
&q=oracle
&category=DeFi%2FCrypto
&provider=example.com
→ { "items": [...], "total": 312 }
Paginated listing. Includes liveness_score, integration_readiness, ai_category, ai_tags, avg_latency_ms. 10 req/min.
GET /v1/providers
?limit=50 &q=hostname
→ { "items": [{ "provider": "api.example.com",
"endpoint_count": 5, "avg_score": 82.3,
"categories": ["DeFi/Crypto"] }] }
Groups endpoints by host. Useful for evaluating a provider's overall reliability before querying individual endpoints. 10 req/min.
GET /v1/search
?q=defi+oracle (required)
&limit=20 (max 100)
&offset=0
&category=DeFi%2FCrypto
&min_score=50.0
&integration_readiness=ready_now
&network=eip155%3A8453
&max_price_usd=0.01
→ { "items": [...], "total": 47, "filters": {...} }
FTS5/BM25 ranked search. Each result includes accepts[] inline — payment spec for that endpoint — so no second call is needed. AI-enriched descriptions when available.
Agent-optimized filters:
integration_readiness=ready_now to exclude unreliable endpoints,
network=eip155:8453 for Base-only,
max_price_usd=0.01 to stay within budget.
GET /v1/history
?endpoint=<id-or-url> (required)
&limit=100 (max 500)
→ { "items": [{ "timestamp": "...",
"alive": true, "latency_ms": 234,
"http_status": 200, "error": null }],
"endpoint_id": "..." }
Complete check history in chronological order. Use to assess reliability trends before committing to an endpoint.
GET /v1/route
?task=defi+oracle (required)
&budget=0.01 (max price per call)
&network=eip155%3A8453
&min_score=50 (default 50)
&readiness=ready_now (default ready_now)
&limit=3 (1–10, default 3)
→ { "primary": {..., "route_score": 78.5,
"accepts": [...]},
"fallbacks": [...],
"confidence": "high",
"candidates_evaluated": 47 }
Decision endpoint. Describe your task and constraints — get the best endpoint plus fallbacks, ranked by composite score (liveness 50%, latency 20%, on-chain activity 15%, price efficiency 15%). Each result includes accepts[] so your agent can call the endpoint immediately.
GET /v1/agent-search
?q=I+need+a+crypto+price+feed+on+Base
&limit=10 (max 50)
&min_score=50
&integration_readiness=ready_now
&network=eip155%3A8453
&max_price_usd=0.01
→ { "items": [...], "count": 8,
"search_method": "vector",
"query": "I need a crypto price feed on Base" }
Natural language search. Describe what you need in plain English — the system matches via embeddings (vector), LLM-expanded keywords, or direct FTS5 as fallback. Best for agents that don't know exact endpoint names. Each result includes accepts[].
Composite reliability score: L1 response rate (47%), L2 metadata completeness (29%), L3 stability over time (24%). Use min_score=60 to filter for high-quality endpoints.
ready_now — endpoint is alive and callable with a minimal request.
needs_payload — alive but requires a specific request body.
not_ready — unreliable or dead.
Use ready_now in search to only surface immediately callable endpoints.
Payment spec for the indexed endpoint itself — not for x402dash. Contains network, payTo, asset, maxAmountRequired. Populated from the endpoint's x402 metadata.
LLM-assigned description and keyword tags (updated hourly). More accurate than raw metadata. Factored into FTS index for better search relevance.
onchain_tx_count_7d / onchain_tx_count_30d — USDC transfers to the endpoint's pay_to address. onchain_unique_payers_30d shows distinct wallets. Use these as market signals — endpoints with real payment activity are more likely to be production-grade.
The cost to call the indexed endpoint (not x402dash). Use max_price_usd in search to stay within agent budget constraints.
high ≥20 checks, medium ≥5 checks, low <5 checks. Newer endpoints have low confidence — factor this into decision logic.
Paid endpoints use the x402 protocol. No API key. No account. Payment settles on Base mainnet in USDC.
GET https://api.x402dash.com/.well-known/x402services[].payment.payTo, .asset, .maxAmountRequired, .network.X-Payment-Required: <base64(JSON payment spec)>TransferWithAuthorization (EIP-3009) for the exact maxAmountRequired to payTo.X-Payment: <base64(signed payload)>Network: eip155:8453 (Base mainnet)
USDC: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
payTo: 0x8c751d62141c9DF97292815B7ba5F1cAdEBBCE32
/v1/endpoints: FREE (rate limited 10 req/min)
/v1/providers: FREE (rate limited 10 req/min)
/v1/search: maxAmountRequired "2000" ($0.002)
/v1/history: maxAmountRequired "3000" ($0.003)
/v1/route: maxAmountRequired "5000" ($0.005)
/v1/agent-search: maxAmountRequired "4000" ($0.004)
USDC decimals: 6
The x402 protocol is open. Reference implementations and facilitator docs: x402.org. CDP-compatible wallets support EIP-3009 signing natively.
The x402 Python SDK and TypeScript SDK both support automatic payment retry when a 402 is received.
GET /v1/search
?q=defi+price+oracle
&integration_readiness=ready_now
&network=eip155%3A8453
&max_price_usd=0.005
&min_score=50
&limit=5
+ X-Payment: <signed $0.002 USDC>
→ Pick item[0], read accepts[0].payTo
and maxAmountRequired to call it.
# Free: check current liveness
GET /v1/liveness?endpoint=<id>
→ liveness_score, integration_readiness
# Paid: check history if score borderline
GET /v1/history?endpoint=<id>&limit=50
+ X-Payment: <signed $0.003 USDC>
→ count alive/total, check error patterns
GET /v1/search
?q=AI+inference+model
&integration_readiness=ready_now
&min_score=40
+ X-Payment: <signed $0.002 USDC>
# Browse by category (free, 10 req/min):
GET /v1/endpoints
?category=AI%20%2F%20Compute
&limit=50
# One call: describe task → get best endpoint
GET /v1/route
?task=defi+price+oracle
&budget=0.01
&network=eip155%3A8453
&min_score=60
&limit=3
+ X-Payment: <signed $0.005 USDC>
→ primary.accepts[0].payTo = target
primary.route_score = 78.5
2 fallbacks if primary fails
# Fast path (1 call):
GET /v1/route?task=... → best match (paid $0.005)
→ Call primary using its accepts[] spec
# Detailed path (multi-step):
1. GET /v1/ecosystem → overview (free)
2. GET /v1/categories → category names (free)
3. GET /v1/search?q=... → search (paid $0.002)
4. GET /v1/liveness?endpoint=... → detail (free)
5. Call the endpoint using its accepts[] spec
All endpoints are probed every 30 minutes. Liveness data is never more than 30 minutes old. Last crawl time is available in /v1/ecosystem.latest_run and /v1/health.latest_run.
Descriptions and tags are enriched by LLM every hour for endpoints without AI data (50 endpoints per run). Fields: ai_description, ai_category, ai_tags, ai_enriched_at.
Endpoints are sourced from the Coinbase CDP Bazaar (public registry). Data reflects publicly listed x402 endpoints only. No private APIs are indexed.
x402 payments settle on-chain. Each paid request is a separate transaction. The service never pre-authorizes or batches charges. If a query returns 402 with no data, no USDC was spent.
Per-endpoint limits: /v1/ecosystem 10 req/min, /v1/liveness 1 req/min, others 60 req/min. HTTP 429 + Retry-After on violation.
60 requests/minute per IP. Full production throughput for paying agents. Payment is enforced independently of rate limits.
IPs generating >500 requests in 10 minutes or >2000/hour may be automatically suspended. See Terms/AUP for full policy.
Install pip install x402 httpx eth-account. Your wallet needs USDC + ETH on Base.
import base64, json, httpx
from eth_account import Account
from x402 import x402ClientSync, parse_payment_required
from x402.mechanisms.evm.exact.register import register_exact_evm_client
account = Account.from_key("0xYOUR_PRIVATE_KEY")
client = x402ClientSync()
register_exact_evm_client(client, account, networks="eip155:8453")
API = "https://api.x402dash.com"
# Step 1: Call endpoint → get 402
resp = httpx.get(f"{API}/v1/route",
params={"task": "defi oracle", "limit": "3"})
# Step 2: Sign payment with x402 SDK
payment = client.create_payment_payload(
parse_payment_required(resp.json()))
header = base64.b64encode(json.dumps(
payment.model_dump(by_alias=True, exclude_none=True)
).encode()).decode()
# Step 3: Retry with payment → get results
data = httpx.get(f"{API}/v1/route",
params={"task": "defi oracle", "limit": "3"},
headers={"X-Payment": header}).json()
best = data["primary"]
print(f"Use: {best['url']} (score: {best['route_score']})")
for fb in data["fallbacks"]:
print(f"Fallback: {fb['url']}")
See Developer API guide for full reference and JavaScript examples.