It is not so clear, but we've had discussions about similar topics. A first place to look would be here but there doesn't seem to be anything about Underload yet.
From the "default IO for code-golf"-question it seems that taking inputs as predefined variables is not accepted [1] [2] which is also argued to make the answer a snippet which is not accepted either [3], but at the same time there seem to be exceptions, for example if you use a variable that just stores the result of the last execution [4] or if you are using assembly [5] or some form of turing machines [7] (I'm not sure whether this also covers BrainFuck).
One question mentiones Underload in the context of functions [6], another one also asks about underload and the use of point-free functions [7], so it seems writing lambda expressions/pointfree furnctions to make your submission a function is the best way to go, because functions are allowed by default [8].
I'm not sure about the numbers, but since unary is allowed [9] and using the byte values as numeric input is allowed too [10] I'd argue that the default of using Church numerals in Underload should be allowed too.