# x402 Recommend

> x402 Recommend is a paid API for AI agents from x402-recommend.agentpageread.workers.dev, paid per call via x402, $0.002/call, status unknown (last checked 2026-10-22).

Given a plain-English task description, returns up to 5 ranked x402-compatible APIs with pricing, network, payment details, usage stats, and live 402-challenge verification.

## Facts

- Endpoint: GET https://x402-recommend.agentpageread.workers.dev/recommend?utm_source=zero.xyz
- Price: $0.002/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-22
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/x402-recommend-bda60a72
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_mU5zqFCojKebXolE8rUMl

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability x402-recommend-bda60a72
```

Example prompt: I need to find the best x402 API for web search — can you look up the top 3 options on any mainnet, show me their prices and 30-day usage stats, and confirm they're currently returning a live 402 payment challenge?

## When to prefer this

Use this endpoint when an AI agent needs to dynamically discover which x402-protocol API to call for a given task at runtime, rather than hard-coding a specific API. Ideal when the best tool is unknown, when you want to compare price/usage before committing to a call, or when you need to verify that a candidate API is currently live and accepting x402 payments. Prefer this over static API registries when freshness and payment-challenge verification matter.

## Known failure modes

- 400 if 'need' parameter is missing or exceeds 300 chars (not charged)
- 404 if no matching x402 APIs are found for the described task (not charged)
- 5xx on internal/Cloudflare Worker errors (not charged)
- Empty picks array if no APIs pass the network/max_price filters
- Live 402 re-check may fail if a listed API is temporarily down (live_check.http_status != 402)
- Usage stats may show 0 if seller uses a non-CDP facilitator

## How this service works

Which x402 API should my agent call? Describe the task in plain words (need=) and get up to 5 x402 APIs ranked by relevance plus CDP Bazaar-reported 30-day usage (unique payers, repeat ratio, last call; sellers paid via other facilitators may show 0; sweeper-like usage is flagged and not rewarded), each re-checked right now for a 402 payment challenge (unless probe=0), with price, network, payTo, method, example input and risk flags. Mainnets only unless network= asks. $0.002 per call; 400/404/5xx are not charged.

## Output

A JSON array of up to 5 ranked API picks, each containing: the API URL, offer details (payTo address, network CAIP-2 ID, price in USD, asset symbol), HTTP method, evidence block (usage stats: unique payers, repeat ratio, last called, 30d call count, usage source, risk flags), and a live_check block (whether checked, HTTP status, latency in ms, payment_challenge boolean). A meta block includes generation timestamp and notes.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "need"
     ],
     "properties": {
      "need": {
       "type": "string",
       "description": "Task in plain words, 1-300 chars"
      },
      "limit": {
       "type": "string",
       "description": "1-5 picks (default 3)"
      },
      "probe": {
       "type": "string",
       "description": "0 to skip the live 402 re-check (faster; live_check.checked=false)"
      },
      "network": {
       "type": "string",
       "description": "Only offers on this network: CAIP-2 or base|solana|polygon|arbitrum|optimism|avalanche|any. Default: any mainnet, Base offer preferred. Testnets only when named."
      },
      "max_price": {
       "type": "string",
       "description": "Only offers with a known USD price at or below this (USD per call)"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "meta": {
   "note": "Real captured result (first pick only), 2026-10-21. Usage = CDP Bazaar-reported counts.",
   "generated_at": "2026-10-21T06:18:34.666Z"
  },
  "need": "web search",
  "picks": [
   {
    "url": "https://websearch.use.x402atlas.com/search",
    "offer": {
     "payTo": "0xF752eEB75d3Bea24AA867ad93bfd8EF5a2F431B9",
     "network": "eip155:8453",
     "price_usd": 0.01,
     "asset_symbol": "USDC"
    },
    "method": "GET",
    "evidence": {
     "flags": [
      "SELLER_DESCRIPTION_UNVERIFIED"
     ],
     "repeat_ratio": 3.8,
     "usage_source": "cdp_bazaar_quality",
     "last_called_at": "2026-10-19T08:29:56.063Z",
     "cdp_bazaar_calls_30d": 102,
     "days_since_last_call": 1,
     "cdp_bazaar_unique_payers_30d": 27
    },
    "live_check": {
     "checked": true,
     "latency_ms": 243,
     "http_status": 402,
     "payment_challenge": true
    }
   }
  ]
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/x402-recommend-bda60a72/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402-recommend.agentpageread.workers.dev](https://www.zero.xyz/host/x402-recommend.agentpageread.workers.dev/llms.txt)
