There is. It can be heavily customized to your needs and built to leverage a large ngram data set:
https://dev.languagetool.org/finding-errors-using-n-gram-dat...
I would suggest diving into it more because it seems like you missed how customizable it is.