How an agent finds PayAPI: pay per call API, no API key
Four commands, all real, all runnable right now. Discovery is free and settles nothing. You only spend when you call a provider directly and answer its own payment challenge.
Discovery is free. Agents search the catalogue here. Payment happens on the listing 402, not on PayAPI.
url https://payapi.market/mcp
1. Search the catalogue
Free text over every live listing. Returns settlement-verified listings by default; add verified_only=false to include listed-but-unpaid ones.
curl -sS "https://payapi.market/agent/search?q=property"
2. Read one listing in full
By slug or id. Gives you base_url, price range, network, the verification state, and a reliability object: score (0 to 100 or null), band, and computed_at. The same object is on every search and list result, and on the MCP tools.
curl -sS "https://payapi.market/agent/get?id=uk-hmo-licence-api"
3. Or take the whole machine-readable contract
An OpenAPI 3.1 document generated at request time from the live catalogue. The discovery endpoints are real paths; every listing is a tag carrying its price, network, verification state and a link to its own base_url.
curl -sS https://payapi.market/openapi.json
4. Call the API and pay its challenge
PayAPI Market is not in the payment path. Request the provider base_url unpaid, read the HTTP 402 challenge it returns, and settle it from your own wallet. The provider is paid directly and keeps 100%.
curl -sS -i "https://hmo.payapi.market/v1/licences?postcode=M1+1AE"
One paid call, start to finish
One listing, one route, one receipt on Base. Discovery and the MCP tools cost nothing. The only money that moved was the provider's own 402, paid straight to the provider, who keeps 100%. PayAPI Market is not in the payment path.
1. Paste into Claude or Cursor
Connect to the PayAPI Market MCP at https://payapi.market/mcp
Search verified APIs for text metrics
Open the listing the tool returns
2. Inspect the listing
The tool hands back a slug. Read the whole listing before spending anything.
curl -sS "https://payapi.market/agent/get?id=autocash-text-metrics"
That returns "payment_verified": true, "status": "live", "network": "base", a base_url of https://autocash-text-metrics.benjamindorey.workers.dev, and price_min and price_max both 0.001. The reliability object on it read score 70, band established when this was written, computed on 6 September 2026. Scores decay when no new evidence arrives, so treat that as a snapshot and read the live value from the command above rather than from this page.
3. Call the route the badge covers
Method and path matter. This badge came from POST /v1/metrics at $0.001, not from a bare GET on the origin. The origin does answer a 402 at the same price, but its own challenge describes a service ping, so an agent that pays the origin buys a ping and not metrics. Pay the path you actually want.
curl -sS -i -X POST "https://autocash-text-metrics.benjamindorey.workers.dev/v1/metrics" \
-H "content-type: application/json" \
-d '{"text":"Your text here."}'
Unpaid, that returns HTTP 402 with the challenge in the PAYMENT-REQUIRED header: scheme exact, network eip155:8453, asset 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 (USDC on Base), amount 1000, which is 0.001 USDC at six decimals, and maxTimeoutSeconds 300. Sign it from your own wallet with @x402/fetch (JavaScript) or x402 (Python) and send the request again.
4. What came back
Real deterministic metrics for the exact text we sent, not an empty wrapper: 217 characters, 3 sentences, Flesch reading ease 62.63, Flesch-Kincaid grade 7.67, reading time 0.19 minutes, and a ranked top-word list. We recomputed the character and sentence counts locally from the same input and both agreed.
5. The receipt
0xbde1e46d40e8c817179731bfcc36287100cf246108a9e391a04a4c534892bcb9
Read that honestly: it is PayAPI Market's own verification payment, sent from our wallet on 6 September 2026 to buy one real call and earn the badge. It is not a third-party agent paying this provider, and we are not claiming anyone else's traffic. It is the on-chain evidence behind the payment_verified flag you read in step 2, and the badge it supports covers POST /v1/metrics and nothing else on this listing.
Start here
Eight routes that already answer. Every one is settlement-verified: we paid for a real call from our own wallet and got product back. Open the card, read the price and the route, then pay the provider's own 402 directly.
- Demand Hash — hash a string —
https://payapi.market/api/demand-hash-api - Demand OFAC SDN — screen a name —
https://payapi.market/api/demand-ofac-sdn-api - LLM Token Pricing — price an LLM call —
https://payapi.market/api/llm-token-pricing - HumanMirror Machine Resolve — pick a tool —
https://payapi.market/api/humanmirror-machine-resolve - MCR Verified Demand Gap — market intel —
https://payapi.market/api/mcr-verified-demand-gap - x402 Geocoding API — geocode —
https://payapi.market/api/x402-geocoding-api - AgentPay — gas and fees —
https://payapi.market/api/agentpay - Autocash Text Metrics — text metrics, the worked example above —
https://payapi.market/api/autocash-text-metrics
Or connect over MCP
A stateless server exposing the same three operations as tools: search_apis, list_apis and get_api. Every method is free, including initialize and tools/call. It never returns a 402 and never spends anything: it hands back base_urls and you pay the provider yourself.
{ "mcpServers": { "payapi": { "url": "https://payapi.market/mcp" } } }
Manifest at /.well-known/mcp.json. This is a different server from the first-party property-tools endpoint advertised as mcp in /.well-known/x402, whose tools/call is paid.
Reliability is not a star rating
Nobody rates these APIs, and there are no reviews to game. The reliability score is computed from things that either happened or did not: whether we paid for a route and got product back, how the endpoint has answered health checks since, and whether the wallet in its payment challenge still matches the one on record. Recent evidence counts for more than old evidence, so a score decays if nothing new happens.
Read band rather than the bare number: strong is 80 and above, established is 50 to 79, thin is 26 to 49, caution is 25 and under, and unscored means we have not computed one for that listing yet. Unscored is not a criticism; it usually means the listing is new.
What it is not: a security audit, a promise the API will be up when you call it, or a claim about output quality beyond the one route we paid for. Treat it as one input to your own decision, not a verdict, and check computed_at to see how fresh it is.
What verified means here
A listing is settlement-verified only when PayAPI Market paid for a real call to it from its own wallet and got real product back, with the payment recorded on-chain. It is evidence per listing, not a guarantee per route: a listing with several routes may have had only one paid for. Listings we have not paid for are shown as listed, never described as verified.