{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/kagura-ai-com/json-schema/kagura-ai-com-context-search-config-response-schema.json",
  "title": "ContextSearchConfigResponse",
  "description": "Response schema for context search configuration.\n\nIssue #130: Context-scoped Search & Reranker Settings\nIssue #146: Added immutable embedding configuration fields\nIssue #160: Renamed from Project to Context",
  "x-generated": "2026-11-13",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/kagura-ai-com-openapi.json#/components/schemas/ContextSearchConfigResponse",
  "properties": {
    "context_id": {
      "title": "Context Id"
    },
    "semantic_weight": {
      "title": "Semantic Weight",
      "description": "Semantic search weight (0.0-1.0)"
    },
    "bm25_weight": {
      "title": "Bm25 Weight",
      "description": "BM25 keyword search weight (0.0-1.0)"
    },
    "fetch_factor": {
      "title": "Fetch Factor",
      "description": "Candidate retrieval multiplier (1-10)"
    },
    "use_rerank": {
      "title": "Use Rerank",
      "description": "Enable/disable reranking"
    },
    "reranker_provider": {
      "title": "Reranker Provider",
      "description": "Reranker provider (voyage/cohere)"
    },
    "reranker_model": {
      "title": "Reranker Model",
      "description": "Provider-specific model name"
    },
    "embedding_model": {
      "title": "Embedding Model",
      "description": "Embedding model (immutable)"
    },
    "embedding_dimensions": {
      "title": "Embedding Dimensions",
      "description": "Vector dimensions (immutable)"
    },
    "reinforce_enabled": {
      "title": "Reinforce Enabled",
      "description": "Bounded adoption+feedback recall re-rank enabled"
    },
    "reinforce_max_boost": {
      "title": "Reinforce Max Boost",
      "description": "Bound on the reinforce adjustment (factor in [1-b, 1+b])"
    },
    "reinforce_require_host_arbitration": {
      "title": "Reinforce Require Host Arbitration",
      "description": "Count only host-arbitrated (provenance='host') feedback"
    },
    "routing_mode": {
      "title": "Routing Mode",
      "description": "Query-intent router: off | log_only (telemetry only) | active (opt-in)"
    },
    "content_chunks_enabled": {
      "title": "Content Chunks Enabled",
      "description": "Embed long content as chunk vectors for dense retrieval"
    },
    "content_chunks_can_change": {
      "title": "Content Chunks Can Change",
      "description": "Whether the caller may change content_chunks_enabled: the context owner or a workspace owner/admin, and, to turn it on, a vector store that keeps chunk vectors and (where gated by plan) the plan's feature and a free slot under its cap (#2103). Turning it off is always allowed"
    },
    "content_chunks_supported": {
      "title": "Content Chunks Supported",
      "description": "Whether the vector store keeps content chunk vectors (false on LanceDB)"
    },
    "embedding_provider": {
      "title": "Embedding Provider",
      "description": "Provider of the context's embedding model (openai / self_hosted): where memory content goes when content_chunks_enabled is on"
    },
    "content_chunks_backfill_pending": {
      "title": "Content Chunks Backfill Pending",
      "description": "Long memories (1,500+ characters) still waiting for their chunk vectors, e.g. the existing memories queued when the flag was turned on; 0 while it is off"
    },
    "content_chunks_effective": {
      "title": "Content Chunks Effective",
      "description": "Whether the context's content chunk vectors are read and written: content_chunks_enabled on, a vector store that keeps them, and, where the deployment gates them by plan (CONTENT_CHUNKS_REQUIRE_PLAN), a plan with the content_chunks feature on which this context is among the earliest-enabled max_content_chunk_contexts. An inactive context keeps the chunk vectors of unchanged memories; memories written or edited meanwhile get chunks only on their next edit or re-embed (nothing is re-queued when it becomes active again)"
    },
    "content_chunks_limit": {
      "title": "Content Chunks Limit",
      "description": "The workspace plan's max_content_chunk_contexts (0 without the content_chunks feature); null when the deployment does not gate content chunks by plan"
    },
    "content_chunks_in_use": {
      "title": "Content Chunks In Use",
      "description": "Live contexts of the workspace with content_chunks_enabled on, this one included when it is on"
    },
    "content_chunks_disabled_reason": {
      "title": "Content Chunks Disabled Reason",
      "description": "Why the toggle cannot be turned on (flag off) or why the chunks are inactive (flag on): unsupported (LanceDB), plan (the plan lacks content_chunks), cap (max_content_chunk_contexts reached), or permission (nothing else blocks, but only the context owner or a workspace owner/admin may change it); null when nothing blocks"
    },
    "llm_selector_enabled": {
      "title": "Llm Selector Enabled",
      "description": "Recall LLM selector opt-in: an MCP recall may send this context's summaries and attached content to the deployment's judge model, which keeps the results that answer the query and cuts their content to verbatim passages"
    },
    "llm_selector_effective": {
      "title": "Llm Selector Effective",
      "description": "Whether recall acts on llm_selector_enabled: on, and, where the deployment gates it by plan (LLM_SELECTOR_REQUIRE_PLAN), a plan with the llm_selector feature on which this context is among the earliest-enabled max_llm_selector_contexts"
    },
    "llm_selector_limit": {
      "title": "Llm Selector Limit",
      "description": "The workspace plan's max_llm_selector_contexts (0 without the llm_selector feature); null when the deployment does not gate the selector by plan"
    },
    "llm_selector_in_use": {
      "title": "Llm Selector In Use",
      "description": "Live contexts of the workspace with llm_selector_enabled on, this one included when it is on"
    },
    "llm_selector_disabled_reason": {
      "title": "Llm Selector Disabled Reason",
      "description": "Why the toggle cannot be turned on (flag off) or why the selector is inactive (flag on): plan (the plan lacks llm_selector), cap (max_llm_selector_contexts reached), or permission (nothing else blocks, but only the context owner or a workspace owner/admin may change it); null when nothing blocks"
    },
    "llm_selector_can_change": {
      "title": "Llm Selector Can Change",
      "description": "Whether the caller may change llm_selector_enabled: the context owner or a workspace owner/admin, and, to turn it on where gated by plan, the plan's feature and a free slot under its cap. Turning it off is always allowed"
    },
    "created_at": {
      "title": "Created At"
    },
    "updated_at": {
      "title": "Updated At"
    }
  },
  "type": "object",
  "required": [
    "context_id",
    "semantic_weight",
    "bm25_weight",
    "fetch_factor",
    "use_rerank",
    "reranker_provider",
    "reranker_model",
    "embedding_model",
    "embedding_dimensions",
    "created_at",
    "updated_at"
  ]
}