{
  "contract_version": "v1",
  "toolchain_id": "rad-nlp-research",
  "status": "ready",
  "observed_at": "2026-09-07T10:34:09.871672039Z",
  "services": {
    "linguistics": {
      "contract_version": "v1",
      "service": {
        "id": "linguistics",
        "version": "0.1.0",
        "started_at": "2026-09-07T10:33:52.635795Z"
      },
      "status": "ready",
      "components": [
        {
          "id": "python",
          "kind": "runtime",
          "version": "3.13.5",
          "identity": "python:3.13.5"
        },
        {
          "id": "stanza",
          "kind": "tool",
          "version": "1.14.0",
          "identity": "stanza:1.14.0"
        },
        {
          "id": "torch",
          "kind": "runtime",
          "version": "2.14.0+cu130",
          "identity": "torch:2.14.0+cu130:cpu"
        },
        {
          "id": "stanza-models-en-default",
          "kind": "knowledge_resource",
          "version": "1.14.0",
          "identity": "sha256:4e41c1df152146fa26ed0c006a08feea7a60bb3414bb6d57dbda24ad2e3cb99c"
        },
        {
          "id": "grew",
          "kind": "tool",
          "version": "1.21.0",
          "identity": "git:4d810ad97e5d8bc93205c778c344ffa8c16ae393"
        },
        {
          "id": "grewpy",
          "kind": "adapter",
          "version": "0.7.1",
          "identity": "grewpy:0.7.1"
        },
        {
          "id": "grewpy-backend",
          "kind": "tool",
          "version": "0.6.2",
          "identity": "grewpy-backend:0.6.2"
        },
        {
          "id": "ucxn-english-rules",
          "kind": "knowledge_resource",
          "version": "ae39b3a26187490c41ec1ed9b0888487e9021dea",
          "identity": "sha256:9d7caf1793a249c42979b6732681e1c6df1e4b43dff9fa96e11e226bcf407d4d"
        },
        {
          "id": "ucxn-adapter",
          "kind": "adapter",
          "version": "ae39b3a26187490c41ec1ed9b0888487e9021dea",
          "identity": "sha256:42977e291397556447c7c0566c8d8a0b88eb90d93028e0ae62c9b9e9f4e5715d"
        },
        {
          "id": "mocca-cc-database",
          "kind": "knowledge_resource",
          "version": "1.0@git:f4783f85b8e49ac53e52663e83321cdb1c49e4ac",
          "identity": "sha256:c8de6c1b9984ac782da93a617f985ee127b8497a283f028403c25e8c6dcb62ad"
        },
        {
          "id": "framenet-1.7",
          "kind": "knowledge_resource",
          "version": "1.7",
          "identity": "sha256:c64337db8ebadddf7b2ccbf876c3a29599e9b7fc9600784c2b254e31cf5f910f"
        },
        {
          "id": "radnlp-constructicon",
          "kind": "knowledge_resource",
          "version": "linguistic.poc.v1",
          "identity": "sha256:c73c8f07182e2052779f9b69feb144cc8beb82b03889e01cb4402cccce42e81f"
        }
      ],
      "capabilities": [
        {
          "id": "stanza.parse",
          "method": "POST",
          "path": "/v1/stanza/parse"
        },
        {
          "id": "grew.transform",
          "method": "POST",
          "path": "/v1/grew/transform"
        },
        {
          "id": "ucxn.annotate",
          "method": "POST",
          "path": "/v1/ucxn/annotate"
        },
        {
          "id": "mocca.search",
          "method": "POST",
          "path": "/v1/mocca/search"
        },
        {
          "id": "mocca.concept",
          "method": "GET",
          "path": "/v1/mocca/concepts/{id}"
        },
        {
          "id": "framenet.frame",
          "method": "GET",
          "path": "/v1/framenet/frames/{name}"
        },
        {
          "id": "framenet.lexical-unit-search",
          "method": "POST",
          "path": "/v1/framenet/lexical-units/search"
        },
        {
          "id": "linguistics.analyze",
          "method": "POST",
          "path": "/v1/linguistics/analyze"
        }
      ],
      "diagnostics": []
    },
    "prolog": {
      "contract_version": "v1",
      "service": {
        "id": "prolog",
        "version": "0.1.0",
        "started_at": "2026-09-07T10:33:49.144Z"
      },
      "status": "ready",
      "components": [
        {
          "id": "swi-prolog",
          "kind": "runtime",
          "version": "9.2.9",
          "identity": "9.2.9"
        },
        {
          "id": "radlex-runtime-bundle",
          "kind": "tool",
          "version": "0.1.0",
          "identity": "sha256:cf0fe6c9151336b4a2bb1134b0482c90d92803b82c4957fc15128b5f947eb840"
        },
        {
          "id": "radlex-ontology",
          "kind": "knowledge_resource",
          "version": "4.3",
          "identity": "sha256:b13aac45f6f9bd74428c976cb018b86aeb7a248683917cfd9ffea253b63b29b1"
        },
        {
          "id": "radnlp-semantic-rules",
          "kind": "knowledge_resource",
          "version": "semantic.poc.v1",
          "identity": "sha256:570e478c2b8710f990713609f5284aa034dd08cf6a1215bec99bb7cf912ec214"
        }
      ],
      "capabilities": [
        {
          "id": "conllu.inspect",
          "method": "POST",
          "path": "/v1/conllu/inspect"
        },
        {
          "id": "radlex.ground",
          "method": "POST",
          "path": "/v1/radlex/ground"
        },
        {
          "id": "radlex.class",
          "method": "GET",
          "path": "/v1/radlex/classes/{rid}"
        },
        {
          "id": "radlex.context",
          "method": "GET",
          "path": "/v1/radlex/classes/{rid}/context"
        },
        {
          "id": "semantics.interpret",
          "method": "POST",
          "path": "/v1/semantics/interpret"
        }
      ],
      "diagnostics": []
    }
  },
  "diagnostics": []
}