# What Agents Buy, in full > Independent reviews of the APIs behind agentic commerce. Every grade below was earned by paying the service with a real wallet, or by calling it where it is free. No service pays to appear. Source: https://whatagentsbuy.com · Written by @crowdturtle (https://x.com/crowdturtle) · JSON: https://whatagentsbuy.com/api/ratings.json ## The market, 24h to 2026-08-09 $39,843 USDC settled across 118,745 payments on Base, swept from chain logs. 1,922 services tracked. 1. mcp.x402.boats (mcp.x402.boats) — $17,456 on 1,645 payments from 25 wallets 2. Bitrefill (api.bitrefill.com) — $13,218 on 141 payments from 123 wallets 3. api.clusterprotocol.ai (api.clusterprotocol.ai) — $4,529 on 3,980 payments from 683 wallets 4. BlockRun.AI (blockrun.ai) — $2,022 on 98,574 payments from 32 wallets 5. x402.dtelecom.org (x402.dtelecom.org) — $1,096 on 537 payments from 24 wallets 6. laso.finance (laso.finance) — $637 on 2 payments from 2 wallets 7. PulseNetwork (pulse.theaslangroupllc.com) — $226 on 86 payments from 8 wallets 8. mcp.x402.boats (mcp.x402.boats) — $140 on 43 payments from 15 wallets 9. x402.clashofcoins.com (x402.clashofcoins.com) — $115 on 12 payments from 1 wallets 10. TrustAgent (trust-agent.io) — $49 on 1 payments from 1 wallets 11. mcp.fortclaw.com (mcp.fortclaw.com) — $45 on 634 payments from 14 wallets 12. CheapTokens AI Inference (cheaptokens.ai) — $34 on 6 payments from 5 wallets 13. x402.twit.sh (x402.twit.sh) — $27 on 4,466 payments from 21 wallets 14. StableEnrich (enrichx402.com) — $25 on 680 payments from 48 wallets 15. Apify (agi.apify.com) — $22 on 16 payments from 5 wallets ## Ratings, best to worst ### pro-api.coinmarketcap.com — A+ on price honesty CoinMarketCap charges $0.01 per call and quotes it on seven chains Quoted $0.01, charged $0.01, goods delivered. https://whatagentsbuy.com/p/cmc-ten-billion - The ten billion was my bug, not their price. Six of the seven payment options are 18-decimal tokens on BNB Chain, and my parser divided everything by a million. A one-cent quote read as $10,000,000,000. - The cent is flat, not per coin. One symbol or twenty, the quote never moves, and twenty came back with full market cap, supply and 90-day change on each. - What I did not expect: a symbol is not a coin. BTC returns 13 assets claiming that ticker, PEPE returns 32. Ask for SOL, take the first result, and you get Solcoin instead of Solana. Query by id or filter on rank. ### stablememes.dev — A on price honesty StableMemes delivers a captioned meme for $0.01, charged as quoted Quoted $0.01, charged $0.01, goods delivered. https://whatagentsbuy.com/p/one-cent-meme - Quoted a cent, charged a cent. My balance moved 7.397111 to 7.387111, exactly as advertised. The API also picked its own template out of the top 2,048; I did not choose Change My Mind. - That is rarer than it should be. stablegiftcards.dev quotes a flat $25.00 whether you ask for a $5 gift card or a $1 phone top-up, and re-probing it today it still wants $500.00 for a malformed body. - Scale check: it takes 77 of these memes to match what the median x402 seller earns in a month. ### api.bitrefill.com — A on price honesty Bitrefill sells 594 real gift cards to agents and charges a fifth of a cent to browse Quoted $0.003, charged $0.003, goods delivered. https://whatagentsbuy.com/p/bitrefill - Browsing is priced like browsing. Search costs $0.002 and returned 594 US products with stock status and categories; a product lookup costs $0.001 and returned Amazon's full denomination ladder, a 4.9 rating from 432 reviews, redemption instructions and the warning that Amazon locks cards on new accounts. Only the final purchase costs real money, which is why 116 payments produced $11,106 yesterday. - The commerce design is the best I have measured here. Prices lock into an invoice before you pay, so a quote cannot drift while an agent thinks. It settles USDC on Base, Arbitrum, Polygon and Solana at the same price, with 300-second quote windows. Redemption codes need a wallet signature from the buyer, so the wallet is the account. - One real flaw, and it costs the plus. Every response ends with a next_step field telling the agent where to go next. After the search it says to POST to /products/detail. That returns 'Cannot POST'. The endpoint is GET. An agent following the API's own instructions hits a dead end on step two, so the A is for price honesty and commerce design, not for machine-readability. ### blockrun.ai — A on price honesty BlockRun charges the same fifth of a cent for a $0.03 model and a $5 model Quoted $0.002, charged $0.002, goods delivered. https://whatagentsbuy.com/p/blockrun-flat-floor - The price is a flat floor that ignores almost everything. I read the live quote for the cheapest model on the menu and for one listed at 167 times the price, and both came back at $0.002. Raising max_tokens from 16 to 8192 did not move it either. Only one model in 91, gpt-5.5-pro, broke the floor, at $0.003048. - Quoted a fifth of a cent, charged a fifth of a cent. The balance moved 7.332102 to 7.330102, exact. I asked for openai/gpt-5.6-sol and the response reported serving gpt-5.6-sol, with the right answer to a question that has only one. Worth stating plainly: the model field is self-reported, so it confirms the claim rather than proving which weights ran. - What the floor means depends entirely on what you ask for. At their own list prices this call cost about $0.001 in tokens, so paying $0.002 is roughly double. The identical call to qwen3.7-flash costs about $0.0000037 in tokens against the same $0.002, which is a markup north of 500 times. Cheap in absolute terms, wildly variable in relative terms. ### pro-api.coinmarketcap.com — B- on symbol resolution CoinMarketCap returns up to 32 assets for one ticker symbol Called without payment. https://whatagentsbuy.com/p/ticker-squatters - PEPE returns 32 assets. BTC returns 13, including Satoshi Pumpomoto and HarryPotterTrumpSonic100Inu. SOL returns 8, and Solana is not first in the list. - MORPHO returns 2, and the impostor has held that ticker since December 2022, two years before the real Morpho existed. Query by the provider's numeric id, or drop anything unranked and priceless, or an agent takes the first row and never notices. - The B- is for symbol resolution, not the service. This is the same endpoint I graded A+ on price honesty: it charges exactly what it quotes. Handing back 32 assets for one ticker is a different failing, and for a buyer that cannot ask a follow-up it is the expensive one. ### blockrun.ai — C on free-tier accuracy BlockRun's free tier is real, but two of its six models are the same model Called without payment. https://whatagentsbuy.com/p/blockrun-free-tier - Two names, one model. Ask for deepseek-v4-flash or step-3.7-flash and the response reports serving nvidia/gpt-oss-120b either way. Neither advertised model is reachable. The response field discloses the swap honestly, so the fault is in the catalog rather than the answer, but an agent picking a model by name from that catalog does not get the model it picked. - On a question with exactly one right answer, two of six got it. The 1997 Nobel Prize in Literature went to Dario Fo, born 1926. Both correct answers came from the same underlying model. mistral-nemotron said Gunter Grass, who won in 1999. nemotron-nano-12b said Jean-Marie Le Clezant, a garbled version of a writer who won in 2008. On 17 x 23 + 44 the same two models answered 437 and 405 instead of 435. - Asked to summarise a paper that does not exist, step-3.7-flash invented the citation: Physical Review Letters, volume 122, article 240401. mistral-nemotron wrote a confident summary of the imaginary findings. Two models correctly said they could not find it. Separately, the free pool runs dry under normal use and the exhaustion message upsells: "Free model capacity exhausted, retry shortly, or use a paid model (from $0.002/request)." ### mcp.fortclaw.com — C on getting in at all FortClaw quotes honestly and then tells you nothing when you get it wrong Quoted $0.03, charged $0.00, goods not delivered. https://whatagentsbuy.com/p/fortclaw-opaque - The pricing is clean, and that is worth saying first. All eight endpoints publish a well formed quote with an amount, an asset, a chain and a destination, from $0.03 to heal a unit up to $999 to nuke one. Where the description names a price it matches the live quote exactly: /start says 9 USDC and quotes $9.00. Compare that to x402.boats, which says 3 USDC and quotes $0.10. - Every failure returns the same sentence, so there is no way to work out what you did wrong. No unit_id, a valid unit_id, a unit_id that cannot exist, and a deliberately garbage payment header all produce: payment required, send the signed payment in the PAYMENT-SIGNATURE header. An agent cannot self-correct from that, because it cannot tell a rejected payment from a request for something it does not own. - The three cent action is not really three cents. /heal wants a unit_id, and units come from /start at $9.00, so the real cost of a first purchase is nine dollars. The schema does declare unit_id as required, which is the part it gets right; what nothing declares is the state you need to already have. Its whole machine-readable guide is 145 characters ending in "visit our website", against 1,775 characters at BlockRun that explain wallets, the payment loop and what is free. An earlier version of this entry graded it F for refusing standard payment; the chain shows standard EIP-3009 payments arriving through the same facilitators that settled our other buys, so that claim was withdrawn before it stood an hour. ### x402datasource.com — C on data accuracy A census API that is accurate in cities and silently wrong in small towns Quoted $0.01, charged $0.01, goods delivered. https://whatagentsbuy.com/p/x402datasource-rural - The billing is flawless and the geocoding is right. Three calls, a cent quoted and a cent charged each time, and every address resolved to the correct coordinates: the Empire State Building came back at 40.748377, -73.984854, which is the building. On price honesty alone this is an A. - It is accurate where the population is dense. Midtown Manhattan returned 1,100,510 people within three miles. Sheridan, Wyoming, a town of 18,737, came back as 18,472, which is within 1.4% of the census figure. For cities and small cities the answer is genuinely good. - Then it collapses without saying so. Lusk, Wyoming has about 1,500 residents. Asked for a three-mile radius around its main street, the API returned a total population of 26, off by roughly 58 times, with the same confident shape and no warning, no error and no confidence field. The pattern fits a block-group centroid join: in a city many small block groups fall inside the circle, and in rural Wyoming one enormous block group has its centre outside it. An agent scoring rural sites or leads would be told nobody lives there. ### api.thetrustlayer.xyz — C on value for money A trust-score API charged me for a lookup that missed, on the address in its own listing Quoted $0.001, charged $0.001, goods delivered. https://whatagentsbuy.com/p/trustlayer-pays-for-a-miss - The example in its own registry listing returns nothing. Its published resource is /agent/base:0x13b1e9b4…3d573f, and that exact call answers 'Agent not found in our index' with a null trust score and zero feedback. Charged $0.001 for the miss. A miss is a legitimate answer, but an unlisted example is a bad first impression and charging for it makes it worse. - The same answer is free from their own endpoint. GET /demo/trust/{agentId} is unpaid, rate-limited, and returns an identical found:false for the identical address, with extra fields the paid call did not include: confidence, sybil_risk, risk_level and a recommended max exposure in dollars. Read the free one first. - The index itself is real and worth knowing about. Their free /stats reports 393,945 agents across 19 chains, 184,020 with a profile and 27,065 with what they call real activity, weighted heavily to BNB Chain at 258,928 and Base at 43,262. That is a substantial dataset. Only three in every forty-three indexed agents show activity, which is its own comment on how many agent identities exist versus how many do anything. ### mcp.x402.boats — D on getting in at all The biggest earner in the agent economy publishes one price and quotes another Quoted $0.10, charged $0.00, goods not delivered. https://whatagentsbuy.com/p/x402-boats - Its own price and its own quote disagree by thirty times, in the same response. The upgrade endpoint's description reads "Flat price: 3 USDC per slot, every type, never ramps" and closes with "Cost: DYNAMIC (3 USDC x slots)". The live challenge shipped alongside it asks $0.10. The description also contradicts itself inside two lines, promising a flat price that never ramps and then calling the cost dynamic. An agent budgeting from the description is wrong by 30x before it sends anything. - Every failure looks identical, so you cannot debug it. Empty body, a valid slot, a nonsense slot, and a deliberately garbage payment header all return the same sentence: payment required, send the signed payment in the PAYMENT-SIGNATURE header. Nothing distinguishes a rejected payment from a malformed request from an action you are not entitled to take. A correction we published rested on reading that string as a refusal; it is not safe to read it as anything. - The cheapest door in is $2.00, and everything cheaper needs a ship you can only get by paying it. /upgrade at $0.10 wants a slot on a ship, /buy wants an island position, and nothing says so anywhere: the whole machine-readable guide is 152 characters ending in "visit our website", against 1,775 at BlockRun. Correction, 2026-08-07: an earlier version graded this F for refusing a standard payment. On-chain the address receives standard EIP-3009 transferWithAuthorization payments through the same facilitators that settled our other buys, so that claim was not supported and has been withdrawn. ### api.x402lint.dev — D on grading accuracy A rival grader failed the busiest service in the market because it never read the header Called without payment. https://whatagentsbuy.com/p/grading-the-grader - It gave BlockRun an F because it only parsed the response body. Three of the eight failures, P2 x402-challenge, P4 payment-required-header and P7 payto-consistency, all say the challenge is missing. It is not. BlockRun's body is a human summary and the machine-readable challenge sits in the payment-required header and WWW-Authenticate: x402Version 2, one accepts[] entry, payTo 0xe9030014. This is the exact bug that produced my own false '56% unpayable' headline in week one, and it is field note number one on this site. - The second F comes from guessing paths instead of reading them. For FortClaw its P2 reads 'no paid route returned a 402 x402 challenge (probed /v1/, /v1, /api/v1/)'. FortClaw's own /.well-known/x402 names its eight routes, and every one of them answers 402 with a valid accepts[] and a payTo, from $0.03 to heal to $999 to nuke. Its own S4 check even lists POST /start, so one half of the scan knew the paths the other half could not find. - It also reports no settlement for BlockRun in 30 days. My sweep of Base USDC Transfer logs has BlockRun at 114,827 payments in the last 24 hours and 504,991 over the tape, third largest seller on the board. A bounded walk of the top 500 sellers missed the third biggest. To be fair to them: most of what they sell is free, the paid tier only buys freshness, and their disclaimer says plainly that a grade is conformance only and not an endorsement. That disclaimer is more honest than the grade it defends. ### api.jarvisclaw.ai — D on getting in at all A listed endpoint that quotes a price and then cannot take the money Quoted $0.0017, charged $0.00, goods not delivered. https://whatagentsbuy.com/p/jarvisclaw-cannot-settle - Pay it and the settlement fails on their side, not yours. Both attempts returned the same line: 'user settlement failed: user -7879544967734078121 has no HD deposit addresses'. Nothing was charged either time and my balance did not move. This is a wallet that was never provisioned, on a seller that is advertising for business. - It leaks an internal user id in the error, which is a small thing but the wrong kind of small thing. A negative 64-bit integer identifying an account inside their system has no business in a response to an anonymous caller. Sellers that fail should fail with a state and a fix, not with their own primary keys. - Everything up to the money is better than most. The quote is well formed, priced at $0.0017, and it is one of only 74 origins in 220 that put accepts[] in the response body as well as the header. It even names its upstream, CoinGecko, in the description. The plumbing is right and the drain is not connected. ## Field notes: what goes wrong when software pays an API ### Most sellers put the price only in a header, not the body Measured across 220 origins on 2026-08-08: all 211 that answered with a parseable challenge put it in the payment-required header, and only 74 also put it in the response body. That means 63% of sellers return a 402 whose body contains no accepts[] at all. A client that parses only the body concludes most of the market is broken. **What to do:** Read all three locations and stop at the first hit: accepts[] in the body, the payment-required header as base64 JSON, and WWW-Authenticate in both the X402 requirements="..." and MPP request="..." forms. Lowercase the header map first, because casing varies by server. Body-less sellers include x402.tavily.com, stableenrich.dev, stableupload.dev, x402.twit.sh and api.loyalspark.online. This is the bug behind this site's own false '56% unpayable' headline, and behind a rival scanner grading BlockRun an F. ### The cheap action is not the cheap price Sellers advertise a three cent action while every cheap action presupposes state you can only buy with an expensive one. FortClaw quotes $0.03 to heal a unit, but units only come from /start at $9.00. x402.boats quotes $0.10 to upgrade a ship you can only get by spending $2.00 first. **What to do:** Before budgeting from the cheapest quote, check whether the endpoint takes an id or a slot that implies prior state. Read the bazaar schema's required fields: a required unit_id or slot means there is an entry fee upstream that nothing in the price advertises. Observed 2026-08-07 across both mcp.fortclaw.com and mcp.x402.boats. In both cases a request without that state returns the same generic 402 as an unpaid request, so the real reason is invisible. ### Check the free endpoint before paying the paid one Sellers increasingly run a free tier that answers the same question as the paid call. TrustLayer's paid /agent/{id} and its free /demo/trust/{id} returned identical found:false for the same address, and the free one carried more fields. x402lint's full scan report is free at /v1/report while the paid call only buys freshness. **What to do:** Read the OpenAPI or llms.txt and list which operations carry a 402 before spending. Where a free and a paid path cover the same resource, call the free one first and pay only if it is stale or thinner. Measured 2026-08-08 and 2026-08-09 on api.thetrustlayer.xyz and api.x402lint.dev. The TrustLayer miss cost $0.001 for information that was free one path over. ### The model you asked for is not always the model that answers A router's catalogue name and the weights that actually run can differ, and nothing in the request will tell you. On BlockRun, two separately listed free models, deepseek-v4-flash and step-3.7-flash, both return responses reporting nvidia/gpt-oss-120b. Neither advertised model is reachable under its own name. **What to do:** Read the model field in the response, not just the one you sent, and compare them. Where a response does not echo a model id, treat the choice as advisory. If which weights ran actually matters to you, ask the model a question whose answer differs between candidates rather than trusting the label. Observed 2026-08-07 across 36 free calls to blockrun.ai/api/v1/chat/completions. To BlockRun's credit the response discloses the substitution; the mismatch is in the catalogue, not the answer. ### A listed service may not accept standard payment A service can publish a valid x402 quote and still refuse a standards-compliant payment, because it expects the signed payment in a header of its own choosing rather than the standard one. **What to do:** Treat a second 402 after paying as a dialect problem, not a failure of your wallet. Read the error text: it usually names the header it wants. Check your funds did not move before retrying. x402.boats, the top service by money received, answers a paid request with 402 and 'send the signed payment in the PAYMENT-SIGNATURE header'. Nothing settles and the balance is untouched. ### Money arriving is not always a sale Rank sellers by USDC landing at their payment address and some of the top entries are not selling anything. A game that returns stakes recycles the same pot; the inflow looks like revenue and is not. **What to do:** Check what leaves the same wallet over the same window. Treat a high send-back rate as a flag to investigate, not a number to subtract: it can equally be cost of goods or a treasury sweep, and deducting it would punish any business with real suppliers. x402.boats, a naval trading game for agents, took $6,897 and paid out $6,948 in the same six hours. Bitrefill sends back about 90% too, but there it is buying the gift cards it sells. ### There is no single catalog of what agents can buy Coinbase and Circle both publish open registries of x402 services, and they overlap by ten hosts. Build discovery on one and your agent cannot see most of the market. **What to do:** Read both. Coinbase indexes broadly and permissionlessly; Circle curates to named providers. Treat either alone as a sample, not a census. Coinbase: 14,668 endpoints across 1,533 hosts. Circle: 943 across 22. Just 44 identical resource URLs in common, measured 2026-08-06. ### The amount is in the asset's own decimals, not dollars USDC uses 6 decimals. Most BNB Chain tokens use 18. Divide every quote by a million and an 18-decimal one-cent charge reads as ten billion dollars. **What to do:** Read the asset address, look up its decimals, then convert. Never assume six. Cost me a nearly-published accusation against CoinMarketCap. 38% of the 27,099 priced payment options in the public registry use an asset that isn't six-decimal USDC. ### One endpoint, several prices A single 402 can offer many payment options across different chains and tokens. Take the first one and you may sign for the wrong asset on the wrong chain. **What to do:** Decode every entry in accepts[] and pick the one matching what your wallet actually holds. 39% of listed resources offer more than one. CoinMarketCap offers seven options across three chains, all worth the same cent. ### The payment challenge hides in three different places It can be in the response body as accepts[], in a payment-required header as base64 JSON, or in WWW-Authenticate, which itself has two formats. Parse only the body and a large share of the market looks broken. **What to do:** Check all three, and lowercase your header keys because casing varies by server. Body-only parsing produced a false headline that 56% of endpoints were unpayable. The real figure was near zero. ### A ticker is not an asset Ask a market data API for BTC and you get 13 assets claiming that ticker. PEPE returns 32. Ask for SOL, take the first result, and you get Solcoin instead of Solana. **What to do:** Query by the provider's numeric id, or filter on rank and drop anything unranked and priceless. 20 tickers returned 115 assets, 56 of them unranked. MORPHO returns 2, and the impostor has squatted the ticker since 2022, two years before the real one existed. ### Call it the way the registry says to call it Send GET to a POST endpoint and you get 405, which looks exactly like a dead listing. **What to do:** Read extensions.bazaar.info.input.method from the catalog entry and use that verb. Retry with the other verb before calling anything dead. 118 endpoints were wrongly marked unreachable in one run for this reason alone. ### A changing payment address is usually fine Some services mint a fresh receiving address per request. Compared against a registry entry it looks like a hijacked endpoint. **What to do:** Probe the same endpoint twice. If the address changes between calls it is routing, not drift. Only a stable address that differs from the registry is worth flagging. Nearly published a false payment-address warning about Tavily, which issues a new address every call. ### Quotes expire, sometimes in 30 seconds maxTimeoutSeconds ranges from 30 to 3600 across the market. An agent that pauses to think, or a human approving a spend, can miss the window. **What to do:** Read the window before you plan around it. 300 seconds is typical, but check. CoinMarketCap gives 30 seconds. Most of the market gives 300. ### Many storefronts, one operator Listings that share a payment wallet are the same business. Count them separately and you multiply both the size of the market and any revenue you attribute. **What to do:** Group services by payment address before counting anything. One wallet sits behind 148 listings, 77 of them subdomains of a single company. Another holds 88, a third holds 55. ### Registry usage counters are not demand The public catalog keeps its own call counts and they are wrong by orders of magnitude, because they only see what passes through their own path. **What to do:** Measure settlement on chain: read transfers to the address the endpoint asks you to pay. The registry credited one seller with 4,201 calls in 30 days. The chain showed 131,803 settlements from that seller in 24 hours. ### Price does not always scale with what you ask for Some endpoints charge a flat fee regardless of payload, which cuts both ways: generous on bulk requests, terrible on small ones. **What to do:** Quote the smallest and largest request you would realistically make and compare before committing. One market data endpoint charges the same cent for one coin or twenty. A gift card endpoint quotes a flat $25.00 whether you want a $5 card or a $1 top-up, and $500.00 for a malformed body. ### Some paywalls sit in front of nothing A service can return a payment demand for a URL that does not exist, because the paywall fires before anything checks whether there is a product behind it. **What to do:** Before trusting a seller, request a random path that cannot exist. If it asks for money, be careful. 50 origins billed for a randomly generated URL. ### A catalog fetch that stops early looks like a complete one Paginate a public registry, hit one network blip, break the loop, and you save a quarter of the market as though it were all of it. **What to do:** Retry each page, record whether the walk finished, and refuse to overwrite a snapshot that shrank sharply against the last one. Two pulls the same day returned 3,100 and 14,668 resources. The smaller one was quoted as fact for hours. ## Reuse Quote freely with attribution to What Agents Buy and the as-of date shown. Figures change daily; re-read rather than cache. Structured versions: https://whatagentsbuy.com/api/ratings.json, https://whatagentsbuy.com/api/leaderboard.json, https://whatagentsbuy.com/api/field-notes.json