{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://github.com/wheresmycoleslaw/capability/blob/main/capability-site.schema.json",
  "title": "Capability Site Discovery Document",
  "type": "object",
  "additionalProperties": false,
  "required": ["capabilityDiscoveryVersion", "indexes"],
  "properties": {
    "capabilityDiscoveryVersion": { "const": "0.1" },
    "indexes": {
      "type": "array",
      "minItems": 1,
      "uniqueItems": true,
      "items": { "type": "string", "format": "uri" }
    },
    "package": {
      "type": "object",
      "additionalProperties": false,
      "required": ["name"],
      "properties": {
        "name": { "type": "string", "minLength": 1 },
        "version": { "type": "string", "minLength": 1 }
      }
    },
    "mcp": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "required": ["transport"],
        "properties": {
          "transport": { "enum": ["stdio", "http"] },
          "command": { "type": "string", "minLength": 1 },
          "args": { "type": "array", "items": { "type": "string" } },
          "url": { "type": "string", "format": "uri" }
        },
        "allOf": [
          {
            "if": { "properties": { "transport": { "const": "stdio" } } },
            "then": { "required": ["command"] }
          },
          {
            "if": { "properties": { "transport": { "const": "http" } } },
            "then": { "required": ["url"] }
          }
        ]
      }
    },
    "documentation": { "type": "string", "format": "uri" },
    "repository": { "type": "string", "format": "uri" },
    "metadata": {
      "type": "object",
      "additionalProperties": { "type": "string" }
    }
  }
}
