This is the JSON Schema for OpenPredicate, a JSON-encoded SQL-flavoured predicate language for the request body of search operations. It describes the filter and nothing else — no projection, ordering or pagination — so one grammar can be $ref'd from every POST /…/search and QUERY /… operation, or bundled inline as an MCP tool's inputSchema. Formerly JSON Query Language.
OpenPredicate (v0.6)
OpenPredicate is one self-contained JSON Schema draft 2020-12 document that defines a predicate language — a filter that decides whether a record matches, and nothing more. That narrowness is the design: projection, ordering and pagination differ per API, and the filter does not, which is what lets a single grammar be reused across every search endpoint in an estate.
It exists because RFC 10008 standardized the HTTP QUERY method — a read that carries a body — and then deliberately declined to define a query language for that body, leaving the slot open. This is one answer to it.
Two things make it usable from a contract rather than from prose. It can be $ref‘d from an OpenAPI
document at any POST /…/search or QUERY /… operation. And because it is one file with no remote
dependencies, it can be bundled inline as an MCP tool’s inputSchema, which is the only option there —
a model handed a tool definition does not fetch a remote $ref. That moves a search contract from a
query: string parameter with instructions in the description into something a validator enforces.
Operators are grouped into conformance profiles (core, strings, regex, ranges, types,
collections, refs, text) so a backend that cannot execute a clause rejects it rather than ignoring
it — silent widening of a result set being the worst failure a filter has. Semantics are three-valued like
SQL, and the specification documents the traps rather than leaving them to be discovered.
Catalogued in the standards catalog as JSON Query Language, under the name it carried when it was first written up. The project renamed to OpenPredicate in September 2026 and moved to its own GitHub organization; the schema here was fetched from the current repository on 2026-09-18.
Schema