{
  "$schema": "https://loomal.ai/.well-known/x402-discovery.json#",
  "version": "1",
  "title": "x402 Discovery Feed — Open Spec",
  "description": "Machine-readable directory of x402-paywalled HTTP endpoints. Any x402 facilitator can publish a feed at this shape so agent frameworks can index multiple providers with one parser.",
  "self": {
    "facilitator": "Loomal",
    "feed": "https://api.loomal.ai/v0/discover",
    "spec": "https://loomal.ai/.well-known/x402-discovery.json",
    "discoverUi": "https://loomal.ai/discover"
  },
  "feedShape": {
    "version": "string — spec version, currently \"1\"",
    "facilitator": {
      "name": "string — facilitator name",
      "url": "string — facilitator homepage",
      "spec": "string — URL of this spec doc"
    },
    "endpoints": [
      {
        "id": "string — facilitator-scoped opaque id",
        "url": "string — fully-qualified HTTPS endpoint URL",
        "method": "string — HTTP verb, currently always \"GET\"",
        "title": "string — human-readable label, non-empty",
        "description": "string|null — short blurb, ≤280 chars",
        "category": "string|null — free-text tag (e.g. \"crypto\", \"weather\", \"compute\")",
        "price": {
          "amountUsdc": "string — decimal USDC amount per call (e.g. \"0.001\")",
          "network": "string — chain key (e.g. \"base\")"
        },
        "x402": {
          "challenge": "string — POST URL that issues the x402 payment challenge"
        },
        "addedAt": "string — ISO 8601 timestamp"
      }
    ],
    "nextCursor": "string|null — opaque cursor for pagination; null when no more rows"
  },
  "howToCall": [
    "1. Pick an endpoint from the feed.",
    "2. Send the request to its `url` (or call `x402.challenge` to fetch the payment requirements).",
    "3. Receive HTTP 402 + payment challenge envelope.",
    "4. Sign an EIP-3009 transferWithAuthorization for the price on the network listed.",
    "5. Retry the request with the signed payload in the `X-Payment` header.",
    "6. The facilitator settles on-chain and proxies the response back."
  ],
  "supportedNetworks": ["base"],
  "currency": "USDC",
  "links": {
    "x402Spec": "https://x402.org",
    "loomalDocs": "https://docs.loomal.ai"
  }
}
