A combinator is a function that doesn't utilize free variables.
E.g.
$$ \lambda a. \lambda b.a $$
However all of this works in an untyped environment. When working with types, let's say $nat$. can't we use constants:
$$ \lambda a: nat. a + 2 $$
... and have a combinator as well (because it doesn't use free variables)? I'm just asking, because normally, when saying combinator I have a pretty concrete image of what is being talked about, which is a function only utilizing its input parameters, e.g. Ski-calculus, or all the named combinators (A-combinator, B-combinator, Y-combinator, etc.)
By "combinator" you seem to mean just a closed lambda term. Types are mostly irrelevant (though $nat$, for example, could refer to an enclosing type definition and thus may be a free variable). If $2$ (and $+$) is part of the syntax of the specific lambda calculus you're using, then it's not a free variable. The lambda calculus doesn't need to be typed to have built-in numerical constants. If it is a term defined elsewhere then it is a free variable in this expression. If it is a meta-syntactic abbreviation for a closed lambda term, then it isn't. A similar situation holds for $nat$ itself.