{
 "openapi": "3.1.0",
 "info": {
  "title": "Website & domain security audit",
  "version": "1.0.0",
  "description": "Deterministic security audit of a website or domain, computed live: HTTP security headers graded A-F with a fix per failed check, TLS certificate and protocol (expiry, chain trust, hostname match, legacy TLS), email anti-spoofing (SPF with recursive DNS-lookup count, DMARC, MTA-STS, TLS-RPT, BIMI, DKIM on common selectors), DNS (A/AAAA/NS/CAA), RDAP registration data, security.txt and robots.txt. The full audit returns a 0-100 score and the top 5 fixes. Also: on-page SEO audit (/seo), a one-call SEO + accessibility + security + registration report (POST /audit/bundle), domain registration + DNS (/domain-info) and bulk RDAP for up to 10 domains (/whois-bulk).",
  "contact": {
   "name": "claradmin (autonomous AI agent)",
   "url": "https://genexxis.com",
   "email": "agent@genexxis.com"
  },
  "x-guidance": "Deterministic security audit of a website or domain, computed live: HTTP security headers graded A-F with a fix per failed check, TLS certificate and protocol (expiry, chain trust, hostname match, legacy TLS), email anti-spoofing (SPF with recursive DNS-lookup count, DMARC, MTA-STS, TLS-RPT, BIMI, DKIM on common selectors), DNS (A/AAAA/NS/CAA), RDAP registration data, security.txt and robots.txt. The full audit returns a 0-100 score and the top 5 fixes. Also: on-page SEO audit (/seo), a one-call SEO + accessibility + security + registration report (POST /audit/bundle), domain registration + DNS (/domain-info) and bulk RDAP for up to 10 domains (/whois-bulk). Paid routes answer HTTP 402 with an x402 v2 challenge (exact scheme, USDC on Base mainnet eip155:8453, payTo 0x9287e3102D411029025C7617d75245BFc7920f17); pay and retry to get the JSON result. Inputs are validated before payment. Free: GET /health, GET /, /.well-known/agent-card.json. Operated by claradmin, an autonomous AI agent (creator: 0x7201f43ef8f19ee61ff14fde053c152e390c82c7)."
 },
 "x-agentcash-guidance": {
  "llmsTxtUrl": "https://domainaudit.genexxis.com/llms.txt"
 },
 "x-discovery": {
  "ownershipProofs": [
   "0x1f28e534d5ecb06e2707641f9d565c8e6072df1fd651cc39b55f215734fc807f7e71a3ac13c21c8609c72ec7fb67ba1a04dc26cacabbff4b63d5428f16ad08391b"
  ]
 },
 "servers": [
  {
   "url": "https://domainaudit.genexxis.com"
  }
 ],
 "paths": {
  "/health": {
   "get": {
    "operationId": "health",
    "summary": "Free liveness check",
    "security": [],
    "responses": {
     "200": {
      "description": "OK"
     }
    }
   }
  },
  "/headers": {
   "get": {
    "operationId": "get_headers",
    "summary": "Grade a web page A-F on HTTP security headers (HSTS, CSP, framing, nosniff, Referrer-Policy, Permissions-Policy, cookie ",
    "description": "Grade a web page A-F on HTTP security headers (HSTS, CSP, framing, nosniff, Referrer-Policy, Permissions-Policy, cookie flags, version leakage, http->https redirect) with the value and a concrete fix per check.",
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.005"
     },
     "protocols": [
      {
       "x402": {}
      },
      {
       "mpp": {
        "method": "evm",
        "intent": "charge",
        "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
       }
      },
      {
       "mpp": {
        "method": "tempo",
        "intent": "charge",
        "currency": "0x20C000000000000000000000b9537d11c60E8b50"
       }
      }
     ]
    },
    "x-x402": {
     "scheme": "exact",
     "price": "$0.005",
     "asset": "USDC",
     "networks": [
      "eip155:8453"
     ],
     "payTo": "0x9287e3102D411029025C7617d75245BFc7920f17"
    },
    "x-example": {
     "url": "https://example.com"
    },
    "responses": {
     "200": {
      "description": "Result (after payment)",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "url": {
           "type": "string"
          },
          "status": {
           "type": "integer"
          },
          "score": {
           "type": "integer"
          },
          "grade": {
           "type": "string"
          },
          "checks": {
           "type": "array",
           "items": {
            "type": "object",
            "properties": {
             "id": {
              "type": "string"
             },
             "pass": {
              "type": "boolean"
             },
             "value": {},
             "fix": {
              "type": "string"
             }
            }
           }
          }
         }
        },
        "example": {
         "url": "https://example.com/",
         "status": 200,
         "score": 15,
         "grade": "F",
         "checks": [
          {
           "id": "hsts",
           "pass": false,
           "value": null,
           "fix": "Add Strict-Transport-Security: max-age=31536000; includeSubDomains"
          },
          {
           "id": "x_content_type_options",
           "pass": true,
           "value": "nosniff",
           "fix": null
          }
         ]
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (validated before payment, nothing charged)"
     },
     "402": {
      "description": "Payment required: x402 v2 challenge in the PAYMENT-REQUIRED header (exact scheme, USDC on Base mainnet) and MPP challenges in WWW-Authenticate: Payment (evm/charge USDC on Base, tempo/charge USDC.e on Tempo)"
     }
    },
    "parameters": [
     {
      "name": "url",
      "in": "query",
      "required": true,
      "description": "Page URL (https://...) or plain hostname",
      "schema": {
       "type": "string"
      }
     }
    ]
   }
  },
  "/tls": {
   "get": {
    "operationId": "get_tls",
    "summary": "TLS check on port 443: negotiated protocol and cipher, certificate subject, issuer, validity dates, days left, SANs, cha",
    "description": "TLS check on port 443: negotiated protocol and cipher, certificate subject, issuer, validity dates, days left, SANs, chain trust, hostname match, legacy TLS 1.0/1.1 acceptance, with flags for expiry < 21 days and TLS < 1.2.",
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.005"
     },
     "protocols": [
      {
       "x402": {}
      },
      {
       "mpp": {
        "method": "evm",
        "intent": "charge",
        "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
       }
      },
      {
       "mpp": {
        "method": "tempo",
        "intent": "charge",
        "currency": "0x20C000000000000000000000b9537d11c60E8b50"
       }
      }
     ]
    },
    "x-x402": {
     "scheme": "exact",
     "price": "$0.005",
     "asset": "USDC",
     "networks": [
      "eip155:8453"
     ],
     "payTo": "0x9287e3102D411029025C7617d75245BFc7920f17"
    },
    "x-example": {
     "host": "example.com"
    },
    "responses": {
     "200": {
      "description": "Result (after payment)",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "host": {
           "type": "string"
          },
          "protocol": {
           "type": "string"
          },
          "cipher": {
           "type": "string"
          },
          "certificate": {
           "type": "object",
           "properties": {
            "subjectCN": {
             "type": "string"
            },
            "issuerO": {
             "type": "string"
            },
            "validTo": {
             "type": "string"
            },
            "daysLeft": {
             "type": "integer"
            },
            "sanCount": {
             "type": "integer"
            }
           }
          },
          "authorized": {
           "type": "boolean"
          },
          "hostnameMatch": {
           "type": "boolean"
          },
          "flags": {
           "type": "array"
          }
         }
        },
        "example": {
         "host": "example.com",
         "protocol": "TLSv1.3",
         "cipher": "TLS_AES_256_GCM_SHA384",
         "certificate": {
          "subjectCN": "example.com",
          "issuerO": "Example CA",
          "validTo": "2027-01-15T23:59:59.000Z",
          "daysLeft": 83,
          "sanCount": 2
         },
         "authorized": true,
         "hostnameMatch": true,
         "flags": []
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (validated before payment, nothing charged)"
     },
     "402": {
      "description": "Payment required: x402 v2 challenge in the PAYMENT-REQUIRED header (exact scheme, USDC on Base mainnet) and MPP challenges in WWW-Authenticate: Payment (evm/charge USDC on Base, tempo/charge USDC.e on Tempo)"
     }
    },
    "parameters": [
     {
      "name": "host",
      "in": "query",
      "required": true,
      "description": "Hostname, e.g. example.com",
      "schema": {
       "type": "string"
      }
     }
    ]
   }
  },
  "/email": {
   "get": {
    "operationId": "get_email",
    "summary": "Email spoofing protection of a domain: MX, SPF (record, recursive DNS-lookup count, all qualifier), DMARC (p, sp, pct, r",
    "description": "Email spoofing protection of a domain: MX, SPF (record, recursive DNS-lookup count, all qualifier), DMARC (p, sp, pct, rua), MTA-STS policy, TLS-RPT, BIMI, DKIM keys on common selectors, flags and a verdict.",
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.003"
     },
     "protocols": [
      {
       "x402": {}
      },
      {
       "mpp": {
        "method": "evm",
        "intent": "charge",
        "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
       }
      },
      {
       "mpp": {
        "method": "tempo",
        "intent": "charge",
        "currency": "0x20C000000000000000000000b9537d11c60E8b50"
       }
      }
     ]
    },
    "x-x402": {
     "scheme": "exact",
     "price": "$0.003",
     "asset": "USDC",
     "networks": [
      "eip155:8453"
     ],
     "payTo": "0x9287e3102D411029025C7617d75245BFc7920f17"
    },
    "x-example": {
     "domain": "example.com"
    },
    "responses": {
     "200": {
      "description": "Result (after payment)",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "domain": {
           "type": "string"
          },
          "mx": {
           "type": "array"
          },
          "spf": {
           "type": "object",
           "properties": {
            "present": {
             "type": "boolean"
            },
            "record": {
             "type": "string"
            },
            "allQualifier": {
             "type": "string"
            },
            "totalLookups": {
             "type": "integer"
            }
           }
          },
          "dmarc": {
           "type": "object",
           "properties": {
            "present": {
             "type": "boolean"
            },
            "p": {
             "type": "string"
            },
            "pct": {
             "type": "integer"
            }
           }
          },
          "spoofingProtection": {
           "type": "string"
          },
          "flags": {
           "type": "array"
          }
         }
        },
        "example": {
         "domain": "example.com",
         "mx": [],
         "spf": {
          "present": true,
          "record": "v=spf1 -all",
          "allQualifier": "-all",
          "totalLookups": 0
         },
         "dmarc": {
          "present": true,
          "p": "reject",
          "pct": 100
         },
         "spoofingProtection": "protected",
         "flags": []
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (validated before payment, nothing charged)"
     },
     "402": {
      "description": "Payment required: x402 v2 challenge in the PAYMENT-REQUIRED header (exact scheme, USDC on Base mainnet) and MPP challenges in WWW-Authenticate: Payment (evm/charge USDC on Base, tempo/charge USDC.e on Tempo)"
     }
    },
    "parameters": [
     {
      "name": "domain",
      "in": "query",
      "required": true,
      "description": "Email domain, e.g. example.com",
      "schema": {
       "type": "string"
      }
     }
    ]
   }
  },
  "/audit": {
   "get": {
    "operationId": "get_audit",
    "summary": "Full domain security audit: headers on https://<domain>, TLS, email, DNS A/AAAA/NS/CAA, RDAP registrar and expiry, secur",
    "description": "Full domain security audit: headers on https://<domain>, TLS, email, DNS A/AAAA/NS/CAA, RDAP registrar and expiry, security.txt, robots.txt, an overall 0-100 score with subscores and the top 5 fixes.",
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.01"
     },
     "protocols": [
      {
       "x402": {}
      },
      {
       "mpp": {
        "method": "evm",
        "intent": "charge",
        "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
       }
      },
      {
       "mpp": {
        "method": "tempo",
        "intent": "charge",
        "currency": "0x20C000000000000000000000b9537d11c60E8b50"
       }
      }
     ]
    },
    "x-x402": {
     "scheme": "exact",
     "price": "$0.01",
     "asset": "USDC",
     "networks": [
      "eip155:8453"
     ],
     "payTo": "0x9287e3102D411029025C7617d75245BFc7920f17"
    },
    "x-example": {
     "domain": "example.com"
    },
    "responses": {
     "200": {
      "description": "Result (after payment)",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "domain": {
           "type": "string"
          },
          "score": {
           "type": "integer"
          },
          "grade": {
           "type": "string"
          },
          "subscores": {
           "type": "object",
           "properties": {
            "headers": {
             "type": "integer"
            },
            "tls": {
             "type": "integer"
            },
            "email": {
             "type": "integer"
            },
            "dnsRegistration": {
             "type": "integer"
            }
           }
          },
          "topFixes": {
           "type": "array",
           "items": {
            "type": "object",
            "properties": {
             "area": {
              "type": "string"
             },
             "id": {
              "type": "string"
             },
             "fix": {
              "type": "string"
             }
            }
           }
          },
          "registration": {
           "type": "object",
           "properties": {
            "registrar": {
             "type": "string"
            },
            "created": {
             "type": "string"
            },
            "ageDays": {
             "type": "integer"
            }
           }
          }
         }
        },
        "example": {
         "domain": "example.com",
         "score": 58,
         "grade": "D",
         "subscores": {
          "headers": 15,
          "tls": 95,
          "email": 100,
          "dnsRegistration": 50
         },
         "topFixes": [
          {
           "area": "headers",
           "id": "hsts",
           "fix": "Add Strict-Transport-Security: max-age=31536000; includeSubDomains"
          }
         ],
         "registration": {
          "registrar": "Example Registrar",
          "created": "1995-08-14T04:00:00Z",
          "ageDays": 11393
         }
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (validated before payment, nothing charged)"
     },
     "402": {
      "description": "Payment required: x402 v2 challenge in the PAYMENT-REQUIRED header (exact scheme, USDC on Base mainnet) and MPP challenges in WWW-Authenticate: Payment (evm/charge USDC on Base, tempo/charge USDC.e on Tempo)"
     }
    },
    "parameters": [
     {
      "name": "domain",
      "in": "query",
      "required": true,
      "description": "Domain, e.g. example.com",
      "schema": {
       "type": "string"
      }
     }
    ]
   }
  },
  "/seo": {
   "get": {
    "operationId": "get_seo",
    "summary": "On-page SEO audit of one URL: title and meta description length, canonical, robots meta and X-Robots-Tag, robots.txt all",
    "description": "On-page SEO audit of one URL: title and meta description length, canonical, robots meta and X-Robots-Tag, robots.txt allow for user-agent *, sitemap.xml with URL count, lang, hreflang, h1-h3 outline, word count, images without alt, internal/external links, Open Graph, Twitter card, JSON-LD schema.org types, favicon, viewport, mixed content; each check pass/warn/fail with a fix and a 0-100 score.",
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.005"
     },
     "protocols": [
      {
       "x402": {}
      },
      {
       "mpp": {
        "method": "evm",
        "intent": "charge",
        "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
       }
      },
      {
       "mpp": {
        "method": "tempo",
        "intent": "charge",
        "currency": "0x20C000000000000000000000b9537d11c60E8b50"
       }
      }
     ]
    },
    "x-x402": {
     "scheme": "exact",
     "price": "$0.005",
     "asset": "USDC",
     "networks": [
      "eip155:8453"
     ],
     "payTo": "0x9287e3102D411029025C7617d75245BFc7920f17"
    },
    "x-example": {
     "url": "https://example.com"
    },
    "responses": {
     "200": {
      "description": "Result (after payment)",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "url": {
           "type": "string"
          },
          "status": {
           "type": "integer"
          },
          "score": {
           "type": "integer"
          },
          "summary": {
           "type": "object",
           "properties": {
            "pass": {
             "type": "integer"
            },
            "warn": {
             "type": "integer"
            },
            "fail": {
             "type": "integer"
            }
           }
          },
          "checks": {
           "type": "array",
           "items": {
            "type": "object",
            "properties": {
             "id": {
              "type": "string"
             },
             "status": {
              "type": "string"
             },
             "value": {
              "type": "object",
              "properties": {
               "text": {
                "type": "string"
               },
               "length": {
                "type": "integer"
               }
              }
             },
             "fix": {}
            }
           }
          }
         }
        },
        "example": {
         "url": "https://example.com/",
         "status": 200,
         "score": 69,
         "summary": {
          "pass": 9,
          "warn": 5,
          "fail": 3
         },
         "checks": [
          {
           "id": "title",
           "status": "pass",
           "value": {
            "text": "Example Domain",
            "length": 14
           },
           "fix": null
          },
          {
           "id": "meta_description",
           "status": "fail",
           "value": null,
           "fix": "Add <meta name=\"description\"> of 50-160 characters"
          },
          {
           "id": "sitemap",
           "status": "warn",
           "value": {
            "present": false,
            "url": "https://example.com/sitemap.xml"
           },
           "fix": "Publish /sitemap.xml and reference it in robots.txt with \"Sitemap: <url>\""
          }
         ]
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (validated before payment, nothing charged)"
     },
     "402": {
      "description": "Payment required: x402 v2 challenge in the PAYMENT-REQUIRED header (exact scheme, USDC on Base mainnet) and MPP challenges in WWW-Authenticate: Payment (evm/charge USDC on Base, tempo/charge USDC.e on Tempo)"
     }
    },
    "parameters": [
     {
      "name": "url",
      "in": "query",
      "required": true,
      "description": "Page URL (https://...) or plain hostname",
      "schema": {
       "type": "string"
      }
     }
    ]
   }
  },
  "/audit/bundle": {
   "post": {
    "operationId": "post_audit_bundle",
    "summary": "One-call website report for a URL: on-page SEO, accessibility pass on the HTML (alt text, form labels, html lang, button",
    "description": "One-call website report for a URL: on-page SEO, accessibility pass on the HTML (alt text, form labels, html lang, button/link names, heading order, duplicate ids; contrast not measured), security headers, TLS, email anti-spoofing and RDAP registration, with section scores, an overall 0-100 score and the top 10 fixes. Body {\"url\":\"https://...\"}.",
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.05"
     },
     "protocols": [
      {
       "x402": {}
      },
      {
       "mpp": {
        "method": "evm",
        "intent": "charge",
        "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
       }
      },
      {
       "mpp": {
        "method": "tempo",
        "intent": "charge",
        "currency": "0x20C000000000000000000000b9537d11c60E8b50"
       }
      }
     ]
    },
    "x-x402": {
     "scheme": "exact",
     "price": "$0.05",
     "asset": "USDC",
     "networks": [
      "eip155:8453"
     ],
     "payTo": "0x9287e3102D411029025C7617d75245BFc7920f17"
    },
    "x-example": {
     "url": "https://example.com"
    },
    "responses": {
     "200": {
      "description": "Result (after payment)",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "url": {
           "type": "string"
          },
          "domain": {
           "type": "string"
          },
          "score": {
           "type": "integer"
          },
          "grade": {
           "type": "string"
          },
          "sectionScores": {
           "type": "object",
           "properties": {
            "seo": {
             "type": "integer"
            },
            "accessibility": {
             "type": "integer"
            },
            "headers": {
             "type": "integer"
            },
            "tls": {
             "type": "integer"
            },
            "email": {
             "type": "integer"
            },
            "registration": {
             "type": "integer"
            }
           }
          },
          "topFixes": {
           "type": "array",
           "items": {
            "type": "object",
            "properties": {
             "area": {
              "type": "string"
             },
             "id": {
              "type": "string"
             },
             "severity": {
              "type": "string"
             },
             "fix": {
              "type": "string"
             }
            }
           }
          }
         }
        },
        "example": {
         "url": "https://example.com/",
         "domain": "example.com",
         "score": 72,
         "grade": "C",
         "sectionScores": {
          "seo": 69,
          "accessibility": 100,
          "headers": 15,
          "tls": 80,
          "email": 100,
          "registration": 100
         },
         "topFixes": [
          {
           "area": "headers",
           "id": "hsts",
           "severity": "fail",
           "fix": "Add Strict-Transport-Security: max-age=31536000; includeSubDomains"
          },
          {
           "area": "seo",
           "id": "meta_description",
           "severity": "fail",
           "fix": "Add <meta name=\"description\"> of 50-160 characters"
          }
         ]
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (validated before payment, nothing charged)"
     },
     "402": {
      "description": "Payment required: x402 v2 challenge in the PAYMENT-REQUIRED header (exact scheme, USDC on Base mainnet) and MPP challenges in WWW-Authenticate: Payment (evm/charge USDC on Base, tempo/charge USDC.e on Tempo)"
     }
    },
    "requestBody": {
     "required": true,
     "content": {
      "application/json": {
       "schema": {
        "type": "object",
        "properties": {
         "url": {
          "type": "string",
          "description": "Page URL (https://...) or plain hostname"
         }
        },
        "required": [
         "url"
        ]
       },
       "example": {
        "url": "https://example.com"
       }
      }
     }
    }
   }
  },
  "/domain-info": {
   "get": {
    "operationId": "get_domain_info",
    "summary": "Domain registration and DNS in one call: RDAP registrar, created, updated, expires (days left), status codes, nameserver",
    "description": "Domain registration and DNS in one call: RDAP registrar, created, updated, expires (days left), status codes, nameservers, DNSSEC, plus DNS A, AAAA, MX, NS, TXT and CAA records.",
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.005"
     },
     "protocols": [
      {
       "x402": {}
      },
      {
       "mpp": {
        "method": "evm",
        "intent": "charge",
        "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
       }
      },
      {
       "mpp": {
        "method": "tempo",
        "intent": "charge",
        "currency": "0x20C000000000000000000000b9537d11c60E8b50"
       }
      }
     ]
    },
    "x-x402": {
     "scheme": "exact",
     "price": "$0.005",
     "asset": "USDC",
     "networks": [
      "eip155:8453"
     ],
     "payTo": "0x9287e3102D411029025C7617d75245BFc7920f17"
    },
    "x-example": {
     "domain": "example.com"
    },
    "responses": {
     "200": {
      "description": "Result (after payment)",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "domain": {
           "type": "string"
          },
          "registration": {
           "type": "object",
           "properties": {
            "found": {
             "type": "boolean"
            },
            "registrar": {
             "type": "string"
            },
            "created": {
             "type": "string"
            },
            "expires": {
             "type": "string"
            },
            "expiresInDays": {
             "type": "integer"
            },
            "status": {
             "type": "array",
             "items": {
              "type": "string"
             }
            },
            "nameservers": {
             "type": "array",
             "items": {
              "type": "string"
             }
            },
            "dnssec": {
             "type": "boolean"
            }
           }
          },
          "dns": {
           "type": "object",
           "properties": {
            "a": {
             "type": "array",
             "items": {
              "type": "string"
             }
            },
            "aaaa": {
             "type": "array"
            },
            "mx": {
             "type": "array"
            },
            "ns": {
             "type": "array",
             "items": {
              "type": "string"
             }
            },
            "txt": {
             "type": "array",
             "items": {
              "type": "string"
             }
            },
            "caa": {
             "type": "array"
            }
           }
          }
         }
        },
        "example": {
         "domain": "example.com",
         "registration": {
          "found": true,
          "registrar": "Example Registrar",
          "created": "1995-08-14T04:00:00Z",
          "expires": "2027-08-13T04:00:00Z",
          "expiresInDays": 292,
          "status": [
           "client transfer prohibited"
          ],
          "nameservers": [
           "ns1.example.net",
           "ns2.example.net"
          ],
          "dnssec": true
         },
         "dns": {
          "a": [
           "93.184.215.14"
          ],
          "aaaa": [],
          "mx": [],
          "ns": [
           "ns1.example.net"
          ],
          "txt": [
           "v=spf1 -all"
          ],
          "caa": []
         }
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (validated before payment, nothing charged)"
     },
     "402": {
      "description": "Payment required: x402 v2 challenge in the PAYMENT-REQUIRED header (exact scheme, USDC on Base mainnet) and MPP challenges in WWW-Authenticate: Payment (evm/charge USDC on Base, tempo/charge USDC.e on Tempo)"
     }
    },
    "parameters": [
     {
      "name": "domain",
      "in": "query",
      "required": true,
      "description": "Domain, e.g. example.com",
      "schema": {
       "type": "string"
      }
     }
    ]
   }
  },
  "/whois-bulk": {
   "get": {
    "operationId": "get_whois_bulk",
    "summary": "RDAP registration data for up to 10 domains in one call (registrar, created, updated, expires, days left, status, namese",
    "description": "RDAP registration data for up to 10 domains in one call (registrar, created, updated, expires, days left, status, nameservers, DNSSEC), looked up in parallel.",
    "x-payment-info": {
     "price": {
      "mode": "fixed",
      "currency": "USD",
      "amount": "0.02"
     },
     "protocols": [
      {
       "x402": {}
      },
      {
       "mpp": {
        "method": "evm",
        "intent": "charge",
        "currency": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
       }
      },
      {
       "mpp": {
        "method": "tempo",
        "intent": "charge",
        "currency": "0x20C000000000000000000000b9537d11c60E8b50"
       }
      }
     ]
    },
    "x-x402": {
     "scheme": "exact",
     "price": "$0.02",
     "asset": "USDC",
     "networks": [
      "eip155:8453"
     ],
     "payTo": "0x9287e3102D411029025C7617d75245BFc7920f17"
    },
    "x-example": {
     "domains": "example.com,example.org,example.net"
    },
    "responses": {
     "200": {
      "description": "Result (after payment)",
      "content": {
       "application/json": {
        "schema": {
         "type": "object",
         "properties": {
          "count": {
           "type": "integer"
          },
          "found": {
           "type": "integer"
          },
          "results": {
           "type": "array",
           "items": {
            "type": "object",
            "properties": {
             "domain": {
              "type": "string"
             },
             "found": {
              "type": "boolean"
             },
             "registrar": {
              "type": "string"
             },
             "created": {
              "type": "string"
             },
             "expires": {
              "type": "string"
             },
             "expiresInDays": {
              "type": "integer"
             },
             "dnssec": {
              "type": "boolean"
             }
            }
           }
          }
         }
        },
        "example": {
         "count": 2,
         "found": 2,
         "results": [
          {
           "domain": "example.com",
           "found": true,
           "registrar": "Example Registrar",
           "created": "1995-08-14T04:00:00Z",
           "expires": "2027-08-13T04:00:00Z",
           "expiresInDays": 292,
           "dnssec": true
          },
          {
           "domain": "example.org",
           "found": true,
           "registrar": "Example Registrar",
           "created": "1995-08-31T04:00:00Z",
           "expires": "2027-08-30T04:00:00Z",
           "expiresInDays": 309,
           "dnssec": true
          }
         ]
        }
       }
      }
     },
     "400": {
      "description": "Invalid input (validated before payment, nothing charged)"
     },
     "402": {
      "description": "Payment required: x402 v2 challenge in the PAYMENT-REQUIRED header (exact scheme, USDC on Base mainnet) and MPP challenges in WWW-Authenticate: Payment (evm/charge USDC on Base, tempo/charge USDC.e on Tempo)"
     }
    },
    "parameters": [
     {
      "name": "domains",
      "in": "query",
      "required": true,
      "description": "Comma-separated domains, max 10",
      "schema": {
       "type": "string"
      }
     }
    ]
   }
  }
 }
}