{
  "$defs": {
    "ChannelConfig": {
      "additionalProperties": true,
      "description": "A single channel entry from the ``channels:`` block of integrations.yml.",
      "properties": {
        "enabled": {
          "default": true,
          "title": "Enabled",
          "type": "boolean"
        }
      },
      "title": "ChannelConfig",
      "type": "object"
    },
    "JaegerTracingSettings": {
      "additionalProperties": false,
      "description": "Jaeger settings for the ``tracing:`` section of ``integrations.yml``.\n\n``host`` and ``port`` are optional. The Jaeger configurer applies its own\ndefaults when they are omitted (``localhost`` and ``4317``). Credentials\nrequire an explicit ``insecure`` choice so they are never sent in\nplaintext by default.",
      "properties": {
        "host": {
          "anyOf": [
            {
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Host"
        },
        "insecure": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Insecure"
        },
        "password": {
          "anyOf": [
            {
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Password"
        },
        "port": {
          "anyOf": [
            {
              "exclusiveMinimum": 0,
              "maximum": 65535,
              "type": "integer"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Port"
        },
        "root_certificates": {
          "anyOf": [
            {
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Root Certificates"
        },
        "service_name": {
          "anyOf": [
            {
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Service Name"
        },
        "sync_export": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Sync Export"
        },
        "type": {
          "const": "jaeger",
          "title": "Type",
          "type": "string"
        },
        "username": {
          "anyOf": [
            {
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Username"
        }
      },
      "required": [
        "type"
      ],
      "title": "JaegerTracingSettings",
      "type": "object"
    },
    "KnowledgeStoreConfig": {
      "additionalProperties": false,
      "description": "Config for one searchable knowledge store from ``knowledge_stores:``.\n\nA store the agent can retrieve from via the built-in ``search_knowledge``\ntool. ``type`` selects the vector-store backend (reusing the existing\n:mod:`rasa.core.information_retrieval` backends); ``embeddings`` names a\nmodel group resolved from the packaged snapshot so query vectors match the\nindex built at train time. ``top_k`` bounds how many snippets a query\nreturns; ``namespace`` is an optional provider-specific collection/section\nselector.",
      "properties": {
        "embeddings": {
          "minLength": 1,
          "title": "Embeddings",
          "type": "string"
        },
        "id": {
          "minLength": 1,
          "title": "Id",
          "type": "string"
        },
        "namespace": {
          "anyOf": [
            {
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Namespace"
        },
        "top_k": {
          "default": 4,
          "exclusiveMinimum": 0,
          "title": "Top K",
          "type": "integer"
        },
        "type": {
          "enum": [
            "qdrant",
            "milvus",
            "faiss"
          ],
          "title": "Type",
          "type": "string"
        }
      },
      "required": [
        "id",
        "type",
        "embeddings"
      ],
      "title": "KnowledgeStoreConfig",
      "type": "object"
    },
    "LangfuseTracingSettings": {
      "additionalProperties": true,
      "description": "The ``tracing:`` section of ``integrations.yml`` for Langfuse.\n\nMirrors the Langfuse block historically authored under ``endpoints.yml``.\nRequired keys match :mod:`rasa.tracing.langfuse_config`; optional Langfuse\nknobs (``timeout``, ``debug``, ``environment``, \u2026) are passed through via\n``extra=\"allow\"`` so the apply path can set the corresponding env vars.",
      "properties": {
        "host": {
          "minLength": 1,
          "title": "Host",
          "type": "string"
        },
        "private_key": {
          "minLength": 1,
          "title": "Private Key",
          "type": "string"
        },
        "public_key": {
          "minLength": 1,
          "title": "Public Key",
          "type": "string"
        },
        "type": {
          "minLength": 1,
          "title": "Type",
          "type": "string"
        }
      },
      "required": [
        "type",
        "public_key",
        "private_key",
        "host"
      ],
      "title": "LangfuseTracingSettings",
      "type": "object"
    },
    "MCPFromSlotsEntry": {
      "description": "One mapping from a slot to an _meta key (sent during MCP tool calls).",
      "properties": {
        "param": {
          "description": "Key in _meta sent to the MCP server.",
          "title": "Param",
          "type": "string"
        },
        "slot": {
          "description": "Slot name to read from (tracker or agent input).",
          "title": "Slot",
          "type": "string"
        }
      },
      "required": [
        "slot",
        "param"
      ],
      "title": "MCPFromSlotsEntry",
      "type": "object"
    },
    "MCPMetaMapConfig": {
      "description": "Configuration for injecting metadata into MCP tool call _meta parameter.\n\nValues are sent to the MCP server in the _meta field of tools/call requests\nand are not visible to the LLM. Use for user context, auth, or API versioning.\n\n- from_slots: runtime values from tracker/agent slots (keyed by param).\n- static: fixed key-value pairs always sent in _meta (e.g. api_version, source).",
      "properties": {
        "from_slots": {
          "anyOf": [
            {
              "items": {
                "$ref": "#/$defs/MCPFromSlotsEntry"
              },
              "type": "array"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "List of {slot, param} mappings. Slot value is read fromtracker/agent input and sent as _meta[param].",
          "title": "From Slots"
        },
        "static": {
          "anyOf": [
            {
              "additionalProperties": {
                "type": "string"
              },
              "type": "object"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Fixed key-value pairs always sent in _meta (e.g. api_version, source).",
          "title": "Static"
        }
      },
      "title": "MCPMetaMapConfig",
      "type": "object"
    },
    "MCPServerSpec": {
      "description": "One MCP tool server from ``integrations.yml``.\n\nA named record. Extra keys fold into ``additional_params``. ``type`` is\ninferred from the URL when omitted. ``tool_timeout`` is its own field.\n``pre_call_hook`` and ``meta_map.from_slots`` are rejected.",
      "properties": {
        "additional_params": {
          "additionalProperties": true,
          "description": "Auth and extra transport parameters for the MCP server.",
          "title": "Additional Params",
          "type": "object"
        },
        "meta_map": {
          "anyOf": [
            {
              "$ref": "#/$defs/MCPMetaMapConfig"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Optional static _meta sent with MCP tool calls."
        },
        "name": {
          "description": "The name of the MCP server. Same charset as ``mcp/<name>:<tool>`` imports: letters, digits, ``_``, ``.``, and ``-``.",
          "minLength": 1,
          "pattern": "^[A-Za-z0-9][A-Za-z0-9_.-]*$",
          "title": "Name",
          "type": "string"
        },
        "tool_timeout": {
          "anyOf": [
            {
              "exclusiveMinimum": 0,
              "type": "number"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "description": "Per-call timeout in seconds for tools on this server.",
          "title": "Tool Timeout"
        },
        "type": {
          "default": "http",
          "description": "The type of the MCP server (``http`` or ``https``).",
          "title": "Type",
          "type": "string"
        },
        "url": {
          "description": "The URL of the MCP server.",
          "title": "Url",
          "type": "string"
        }
      },
      "required": [
        "name",
        "url"
      ],
      "title": "MCPServerSpec",
      "type": "object"
    },
    "OtlpCollectorSettings": {
      "additionalProperties": false,
      "description": "OTLP collector settings for ``tracing:`` or ``metrics:``.\n\nField names match the endpoints block the OTLP configurers already read\n(``endpoint``, ``insecure``, ``root_certificates``, ``service_name``).",
      "properties": {
        "endpoint": {
          "minLength": 1,
          "title": "Endpoint",
          "type": "string"
        },
        "insecure": {
          "anyOf": [
            {
              "type": "boolean"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Insecure"
        },
        "root_certificates": {
          "anyOf": [
            {
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Root Certificates"
        },
        "service_name": {
          "anyOf": [
            {
              "minLength": 1,
              "type": "string"
            },
            {
              "type": "null"
            }
          ],
          "default": null,
          "title": "Service Name"
        },
        "type": {
          "const": "otlp",
          "title": "Type",
          "type": "string"
        }
      },
      "required": [
        "type",
        "endpoint"
      ],
      "title": "OtlpCollectorSettings",
      "type": "object"
    }
  },
  "additionalProperties": false,
  "description": "Authoring shape of ``integrations.yml``.\n\n``model_groups`` stays a list of mappings; the orchestrator names its group\nin ``agent.yml``, so there is no ``llm:`` key. Channel entries allow\nchannel-specific keys. ``tracing`` is one tracer or a list of tracers.\n``metrics`` is an OTLP collector.",
  "properties": {
    "channels": {
      "additionalProperties": {
        "anyOf": [
          {
            "$ref": "#/$defs/ChannelConfig"
          },
          {
            "type": "null"
          }
        ]
      },
      "title": "Channels",
      "type": "object"
    },
    "knowledge_stores": {
      "items": {
        "$ref": "#/$defs/KnowledgeStoreConfig"
      },
      "title": "Knowledge Stores",
      "type": "array"
    },
    "mcp_servers": {
      "items": {
        "$ref": "#/$defs/MCPServerSpec"
      },
      "title": "Mcp Servers",
      "type": "array"
    },
    "metrics": {
      "anyOf": [
        {
          "$ref": "#/$defs/OtlpCollectorSettings"
        },
        {
          "type": "null"
        }
      ],
      "default": null
    },
    "model_groups": {
      "items": {
        "additionalProperties": true,
        "type": "object"
      },
      "title": "Model Groups",
      "type": "array"
    },
    "tracing": {
      "anyOf": [
        {
          "$ref": "#/$defs/LangfuseTracingSettings"
        },
        {
          "$ref": "#/$defs/OtlpCollectorSettings"
        },
        {
          "$ref": "#/$defs/JaegerTracingSettings"
        },
        {
          "items": {
            "anyOf": [
              {
                "$ref": "#/$defs/LangfuseTracingSettings"
              },
              {
                "$ref": "#/$defs/OtlpCollectorSettings"
              },
              {
                "$ref": "#/$defs/JaegerTracingSettings"
              }
            ]
          },
          "type": "array"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Tracing"
    }
  },
  "title": "integrations.yml",
  "type": "object"
}
