{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://ucp.dev/2026-08-25/schemas/capability.json",
  "title": "UCP Capability",
  "description": "Schema for UCP capabilities and extensions. Extensions are capabilities with an 'extends' field. Uses reverse-domain naming for governance.",
  "$defs": {
    "base": {
      "allOf": [
        {
          "$ref": "https://ucp.dev/2026-08-25/schemas/ucp.json#/$defs/entity"
        },
        {
          "type": "object",
          "properties": {
            "extends": {
              "oneOf": [
                {
                  "$ref": "https://ucp.dev/2026-08-25/schemas/common/types/reverse_domain_name.json"
                },
                {
                  "type": "array",
                  "items": {
                    "$ref": "https://ucp.dev/2026-08-25/schemas/common/types/reverse_domain_name.json"
                  },
                  "minItems": 1
                }
              ],
              "description": "Parent capability(s) this extends. Present for extensions, absent for root capabilities. Use array for multi-parent extensions."
            }
          }
        }
      ]
    },
    "platform_schema": {
      "title": "Capability (Platform Schema)",
      "description": "Full capability declaration for platform-level discovery. Includes spec/schema URLs for agent fetching.",
      "allOf": [
        {
          "$ref": "#/$defs/base"
        },
        {
          "required": [
            "spec",
            "schema"
          ]
        }
      ]
    },
    "business_schema": {
      "title": "Capability (Business Schema)",
      "description": "Capability declaration for business/merchant discovery. Requires the `schema` URL so platforms can fetch and compose it during negotiation; may also include business-specific config overrides.",
      "allOf": [
        {
          "$ref": "#/$defs/base"
        },
        {
          "required": [
            "schema"
          ]
        }
      ]
    },
    "response_schema": {
      "title": "Capability (Response Schema)",
      "description": "Capability reference in responses. Only name/version required to confirm active capabilities.",
      "allOf": [
        {
          "$ref": "#/$defs/base"
        }
      ]
    }
  }
}