The wire format
Bazaar listings come back from the public API as JSON. Each entry has roughly fifteen fields. The ones that matter for discovery are name, description, category, tags, inputSchema, outputSchema, pricePerCall, network, provider, and stats. The rest are timestamps and routing metadata.
Point an LLM at the catalog and you'll find it overweights description and name for relevance scoring. Crawlers index tags as filter chips, not ranking signals. Category is a hard partition, so picking the wrong one is the difference between showing up in a results page and being invisible.
What goes where
name is the headline. Keep it under 60 characters or it gets truncated on the directory grid. We use satellite-tile instead of "Satellite Imagery Tile Endpoint" because the latter renders as "Satellite Imagery..." in cards.
description is the only free-text field that gets full-text-indexed. Two hundred characters of prose. Be concrete. Spell out what the inputs look like, what the response shape is, and add one real call site. "Returns 256x256 PNG satellite tiles for any lat/lon at zoom 0-18" beats "High-quality satellite imagery for agents and developers" every time. The crawler reads both. The first one matches more queries.
tags are filter chips. Four is the sweet spot. More than six and the listing looks spammy; fewer than three and you don't surface on filtered views. Use the canonical x402 tag vocabulary (geo, data, verification, ai, compute, and friends) rather than inventing new ones. Custom tags don't fail, but they also don't earn you traffic.
inputSchema and outputSchema are JSON Schema. The Bazaar's discovery UI renders these inline. Agents that auto-route by capability look at the schemas, not the description. So if you say "returns coordinates" in your description but outputSchema returns {"address": "string"}, the agent skips you. The schema wins. Always.
The volume signal
Here's the part that gets argued about. The Bazaar ranks within a category by payment volume over a rolling 7-day window, with recency and unique payer count as secondary factors. Volume dominates.
A listing with 200 paid calls in seven days outranks one with two calls, even if the higher-volume entry is technically newer. We've watched this happen in real time on the geo and verification categories. New endpoints sit at rank 14 for a week, then jump to rank 3 the day after smoke tests push them past 50 paid calls.
So smoke tests aren't just smoke tests. They're a rank lift. We run them in paid mode against our own endpoints. The facilitator fee is around half a cent on a 1 cent call. The endpoint gets the revenue. Net cost on a 100-call smoke pass is roughly fifty cents.
The policy question
Is this gaming? Yes and no. The calls are real. The smoke test exercises real code paths and validates real responses. But the agents running those calls are operated by the same entity that operates the endpoint. If half the listings on the Bazaar are doing this, the volume signal degrades into noise.
Coinbase will probably split the signal eventually. Volume where provider == payer reads differently from organic volume. Expect a separate self-traffic-adjusted rank within twelve months. Plan for it. Don't build a portfolio that only ranks because of your own smoke tests, because the rule will change.
The honest play: make the description and schemas good enough that organic agents call the endpoint anyway, and treat smoke volume as a launch boost rather than a permanent crutch. Rank you can't survive without is rank you don't really have.