ACVE

matcher

ACVE matcher

Shapes

| Shape | Meaning | | --- | --- | | {field, op, value} | Evaluate one element-relative field | | {all: [...]} | All children; false wins, otherwise unknown if present | | {any: [...]} | Any child; true wins, otherwise unknown if present | | {not: matcher} | Flip true/false; unknown stays unknown | | {some: array, where: matcher} | True when one array element matches | | {every: array, where: matcher} | True when every element matches; empty is vacuously true |

The primitive values are true, false, and unknown. Missing fields are unknown except for exists. An element matcher is evaluated independently: two different MCP servers cannot combine half of a condition.

Operators

eq, neq, in, notIn, exists, semverRange, regex, hashIn, gte, lte, and contains are the allowed operators. Version comparisons use ACVE's numeric tuple version parser and support semver, calendar versions, and prereleases.

Array names are legal only as some/every selectors. A field such as mcpServers.package is rejected because it would make element ownership ambiguous; inside its where branch the field is simply package.

Feature keys may use bracket-quoted segments, for example features["project.configPresent"]. This distinguishes a flat feature key containing a dot from nested object traversal. exists is true for a present scalar/object and for an array only when it is non-empty; missing and null values are false.