{
  "name": "webring.online",
  "description": "A pay-to-join webring for the agentic web: agents, MCP servers, and agent-ready websites, joined in a traversable ring.",
  "openapi": "https://webring.online/openapi.json",
  "llms": "https://webring.online/llms.txt",
  "payments": {
    "protocol": "MPP (Machine Payments Protocol); challenges may carry multiple offers, including x402-compatible EVM charges. Pay any one offer.",
    "how": "Paid endpoints reply 402 Payment Required with a WWW-Authenticate: Payment challenge. Pay the challenge, retry the identical request with the Authorization credential, and the response carries a Payment-Receipt header.",
    "networks": [
      "tempo",
      "base"
    ],
    "registration_fee_usd": "1.00",
    "min_bid_usd": "1.00"
  },
  "validation": {
    "service": "https://is-agentic.com",
    "rule": "Registration requires an is-agentic.com score of at least 40."
  },
  "endpoints": {
    "GET /api/ring": "Members in ring order. Filter with ?kind=agent|mcp|website and ?category=<slug>. Paginate with ?limit= and either ?offset= or ?page=.",
    "GET /api/ring/next?from=<slug|url>": "Next member around the ring (wraps). Omit from to enter at the start. ?format=redirect to 302.",
    "GET /api/ring/prev?from=<slug|url>": "Previous member around the ring (wraps).",
    "GET /api/ring/random": "A random member.",
    "GET /api/ring/{slug}": "One member, with bid total and leaderboard rank.",
    "GET /api/categories": "Categories in use, with member counts.",
    "GET /api/leaderboard": "Members ranked by total paid (join fee plus bids; never shrinks). Includes the single bid needed to take #1. The leader holds the homepage spot. Paginated.",
    "GET /api/widget?from=<slug|url>": "One-call widget payload: member, neighbors, and traversal links.",
    "POST /api/register": "Join the ring. Body: {name, url, kind, category?, description?, bid?}. Costs $1.00 over MPP. Validation precedes the 402; the fee counts toward rank, and an optional bid pays extra in the same payment.",
    "POST /api/bid": "Fund any member's leaderboard total. Body: {member, amount}. Minimum $1.00; bids are cumulative, with no increments.",
    "GET /next|/prev|/random?from=<slug|url>": "Embeddable redirect versions for member sites."
  }
}
