{"name":"PayAPI Market agent discovery","description":"Read-only JSON view of the live marketplace catalogue. Every response is derived from the listings database at request time, so newly-live listings appear automatically.","version":"1.0.0","notes":["Only listings with status=live are ever returned.","search and list default to verified_only=true (settlement-verified listings only). Pass verified_only=false to include live-but-unverified listings.","get returns a named listing regardless of verification, and reports payment_verified honestly.","Prices are USDC per request.","network is the free-text value stored on the listing, kept for compatibility (a small number of rows say \"Base\", the rest \"base\"; compare case-insensitively). network_id is the CAIP-2 id of the listing's primary rail. networks lists every rail the listing advertises in its live 402, each with advertised and settlement_verified, so a listing that accepts USDC on both Base and Solana shows both. Filter with network=base, network=solana or a CAIP-2 id on /agent/search, /agent/list and the MCP tools; an unknown value returns HTTP 400.","payment_verified is listing level and means AT LEAST ONE route was verified, on at least one rail: we paid that route from our own wallet and got real product back, with the settlement recorded on-chain. It says nothing about the other routes. verified_routes lists each route we paid (route, method, amount_usdc, tx_hash, network, verified_at, receipt_url) and verified_route_count counts them; compare it with endpoints_count. Both are null if per-route data could not be read, which is not the same as none verified. networks[].settlement_verified says which rail the evidence is on.","This discovery API is read-only and never settles a payment. To actually call a listed API, read its base_url from get, request it unpaid to receive the x402 402 challenge, then pay per that challenge.","MCP: there are two servers and they are different. https://payapi.market/mcp is the marketplace catalogue server, a free stateless streamable-HTTP wrapper over these same routes exposing search_apis, list_apis and get_api; every method on it is free and it never returns a 402. The SSE endpoint advertised as `mcp` in /.well-known/x402 is a first-party server exposing the UK property tools only, and its tools/call is paid. Manifest: https://payapi.market/.well-known/mcp.json","mcp_endpoint on a listing row is provider-supplied and unverified. We do not probe it, so treat a non-null value as a claim rather than a guarantee."],"endpoints":[{"route":"GET /agent/search","purpose":"search_apis(query, verified_only=true)","params":{"q":"required, free text","network":"optional, base | solana | a CAIP-2 id","verified_only":"optional, default true","limit":"optional, 1-100, default 20"},"example":"https://payapi.market/agent/search?q=property"},{"route":"GET /agent/list","purpose":"list_apis(category=null, verified_only=true)","params":{"category":"optional, omit for all","network":"optional, base | solana | a CAIP-2 id","verified_only":"optional, default true","limit":"optional, 1-500, default 100","offset":"optional, skip this many matches","cursor":"optional, next_cursor from the previous page"},"note":"Pages with limit (max 500) plus offset or cursor. When offset or cursor is passed the response adds offset, limit, next_cursor, next_offset and has_more, and a Link rel=\"next\" header; follow next_cursor until it is null.","example":"https://payapi.market/agent/list?category=Finance"},{"route":"GET /agent/get","purpose":"get_api(id_or_slug)","params":{"id":"required, listing uuid or marketplace slug"},"example":"https://payapi.market/agent/get?id=uk-hmo-licence-api"}],"fields":["id","slug","name","description","category","provider_name","base_url","mcp_endpoint","endpoints_count","price_min","price_max","network","network_id","networks","payment_verified","verified_route_count","verified_routes","status","marketplace_url"]}