{"version":"2026-11-11","human_readable":{"grading":"https://agent-tools.cloud/about#grading","readiness":"https://agent-tools.cloud/about#readiness","statistics":"https://agent-tools.cloud/stats#method"},"probing":{"schedule":"Every listing is probed once a day from one server, starting 21:30 UTC.","refused_probes":"Probes a host refused (HTTP 429, or a 403 that kept us out) are left out of uptime.","history_days":{"x402":90,"mcp":30,"a2a":120}},"quality_score":{"purpose":"Search order and leaderboards.","scale":"0-100, shown as 0-10 with three decimals.","components":{"x402":[{"name":"Availability","max":40,"how":"Endpoint probe: ok 100%, degraded 45%, unknown 22%, down 0."},{"name":"Payability","max":20,"how":"Live HTTP 402 challenge 15, /.well-known/x402 descriptor 5, payment address 5, settlement network 3, price 2; of 30, scaled to 20."},{"name":"Demand","max":40,"how":"30-day USDC receipts at the payTo address read from the chain; distinct payers two thirds, transfer count one third, both on a log scale. Chains without a free indexer leave this blank rather than zero."}],"mcp":[{"name":"Availability","max":25,"how":"ok 25, degraded 10."},{"name":"Conformance","max":25,"how":"JSON-RPC initialize + tools/list: pass 25, partial 10."},{"name":"Performance","max":30,"how":"Full marks at p95 <= 50 ms, falling linearly to 0 at >= 2000 ms; no latency data scores 0."},{"name":"Descriptor","max":20,"how":"Advertises its tools 8, tool metadata captured 5, source or package published 4, transport declared 3."}],"a2a":[{"name":"Availability","max":35,"how":"Agent card fetched and parsed: ok 35, degraded 14."},{"name":"Conformance","max":25,"how":"pass 25, partial 10."},{"name":"Card detail","max":20,"how":"Skills declared 8, three or more skills 4, callable endpoint 6, capabilities 4, protocol version 3, auth scheme 3, documentation 2; of 30, scaled to 20."},{"name":"Performance","max":20,"how":"Full marks at <= 150 ms, falling linearly to 0 at >= 1500 ms."}]},"grade_bands":{"x402":[{"min":88,"grade":"A"},{"min":80,"grade":"B+"},{"min":62,"grade":"B"},{"min":53,"grade":"C+"},{"min":43,"grade":"C"},{"min":12,"grade":"D"}],"mcp":[{"min":95,"grade":"A"},{"min":88,"grade":"B+"},{"min":72,"grade":"B"},{"min":56,"grade":"C+"},{"min":40,"grade":"C"},{"min":20,"grade":"D"}],"a2a":[{"min":98,"grade":"A"},{"min":96,"grade":"B+"},{"min":92,"grade":"B"},{"min":85,"grade":"C+"},{"min":66,"grade":"C"},{"min":60,"grade":"D"}]},"rules":["An x402 service whose endpoint is down is held at D regardless of the other components.","An MCP server flagged by the safety scan is capped: suspicious at C, malicious at E.","Owner verification adds a bonus of 3 points to x402 services.","Bands are set per resource type, so grades are not comparable across types. Below the D threshold is E."]},"readiness_score":{"purpose":"Display only: whether an agent could call the listing today. Does not change search order.","criteria":{"x402":[{"key":"valid_card","label":"Valid payment requirements","max_points":10},{"key":"live","label":"Live 402 challenge","max_points":25},{"key":"protocol_version","label":"x402 version","max_points":10},{"key":"signature","label":"Signed descriptor","max_points":10},{"key":"uptime","label":"Uptime (30 days)","max_points":15},{"key":"skills","label":"Resource declaration","max_points":10},{"key":"identity","label":"Verified identity","max_points":10},{"key":"freshness","label":"Freshness + modern flags","max_points":5},{"key":"security","label":"Security declaration","max_points":5}],"mcp":[{"key":"valid_card","label":"Valid MCP handshake","max_points":10},{"key":"live","label":"Live MCP endpoint","max_points":25},{"key":"protocol_version","label":"Protocol revision","max_points":10},{"key":"signature","label":"Signed descriptor","max_points":10},{"key":"uptime","label":"Uptime (30 days)","max_points":15},{"key":"skills","label":"Tool declaration","max_points":10},{"key":"identity","label":"Verified identity","max_points":10},{"key":"freshness","label":"Freshness + modern flags","max_points":5},{"key":"security","label":"Auth declaration","max_points":5}],"a2a":[{"key":"valid_card","label":"Valid Agent Card","max_points":10},{"key":"live_jsonrpc","label":"Live JSON-RPC","max_points":25},{"key":"protocol_version","label":"Protocol version","max_points":10},{"key":"signature","label":"JWS signature","max_points":10},{"key":"uptime","label":"Uptime (30 days)","max_points":15},{"key":"skills","label":"Skill declaration","max_points":10},{"key":"identity","label":"Verified identity","max_points":10},{"key":"freshness","label":"Freshness + modern flags","max_points":5},{"key":"security","label":"Security declaration","max_points":5}]},"notes":{"a2a":"Nine criteria, 100 points, aligned with the public Agenstry conformance methodology v1.1. Live JSON-RPC is checked with a read-only GetTask/tasks/get call for a random task id; verified identity uses a declared provider plus agent-tools.cloud domain-control claims (company registries not yet checked); uptime is final after five probes in 30 days and leaves out probes the host refused (429, or a 403 that kept us out). Grades: A>=90, B>=75, C>=60, D>=40, F<40. Display only: search order uses the quality grade.","mcp":"Nine criteria, the same as the A2A readiness score, read from our daily MCP probe (initialize + tools/list) and 30-day probe history. No MCP standard defines a signed server descriptor, so that criterion is n/a and the other 90 points are scaled to 100. Grades: A>=90, B>=75, C>=60, D>=40, F<40. Display only: search order uses the quality grade.","x402":"Nine criteria, the same as the A2A readiness score, read from our daily probe of the paid endpoint, its payment requirements and 30-day probe history. Signed descriptor and security declaration are n/a for x402 (payment is the access control), as is an x402 version we have not observed; the remaining points are scaled to 100. Grades: A>=90, B>=75, C>=60, D>=40, F<40. Display only: search order uses the quality grade."},"grade_bands":[{"min":90,"grade":"A"},{"min":75,"grade":"B"},{"min":60,"grade":"C"},{"min":40,"grade":"D"},{"min":0,"grade":"F"}],"decay":{"live_points_full_until_days":30,"floor_reached_at_days":120,"floor":0.4},"latency_bands_ms":[{"max_ms":2500,"band":"responsive"},{"max_ms":5000,"band":"slow"},{"max_ms":8000,"band":"very_slow"}],"payment_evidence_grades":[{"grade":"x402_challenge","meaning":"We sent a request and got a live HTTP 402 challenge."},{"grade":"x402_manifest","meaning":"We read the seller's own /.well-known/x402 descriptor."},{"grade":"agent_card","meaning":"The listing's own card or descriptor declares payment."},{"grade":"bazaar_feed","meaning":"A facilitator's discovery feed (CDP Bazaar) lists it."},{"grade":"catalog_listing","meaning":"A third-party catalog says it accepts payment."},{"grade":"protocol_directory","meaning":"An official protocol directory lists it."}]},"statistics":{"snapshot":"Computed once a day after the probe run; every figure is a count over our own index, not an ecosystem census.","definitions":{"indexed":"listings any source shows us","reachable":"answered our latest daily probe","verified":"valid 402 challenge (x402), full initialize + tools/list (MCP), JSON-RPC reply (A2A)","ready":"readiness grade A or B"},"topics":"Whole-word match of a fixed word list on name and description; listings naming more than five topics (gateway catalogues) are left out.","x402_prices":"Cheapest call each reachable API advertises, in USD (USDC at par).","license":"CC BY 4.0"},"safety_scan":"Static pattern rules over MCP tool names and descriptions for prompt-injection and data-exfiltration lures; no code is executed. Advisory, not a security review."}