{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/neruva-io/json-schema/neruva-io-model-belief-add-request-schema.json",
  "title": "ModelBeliefAddRequest",
  "x-generated": "2026-10-29",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/neruva-io-openapi.json#/components/schemas/ModelBeliefAddRequest",
  "properties": {
    "tenant_id": {
      "type": "string",
      "title": "Tenant Id",
      "default": "default"
    },
    "namespace": {
      "type": "string",
      "title": "Namespace",
      "default": "tom"
    },
    "chain": {
      "items": {
        "type": "integer"
      },
      "type": "array",
      "title": "Chain",
      "description": "Outer-to-inner person indices"
    },
    "prop": {
      "type": "integer",
      "title": "Prop"
    },
    "val": {
      "type": "integer",
      "title": "Val"
    },
    "n_people": {
      "type": "integer",
      "title": "N People",
      "default": 10
    },
    "n_props": {
      "type": "integer",
      "title": "N Props",
      "default": 50
    },
    "n_vals": {
      "type": "integer",
      "title": "N Vals",
      "default": 20
    },
    "chain_names": {
      "anyOf": [
        {
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "title": "Chain Names",
      "description": "Text labels for chain[] persons. Populates the tom_persons entity registry so agent_recall can resolve a natural-language query like 'what does Kai think about X' to this belief without callers needing to know atom ids."
    },
    "prop_name": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "title": "Prop Name",
      "description": "Text label for `prop`. Populates tom_props registry."
    },
    "max_depth": {
      "type": "integer",
      "title": "Max Depth",
      "description": "Codebook ceiling for nested-belief chains. Effectively unlimited (1024) since v0.5.4 after the position-tagging bug fix made every chain index non-commutative. Depth has zero SNR cost; per-holder density follows a 1/sqrt(N) law that's auto-normalized at query time. Inner-position swaps now correctly reject -- A->B->C is distinct from A->C->B at any chain length (verified depth 50).",
      "default": 1024
    },
    "seed": {
      "type": "integer",
      "title": "Seed",
      "default": 2048
    }
  },
  "type": "object",
  "required": [
    "chain",
    "prop",
    "val"
  ]
}