{
  "service": "password.tools.town",
  "version": "1.0.0",
  "description": "Cryptographically random passwords via crypto.getRandomValues — no storage, no third-party APIs. For QA, DevOps, and end-users needing one-off secrets.",
  "limits": {
    "length": [
      8,
      256
    ],
    "charset": "avoids ambiguous 0/O/1/l in letters+digits"
  },
  "endpoints": {
    "docs_html": "GET /",
    "generate": "GET /v1/generate?length=&upper=&lower=&digits=&symbols=",
    "presets": "GET /v1/presets",
    "validate": "GET /v1/validate?length=&upper=&lower=&digits=&symbols=",
    "embed_widget": "GET /embed/",
    "health": "GET /health",
    "discovery": "GET /meta"
  },
  "query_params": {
    "length": "Integer 8–256 (default 20).",
    "upper": "1/true (default on) or 0/false.",
    "lower": "default on.",
    "digits": "default on.",
    "symbols": "default on."
  },
  "examples": {
    "default": "https://password.tools.town/v1/generate",
    "pin": "https://password.tools.town/v1/generate?length=10&upper=0&lower=0&symbols=0",
    "long": "https://password.tools.town/v1/generate?length=64"
  }
}