Hallo,
mit startinnercode= wird ausgeführt, was danach, also nach dem Gleichheitszeichen als Code angegeben wird, und zwar innerhalb der Box, die mdframed zur Verfügung stellt. Siehe texdoc mdframed.
Es gibt zahlreiche Optionen. Auf der Suche nach Möglichkeiten, wie man die Abstände bei \mrk möglichst gleich hinkriegt, habe ich herumprobiert, aber weiter komme ich gerade nicht:
\documentclass[parskip=half-]{scrartcl}
\usepackage{polyglossia}
\setdefaultlanguage{german}
\usepackage{scrjura}
\usepackage{blindtext}
\usepackage{mdframed}
\usepackage{xcolor}
\usepackage{microtype}
\definecolor{j}{RGB}{0,255,0}
\definecolor{n}{RGB}{255,0,0}
\definecolor{v}{RGB}{255,215,0}
\usepackage{etoolbox}
\newbool{markieren}
\newcommand{\mrk}[2]{
\ifbool{markieren}
{\begin{mdframed}[
backgroundcolor=#1!20,
linewidth=0pt,
startinnercode={\stepcounter{par}(\thepar)},
leftmargin=0pt,
rightmargin=0pt,
innerleftmargin=0pt,
innerrightmargin=0pt,
innertopmargin=0pt,
innerbottommargin=0pt,
hidealllines=true,
]#2\end{mdframed} \vspace*{-14pt}
}
{#2}}
\setbool{markieren}{false} % true/false
\begin{document}
\begin{contract}
\Clause{title=Paragraph}
\mrk{j}{\blindtext}
\mrk{n}{\blindtext}
\mrk{v}{\blindtext}
\newpage
\Clause{title=Paragraph}
\blindtext
\blindtext
\blindtext
\end{contract}
\end{document}