Sure, you should be able to do
do (VarI _ t _ _) <- reify adapteeName
-- t :: Type
-- e.g. AppT (AppT ArrowT (VarT a)) (VarT b)
let argsNum = countTheTopLevelArrowTs t
...
where
countTheTopLevelArrowTs (AppT (AppT ArrowT _) ts) = 1 + countTheTopLevelArrowTs
countTheTopLevelArrowTs _ = 0
The above is just from my head and may not be quite right.