Invalid limit/start/boolean params now return 400 bad_request with a machine-readable reason field (INVALID_LIMIT, INVALID_START, INVALID_PARAM, EMPTY_QUERY) instead of 500. Limit is validated in range [1, 100].