Every tool in the catalog has been tested with a real call. The ones that fail are hidden from discovery, not listed with a warning. One balance for all of them, and we add nothing to what a call costs.
npx groats@latest register
Paste that into Claude Code, Cursor or Codex. Your agent registers itself. You are never asked to copy a key.
npx groats@latest register
No browser. Nothing pasted. It can search and inspect all 106 callable tools straight away, and it never sees the 16 we quarantined.
One sign-in with Google or GitHub, about twenty seconds. That releases the $1 free credit.
And the answer says what the provider returned, what we judged it to be, and whether your balance moved.
We found that by paying for the calls ourselves: $0.0770 of the bill was for calls that returned nothing, and none of it was billed to anyone. 637 of 695 endpoints answer a healthy 402, which is all a liveness check can see — which is why a liveness check is not a test. Every figure on this site names how it was measured, and the method is published.
pro-api.coingecko.com/api/v3/x402/onchain/search/pools
48 tools from this host are in the catalog.
x402.ottoai.services/fx-rates
9 tools from this host are in the catalog.
api.nansen.ai/api/v1/tgm/who-bought-sold
7 tools from this host are in the catalog.
agent402.tools/api/perp-funding
3 tools from this host are in the catalog.
agents.allium.so/api/v1/developer/tokens
3 tools from this host are in the catalog.
Nothing here matches.
agent-proxy.alchemy.com/v1/x402/86b0ec6d1d0b3dc0/swap-al…
The listing's own declared parameters are refused by the service. It returned: The input is invalid
api.loyalspark.online/x402-gateway/balance
The listing needs a credential a discovery buyer cannot obtain. It returned: Missing or invalid API key. Use x-api-key header with your lsk_ key.
api.loyalspark.online/x402-gateway/merchant-profile
The listing needs a credential a discovery buyer cannot obtain. It returned: Missing or invalid API key. Use x-api-key header with your lsk_ key.
api.loyalspark.online/x402-gateway/programs
The listing needs a credential a discovery buyer cannot obtain. It returned: Missing or invalid API key. Use x-api-key header with your lsk_ key.
api.loyalspark.online/x402-gateway/recipient-api/balan…
The listing needs a credential a discovery buyer cannot obtain. It returned: Missing or invalid API key. Use x-api-key with your rwk_ key (register via POST /recipient-api/register).
api.loyalspark.online/x402-gateway/recipient-api/redee…
The listing needs a credential a discovery buyer cannot obtain. It returned: Missing or invalid API key. Use x-api-key with your rwk_ key (register via POST /recipient-api/register).
api.loyalspark.online/x402-gateway/recipient-api/rewar…
The listing needs a credential a discovery buyer cannot obtain. It returned: Missing or invalid API key. Use x-api-key with your rwk_ key (register via POST /recipient-api/register).
api.loyalspark.online/x402-gateway/vouchers
The listing needs a credential a discovery buyer cannot obtain. It returned: Missing or invalid API key. Use x-api-key header with your lsk_ key.
api.nansen.ai/api/v1/prediction-market/ohlcv
The listing's own declared parameters are refused by the service. It returned: Required field 'body' is missing
api.nansen.ai/api/v1/tgm/position-intelligence
The listing's own declared parameters are refused by the service. It returned: Required field 'body' is missing
api.x402node.dev/forex/convert/usd/cny/usd-cny
The listing's own declared parameters are refused by the service. It returned: missing or invalid 'amount' query param, e.g. ?amount=100
vaaya.ai/api/run/firecrawl/scrape
The listing's own declared parameters are refused by the service. It returned: upstream 400: {"success":false,"code":"BAD_REQUEST","error":"Bad Request","details":[{"code":"invalid_value","values":["markdown","html","rawHtml","rawBase64","
x402.ottoai.services/portfolio
The listing's own declared parameters are refused by the service. It returned: userId parameter is required (wallet address)
x402.ottoai.services/token-price
The listing's own declared parameters are refused by the service. It returned: missing-param
x402.ottoai.services/token-security
The listing's own declared parameters are refused by the service. It returned: Address parameter is required
x402.tavily.com/search
The provider refused the request it published. It returned: Request failed with status code 400
Nothing hidden matches.
Hidden from discovery, never deleted, and retested at our expense — the moment a retest succeeds, the tool is restored. Each quarantined tool shows the status and the words the provider itself returned for the call we paid for. Every tool on either side was reached with a real paid call in the run of 2026-09-22; that run is one snapshot, so a tool that failed its call here is held out of discovery and kept under retest rather than judged for all time. Tool Health is read from the running record of a tool's calls, never fixed by a single one.
A separate 16 of those paid calls came back correct but empty, and not one of them counted against a tool. A tool that truthfully answers "none" is working, and we say so here rather than on a page nobody opens.
A third list you will not find here: 11 tools we paid to test and then did not list, because the provider's terms have no stated path. We would rather the catalog be smaller than carry a listing the provider never sanctioned, so neither column names one.
MEASURED 2026-09-22 (#101): 133 paid Calls, $1.274702 of real USDC, each one matched to its transfer on Base. Evidence in docs/research/data/absorbed-cost-101-calls.json; judged by src/campaign/judged-outcome.ts, the one rule the census and the receipts read too.
You pay what the provider charges, to the cent. We add nothing to a call. A call we judge a failure never touches your balance.
Added on top, never taken out. Ask for $10.00, pay $10.80, spend $10.00. Minimum top-up is $5.00.
That works out at 11.0% at the $5.00 minimum and 8.0% at the $10.00 the form starts at, falling toward 5% as you top up more without ever reaching a flat 5%.