{
  "service": "NoJunk Geo",
  "description": "Cheap geocoding, reverse geocoding and weather for AI agents, paid per call in USDC on Base via x402: /geocode turns a place name or address into coordinates and a structured address, /reverse turns coordinates into an address, /weather returns current conditions and a 7-day forecast for coordinates or a place name. Data from OpenStreetMap Nominatim (ODbL, attribution required) and Open-Meteo (CC BY 4.0). You are only charged when a result is returned.",
  "openapi": "https://nojunk-geo.mick8511.workers.dev/openapi.json",
  "health": "https://nojunk-geo.mick8511.workers.dev/health/data",
  "price": "$0.002 USDC on Base per successful request (x402), every route",
  "endpoints": {
    "/geocode": {
      "methods": [
        "GET",
        "POST"
      ],
      "url": "https://nojunk-geo.mick8511.workers.dev/geocode",
      "example": "https://nojunk-geo.mick8511.workers.dev/geocode?q=Sunrise%2C+Florida&limit=1&country=us",
      "description": "Place name or address -> coordinates, structured address and bounding box (OpenStreetMap Nominatim)."
    },
    "/reverse": {
      "methods": [
        "GET",
        "POST"
      ],
      "url": "https://nojunk-geo.mick8511.workers.dev/reverse",
      "example": "https://nojunk-geo.mick8511.workers.dev/reverse?lat=26.1670&lon=-80.2567&zoom=18",
      "description": "Coordinates -> nearest address and place (OpenStreetMap Nominatim)."
    },
    "/weather": {
      "methods": [
        "GET",
        "POST"
      ],
      "url": "https://nojunk-geo.mick8511.workers.dev/weather",
      "example": "https://nojunk-geo.mick8511.workers.dev/weather?q=Sunrise%2C+Florida",
      "description": "Coordinates or place name -> current conditions and 7-day daily forecast in metric and imperial units (Open-Meteo)."
    }
  },
  "params": {
    "/geocode": {
      "q": "required, 1-200 chars",
      "limit": "1-5, default 1",
      "country": "optional ISO2 code"
    },
    "/reverse": {
      "lat": "required, -90..90",
      "lon": "required, -180..180",
      "zoom": "3-18, default 18"
    },
    "/weather": {
      "lat": "with lon",
      "lon": "with lat",
      "q": "or a place name/address (geocoded first)",
      "country": "optional ISO2 code (with q)"
    }
  },
  "sources": {
    "geocoding": {
      "name": "OpenStreetMap Nominatim",
      "attribution": "Data © OpenStreetMap contributors, ODbL"
    },
    "weather": {
      "name": "Open-Meteo",
      "attribution": "Weather data by Open-Meteo.com (CC BY 4.0)"
    }
  },
  "limits": {
    "timeout_seconds": 6,
    "geocode_cache_seconds": 86400,
    "weather_cache_seconds": 600,
    "max_request_bytes": 16384
  },
  "no_charge_on": [
    "400 invalid input",
    "404 no place/address found",
    "413 request too large",
    "502 data source unavailable"
  ],
  "configured": true,
  "facilitator": "cdp"
}