Entry format

The canonical JSON shape of a MARS registry entry.

{
  "entryDid":     "did:oas:l1fe:agent:web-research@3.4.0",
  "entryType":    "agent",
  "version":      "3.4.0",
  "publisherDid": "did:oas:l1fe:hmr:jared-rice",
  "publishedAt":  "2026-04-26T15:00:00Z",
  "description":  "Autonomous research agent with arxiv + web grounding.",
  "homepage":     "https://reggie.ml/p/l1fe/agent/web-research",
  "repository":   "https://github.com/l1fe/web-research",
  "license":      "Apache-2.0",
  "tags":         ["research", "rag", "web"],
  "relationships": [
    { "type": "depends-on", "targetDid": "did:oas:l1fe:tool:http-fetcher@2" }
  ],
  "data": {
    "manifest": { "kind": "agent", "anvilContracts": ["identity","capability","tool","health"] }
  },
  "contentHash": "sha256:0ff4f9c2a91b88dcb71d4f4f6e2a9e83…",
  "bondAmount":  "5 MINTS",
  "bondTier":    2,
  "sequence":    1084221,
  "signature":   "ed25519:6ZbT…"
}

Required fields

entryDid, entryType, version, publisherDid, publishedAt, contentHash, signature.

Canonicalization

Before signing, the entry (without signature) is canonicalized via JSON Canonicalization Scheme (JCS, RFC 8785). The signature covers the canonicalized bytes, ensuring that any byte-equivalent representation produces the same signature.

Field-level constraints

Field Constraint
entryDid MUST match did:oas:<ns>:<kind>:<name>(@<semver>)?
entryType One of the eleven OAS entity kinds
version Semver (semver.org), monotonically increasing
publishedAt RFC 3339 UTC timestamp
contentHash sha256: followed by lowercase hex (64 chars)
bondAmount <integer>(.<integer>)?\s*MINTS
signature ed25519: followed by base64-encoded 64-byte signature