llmo.json document. The raw schema is published at:
https://llmo.org/spec/v0.1/schema.json
The schema’s $id is https://llmo.org/spec/v0.1/schema.json. Tools that fetch schemas by $id will resolve to that URL.
What the schema validates
- Presence and types of required top-level fields (
llmo_version,entity,claims,valid_from,valid_until,document_id). - Constant value of
llmo_version("0.1"). - Shape of the
entityobject, including regex constraints onprimary_domain,aliases, and well-knownexternal_ids(Wikidata QID, DUNS, LEI, DID). - Shape of each claim object.
- Shape of the
statementpayload for each of the eight core claim types (identity,canonical_urls,official_channels,product_facts,personnel,disavowal,supersedes,pointer), applied via conditionalallOf/if/thenconstructs. - Shape of the optional
signatureobject on both documents and claims. - Pattern constraints on identifier strings and domain literals.
What the schema does not validate
The JSON Schema is a structural check only. It does not validate the following conformance-level concerns, which are the validator’s responsibility (see spec §5):- That
valid_untilis within 365 days ofvalid_from. - That
entity.primary_domainmatches the domain serving the file. - That URLs inside claims resolve to the entity’s primary domain or declared aliases.
- That a signed document’s JWS verifies against the JWKS at
/.well-known/llmo-keys.json. - That RFC 8785 (JCS) canonicalization of the signed payload reproduces the signed bytes.
- That the document is actually served at
/.well-known/llmo.jsonover HTTPS. - That
supersedesreferences priordocument_idvalues that existed.
Using the schema
Common usage patterns:- JavaScript / TypeScript. Use ajv with the 2020-12 meta-schema enabled (
new Ajv2020()). Load the schema withajv.addSchema(schema, '...')or pass directly toajv.compile(schema). - Python. Use
jsonschemawithDraft202012Validator. Wrap the document withvalidator.validate(document). - Go. Use
santhosh-tekuri/jsonschema/v5or similar; both support draft 2020-12. - Editor integration. Many JSON editors (VS Code, JetBrains) will autocomplete against the schema if the document declares
"$schema": "https://llmo.org/spec/v0.1/schema.json"at the top, or if the editor is configured to associate the schema with files matchingllmo.json.
llmo.json files do not include a $schema field in the protocol itself, because the binding is by file name and discovery path rather than by in-document declaration. Tools that want schema-driven autocomplete while authoring may add one locally, but it is not part of the published document.
Download
- Raw JSON: /spec/v0.1/schema.json
- Canonical
$id:https://llmo.org/spec/v0.1/schema.json

