{
    "$defs": {
        "FunctionToolDefinition": {
            "additionalProperties": true,
            "description": "Represents a tool definition in the form of a function.",
            "properties": {
                "type": {
                    "const": "function",
                    "description": "The type of the tool.",
                    "title": "Type",
                    "type": "string"
                },
                "name": {
                    "description": "The name of the tool.",
                    "title": "Name",
                    "type": "string"
                },
                "description": {
                    "anyOf": [
                        {
                            "type": "string"
                        },
                        {
                            "type": "null"
                        }
                    ],
                    "default": null,
                    "description": "The description of the tool. Since this attribute could be large, it's NOT RECOMMENDED to be populated by default. Instrumentations MAY provide a way to enable populating this property.",
                    "title": "Description"
                },
                "parameters": {
                    "anyOf": [
                        {
                            "$ref": "http://json-schema.org/draft-07/schema#"
                        },
                        {
                            "type": "null"
                        }
                    ],
                    "default": null,
                    "description": "JSON Schema document describing the parameters accepted by the tool. The value MUST conform to JSON Schema draft-07. Since this attribute could be large, it's NOT RECOMMENDED to be populated by default. Instrumentations MAY provide a way to enable populating this property.",
                    "title": "Parameters"
                }
            },
            "required": [
                "type",
                "name"
            ],
            "title": "FunctionToolDefinition",
            "type": "object"
        },
        "GenericToolDefinition": {
            "additionalProperties": true,
            "description": "Represents a tool definition in any form.",
            "properties": {
                "type": {
                    "description": "The type of the tool.",
                    "title": "Type",
                    "type": "string"
                },
                "name": {
                    "description": "The name of the tool.",
                    "title": "Name",
                    "type": "string"
                }
            },
            "required": [
                "type",
                "name"
            ],
            "title": "GenericToolDefinition",
            "type": "object"
        }
    },
    "description": "Represents the list of tool definitions available to the GenAI agent or model.",
    "items": {
        "anyOf": [
            {
                "$ref": "#/$defs/FunctionToolDefinition"
            },
            {
                "$ref": "#/$defs/GenericToolDefinition"
            }
        ]
    },
    "title": "ToolDefinitions",
    "type": "array"
}
