Coinbase Bazaar doesn’t have one universal leaderboard. It has a catalog ordered by freshness and a semantic search endpoint that mixes query relevance with service quality.
That distinction matters. An endpoint can appear near the front of GET /discovery/resources because it was recently indexed, yet remain buried when an agent searches for the job it performs.
Our registry now has 799 paid endpoints across 17 clusters, with prices from $0.001 to $0.50 per call. Getting listed isn’t enough at that scale. The endpoint has to match the buyer’s words, and Bazaar needs evidence that people can pay for it successfully.
What Coinbase confirms
Coinbase’s Bazaar documentation names four service-quality signals:
- Distinct buyers that have paid the service
- Successful transaction count
- Time since the service was last used
- Quality and completeness of discovery metadata
Search relevance is calculated separately. Bazaar matches the buyer’s query against indexed text, then blends that match with its quality score. Coinbase doesn’t publish the weights or a per-listing score breakdown.
So call volume moves a listing, but raw HTTP traffic doesn’t. The transactions must settle through the CDP facilitator. Ten paid calls can raise transaction volume and refresh recent activity, while ten calls from one wallet still represent one distinct buyer.
That’s a useful limit. Replaying calls from the same test wallet can prove an endpoint is alive. It can’t imitate broad buyer reach.
Tags get you into the right race
A quality score can’t rescue a bad match.
Our search tests show that specific tags and descriptions give Bazaar better text to retrieve. A listing tagged finance has to compete with a large pool. Tags such as token-risk, wallet-screening, or gas-estimate describe an actual routing decision.
Descriptions need the same precision. Compare these:
Crypto analysis API
Check an EVM wallet address for sanctions exposure and return matched entities with source identifiers
The second version tells a routing model what input it has, what job gets done, and what comes back. It’s much more likely to match a buyer asking for wallet screening than a broad phrase about crypto analysis.
Input schemas matter too. Name each field in the language callers will use. Include an output schema and a realistic response example. An agent shouldn’t have to guess whether address accepts an ENS name or requires a hexadecimal EVM address.
Why we run paid smoke tests
A Bazaar-enabled route enters Coinbase’s index after its first successful settlement. A verification request alone won’t do it.
That’s why every new agentutility endpoint gets a paid smoke test. The call proves that the public URL returns 402, accepts the advertised Base mainnet USDC payment, settles, and produces the promised response. Four checks, one real purchase.
We keep running those tests after release. They catch expired routes and payment regressions, while a successful settlement updates the usage signals Bazaar can observe. Cheap endpoints make this practical. A $0.001 health call costs one-tenth of a cent.
But smoke traffic has a ceiling. We don’t treat repeated calls as a substitute for real buyers. Better tags get an endpoint considered. A clean description helps an agent choose it. Successful customer calls provide the stronger signal.
Query Bazaar the way an agent would
Don’t judge placement from the paginated catalog. Use semantic search with the same task wording a routing model will receive:
curl --get \ 'https://api.cdp.coinbase.com/platform/v2/x402/discovery/search' \ --data-urlencode 'query=check an EVM wallet for sanctions exposure' \ --data-urlencode 'network=eip155:8453' \ --data-urlencode 'asset=usdc' \ --data-urlencode 'maxUsdPrice=0.05' \ --data-urlencode 'limit=10'
Run several buyer-shaped queries. Change the noun, then change the requested output. If the listing appears for its product name but disappears for the job it performs, its metadata is written for insiders instead of agents.
And rerun the search after real paid calls. Bazaar’s catalog cache can take up to ten minutes to reflect new or updated resources, so an immediate miss doesn’t prove the listing failed.