{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://artifacts.apis.io/kagura-ai-com/json-schema/kagura-ai-com-plan-tier-feature-schema.json",
  "title": "PlanTierFeature",
  "description": "One tier's curated feature/limit values for the comparison matrix (#1138).\n\nSingle source of truth = ``config/plan_tiers.py`` (env-overridable). Price is\nintentionally omitted — pricing lives in www / the payment service; this\nsurface is feature *limits* only, so the OSS Plan page never fabricates an\namount (consistent with #1141 / #1096). Numeric fields use ``0`` for \"not\navailable on this tier\"; the frontend renders that as ✗.",
  "x-generated": "2026-11-13",
  "x-method": "derived",
  "x-generator": "derive-json-schema.py",
  "x-source": "openapi/kagura-ai-com-openapi.json#/components/schemas/PlanTierFeature",
  "properties": {
    "name": {
      "type": "string",
      "title": "Name"
    },
    "display_name": {
      "type": "string",
      "title": "Display Name"
    },
    "max_contexts": {
      "type": "integer",
      "title": "Max Contexts"
    },
    "max_members": {
      "type": "integer",
      "title": "Max Members"
    },
    "owned_workspaces": {
      "type": "integer",
      "title": "Owned Workspaces"
    },
    "memory_limit": {
      "type": "integer",
      "title": "Memory Limit"
    },
    "memories_per_day": {
      "type": "integer",
      "title": "Memories Per Day"
    },
    "storage_limit_bytes": {
      "type": "integer",
      "title": "Storage Limit Bytes"
    },
    "mcp_calls_per_day": {
      "type": "integer",
      "title": "Mcp Calls Per Day"
    },
    "rest_calls_per_day": {
      "type": "integer",
      "title": "Rest Calls Per Day"
    },
    "public_calls_per_day": {
      "type": "integer",
      "title": "Public Calls Per Day"
    },
    "max_resource_tokens": {
      "type": "integer",
      "title": "Max Resource Tokens"
    },
    "max_connectors": {
      "type": "integer",
      "title": "Max Connectors"
    },
    "max_content_chunk_contexts": {
      "type": "integer",
      "title": "Max Content Chunk Contexts"
    },
    "max_llm_selector_contexts": {
      "type": "integer",
      "title": "Max Llm Selector Contexts"
    },
    "analysis_runs_per_day": {
      "type": "integer",
      "title": "Analysis Runs Per Day"
    },
    "sleep_enabled_contexts_limit": {
      "type": "integer",
      "title": "Sleep Enabled Contexts Limit"
    },
    "reranking": {
      "type": "boolean",
      "title": "Reranking"
    },
    "managed_embeddings": {
      "type": "boolean",
      "title": "Managed Embeddings"
    },
    "managed_llm": {
      "type": "boolean",
      "title": "Managed Llm"
    },
    "secret_store": {
      "type": "boolean",
      "title": "Secret Store"
    },
    "shared_contexts": {
      "type": "boolean",
      "title": "Shared Contexts"
    },
    "team_invitations": {
      "type": "boolean",
      "title": "Team Invitations"
    },
    "resources": {
      "type": "boolean",
      "title": "Resources"
    },
    "connectors": {
      "type": "boolean",
      "title": "Connectors"
    },
    "public_contexts": {
      "type": "boolean",
      "title": "Public Contexts"
    },
    "content_chunks": {
      "type": "boolean",
      "title": "Content Chunks"
    },
    "llm_selector": {
      "type": "boolean",
      "title": "Llm Selector"
    },
    "operation_history": {
      "type": "boolean",
      "title": "Operation History",
      "default": false
    },
    "feature_enforcement": {
      "additionalProperties": {
        "type": "string"
      },
      "type": "object",
      "title": "Feature Enforcement"
    }
  },
  "type": "object",
  "required": [
    "name",
    "display_name",
    "max_contexts",
    "max_members",
    "owned_workspaces",
    "memory_limit",
    "memories_per_day",
    "storage_limit_bytes",
    "mcp_calls_per_day",
    "rest_calls_per_day",
    "public_calls_per_day",
    "max_resource_tokens",
    "max_connectors",
    "max_content_chunk_contexts",
    "max_llm_selector_contexts",
    "analysis_runs_per_day",
    "sleep_enabled_contexts_limit",
    "reranking",
    "managed_embeddings",
    "managed_llm",
    "secret_store",
    "shared_contexts",
    "team_invitations",
    "resources",
    "connectors",
    "public_contexts",
    "content_chunks",
    "llm_selector",
    "feature_enforcement"
  ]
}