{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://vision-analyzer.org/schemas/config-schema.json",
  "title": "Vision Analyzer Configuration Schema",
  "description": "JSON Schema for Vision Analyzer MCP Server configuration file",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "version",
    "current_provider_model",
    "providers"
  ],
  "properties": {
    "version": {
      "$id": "#/properties/version",
      "type": "string",
      "title": "Configuration Version",
      "description": "Version of the configuration file format",
      "pattern": "^\\d+\\.\\d+\\.\\d+$",
      "examples": ["1.0.0", "1.2.11"]
    },
    "current_provider_model": {
      "$id": "#/properties/current_provider_model",
      "type": "string",
      "title": "Current Provider Model",
      "description": "Identifier of the currently active provider-model combination",
      "minLength": 1,
      "examples": ["tencent-hunyuan-vision", "openai-gpt-4-vision"]
    },
    "providers": {
      "$id": "#/properties/providers",
      "type": "object",
      "title": "Provider Configurations",
      "description": "Configuration for each available provider",
      "minProperties": 1,
      "patternProperties": {
        "^[a-zA-Z][a-zA-Z0-9_-]*$": {
          "$ref": "#/definitions/provider"
        }
      },
      "additionalProperties": false
    },
    "http_server": {
      "$id": "#/properties/http_server",
      "type": "object",
      "title": "HTTP Server Configuration",
      "description": "Configuration for the built-in HTTP server",
      "additionalProperties": false,
      "properties": {
        "port": {
          "$id": "#/properties/http_server/properties/port",
          "type": "integer",
          "title": "Server Port",
          "description": "Port number for the HTTP server",
          "minimum": 1024,
          "maximum": 65535,
          "default": 3000,
          "examples": [3000, 8080, 9000]
        },
        "auto_start": {
          "$id": "#/properties/http_server/properties/auto_start",
          "type": "boolean",
          "title": "Auto Start Server",
          "description": "Whether to automatically start the HTTP server when the MCP server starts",
          "default": true
        },
        "host": {
          "$id": "#/properties/http_server/properties/host",
          "type": "string",
          "title": "Server Host",
          "description": "Host address for the HTTP server",
          "default": "localhost",
          "examples": ["localhost", "127.0.0.1", "0.0.0.0"]
        },
        "cors": {
          "$id": "#/properties/http_server/properties/cors",
          "type": "object",
          "title": "CORS Configuration",
          "description": "Cross-Origin Resource Sharing configuration",
          "additionalProperties": false,
          "properties": {
            "enabled": {
              "type": "boolean",
              "default": true
            },
            "origins": {
              "type": "array",
              "items": {
                "type": "string"
              },
              "default": ["*"]
            }
          }
        }
      }
    },
    "logging": {
      "$id": "#/properties/logging",
      "type": "object",
      "title": "Logging Configuration",
      "description": "Configuration for the logging system",
      "additionalProperties": false,
      "properties": {
        "level": {
          "$id": "#/properties/logging/properties/level",
          "type": "string",
          "title": "Log Level",
          "description": "Minimum log level to output",
          "enum": ["error", "warn", "info", "debug"],
          "default": "info"
        },
        "retention_days": {
          "$id": "#/properties/logging/properties/retention_days",
          "type": "integer",
          "title": "Log Retention Days",
          "description": "Number of days to retain log files",
          "minimum": 1,
          "maximum": 365,
          "default": 30
        },
        "max_file_size": {
          "$id": "#/properties/logging/properties/max_file_size",
          "type": "string",
          "title": "Maximum Log File Size",
          "description": "Maximum size of individual log files before rotation",
          "pattern": "^\\d+[KMGT]?B$",
          "default": "10MB"
        },
        "file_enabled": {
          "$id": "#/properties/logging/properties/file_enabled",
          "type": "boolean",
          "title": "Enable File Logging",
          "description": "Whether to write logs to files",
          "default": true
        },
        "console_enabled": {
          "$id": "#/properties/logging/properties/console_enabled",
          "type": "boolean",
          "title": "Enable Console Logging",
          "description": "Whether to output logs to console",
          "default": true
        }
      }
    },
    "mcp": {
      "$id": "#/properties/mcp",
      "type": "object",
      "title": "MCP Configuration",
      "description": "Model Context Protocol specific configuration",
      "additionalProperties": false,
      "properties": {
        "server_name": {
          "$id": "#/properties/mcp/properties/server_name",
          "type": "string",
          "title": "MCP Server Name",
          "description": "Name of the MCP server",
          "default": "vision-analyzer"
        },
        "server_version": {
          "$id": "#/properties/mcp/properties/server_version",
          "type": "string",
          "title": "MCP Server Version",
          "description": "Version of the MCP server implementation",
          "default": "1.0.0"
        },
        "timeout": {
          "$id": "#/properties/mcp/properties/timeout",
          "type": "integer",
          "title": "Request Timeout",
          "description": "Timeout for MCP requests in milliseconds",
          "minimum": 1000,
          "maximum": 300000,
          "default": 30000
        }
      }
    },
    "features": {
      "$id": "#/properties/features",
      "type": "object",
      "title": "Feature Flags",
      "description": "Feature flags and experimental features",
      "additionalProperties": false,
      "properties": {
        "auto_model_selection": {
          "$id": "#/properties/features/properties/auto_model_selection",
          "type": "boolean",
          "title": "Auto Model Selection",
          "description": "Automatically select the best model based on image characteristics",
          "default": true
        },
        "cache_analysis": {
          "$id": "#/properties/features/properties/cache_analysis",
          "type": "boolean",
          "title": "Cache Analysis Results",
          "description": "Cache analysis results to improve performance",
          "default": true
        },
        "debug_mode": {
          "$id": "#/properties/features/properties/debug_mode",
          "type": "boolean",
          "title": "Debug Mode",
          "description": "Enable additional debugging information and tools",
          "default": false
        }
      }
    }
  },
  "definitions": {
    "provider": {
      "type": "object",
      "title": "Provider Configuration",
      "description": "Configuration for a specific API provider",
      "additionalProperties": false,
      "required": [
        "base",
        "api_key",
        "models"
      ],
      "properties": {
        "base": {
          "$id": "#/definitions/provider/properties/base",
          "type": "string",
          "title": "API Base URL",
          "description": "Base URL for the provider's API",
          "format": "uri",
          "examples": ["https://api.openai.com", "https://api.hunyuan.cloud.tencent.com"]
        },
        "api_key": {
          "$id": "#/definitions/provider/properties/api_key",
          "type": "string",
          "title": "API Key",
          "description": "API key for authentication with the provider",
          "minLength": 0
        },
        "models": {
          "$id": "#/definitions/provider/properties/models",
          "type": "array",
          "title": "Available Models",
          "description": "List of available models from this provider",
          "minItems": 0,
          "items": {
            "$ref": "#/definitions/model"
          }
        },
        "timeout": {
          "$id": "#/definitions/provider/properties/timeout",
          "type": "integer",
          "title": "Request Timeout",
          "description": "Timeout for requests to this provider in milliseconds",
          "minimum": 1000,
          "maximum": 300000,
          "default": 30000
        },
        "max_retries": {
          "$id": "#/definitions/provider/properties/max_retries",
          "type": "integer",
          "title": "Maximum Retries",
          "description": "Maximum number of retry attempts for failed requests",
          "minimum": 0,
          "maximum": 10,
          "default": 3
        },
        "rate_limit": {
          "$id": "#/definitions/provider/properties/rate_limit",
          "type": "object",
          "title": "Rate Limiting",
          "description": "Rate limiting configuration for this provider",
          "additionalProperties": false,
          "properties": {
            "requests_per_minute": {
              "type": "integer",
              "minimum": 1,
              "description": "Maximum requests per minute"
            },
            "requests_per_hour": {
              "type": "integer",
              "minimum": 1,
              "description": "Maximum requests per hour"
            }
          }
        }
      }
    },
    "model": {
      "type": "object",
      "title": "Model Configuration",
      "description": "Configuration for a specific AI model",
      "additionalProperties": false,
      "required": [
        "id",
        "name",
        "type"
      ],
      "properties": {
        "id": {
          "$id": "#/definitions/model/properties/id",
          "type": "string",
          "title": "Model ID",
          "description": "Unique identifier for the model",
          "minLength": 1,
          "examples": ["gpt-4-vision-preview", "hunyuan-vision"]
        },
        "name": {
          "$id": "#/definitions/model/properties/name",
          "type": "string",
          "title": "Model Name",
          "description": "Human-readable name of the model",
          "minLength": 1,
          "examples": ["GPT-4 Vision", "Hunyuan Vision"]
        },
        "type": {
          "$id": "#/definitions/model/properties/type",
          "type": "string",
          "title": "Model Type",
          "description": "Type of the model (vision or text)",
          "enum": ["vision", "text", "multimodal"],
          "default": "vision"
        },
        "capabilities": {
          "$id": "#/definitions/model/properties/capabilities",
          "type": "array",
          "title": "Model Capabilities",
          "description": "List of model capabilities",
          "items": {
            "type": "string",
            "enum": [
              "image_analysis",
              "text_generation",
              "ocr",
              "object_detection",
              "ui_analysis",
              "design_tokens",
              "component_hierarchy"
            ]
          },
          "uniqueItems": true
        },
        "max_tokens": {
          "$id": "#/definitions/model/properties/max_tokens",
          "type": "integer",
          "title": "Maximum Tokens",
          "description": "Maximum number of tokens the model can process",
          "minimum": 1,
          "examples": [4096, 8192, 32768]
        },
        "supports_vision": {
          "$id": "#/definitions/model/properties/supports_vision",
          "type": "boolean",
          "title": "Supports Vision",
          "description": "Whether the model supports image analysis",
          "default": false
        },
        "cost_per_token": {
          "$id": "#/definitions/model/properties/cost_per_token",
          "type": "number",
          "title": "Cost Per Token",
          "description": "Cost per 1K tokens in USD",
          "minimum": 0,
          "examples": [0.01, 0.02, 0.03]
        },
        "enabled": {
          "$id": "#/definitions/model/properties/enabled",
          "type": "boolean",
          "title": "Model Enabled",
          "description": "Whether this model is enabled for use",
          "default": true
        }
      }
    }
  },
  "examples": [
    {
      "version": "1.0.0",
      "current_provider_model": "tencent-hunyuan-vision",
      "providers": {
        "tencent": {
          "base": "https://api.hunyuan.cloud.tencent.com",
          "api_key": "your-api-key-here",
          "models": [
            {
              "id": "hunyuan-vision",
              "name": "Hunyuan Vision",
              "type": "vision",
              "capabilities": ["image_analysis", "ui_analysis"],
              "max_tokens": 4096,
              "supports_vision": true,
              "enabled": true
            }
          ]
        }
      },
      "http_server": {
        "port": 3000,
        "auto_start": true
      },
      "logging": {
        "level": "info",
        "retention_days": 30
      }
    }
  ]
}