{
  "$schema": "http://json-schema.org/draft-07/schema#",
  "$id": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/brand/search-brands-response.json",
  "title": "Search Brands Response",
  "description": "Brand stubs matching the search query. Each stub carries the public identity tier — enough to evaluate a brand and follow up with get_brand_identity (for full identity) or get_rights (for pricing). Rich authorized data (voice synthesis, high-res assets, tone guidelines) is not included.",
  "x-status": "experimental",
  "definitions": {
    "SearchBrandResult": {
      "type": "object",
      "description": "Lightweight brand stub returned by search_brands. Contains the public identity tier sufficient for discovery. Follow up with get_brand_identity for authorized fields.",
      "properties": {
        "brand_id": {
          "type": "string",
          "description": "Brand identifier. Pass to get_brand_identity or get_rights for the next step.",
          "x-entity": "advertiser_brand"
        },
        "house": {
          "type": "object",
          "description": "The house (corporate entity) associated with this brand. Present when a house affiliation is on record. Use relationship_trust to determine whether this association has been reciprocally confirmed by the house.",
          "properties": {
            "domain": {
              "type": "string",
              "description": "House domain (e.g., acme-corp.com). For mutually confirmed relationships (relationship_trust = mutual or inline) this domain is trust-extending. For one-sided or unconfirmed claims see also claimed_house_domain."
            },
            "name": {
              "type": "string",
              "description": "House display name"
            }
          },
          "required": [
            "domain",
            "name"
          ],
          "additionalProperties": true
        },
        "relationship_trust": {
          "type": "string",
          "enum": [
            "inline",
            "mutual",
            "leaf_only",
            "house_only",
            "standalone",
            "unverifiable"
          ],
          "description": "Trust verdict for the brand-to-house relationship, computed from the mutual-assertion model. inline = brand defined inside the house's own document; mutual = both sides publish the relationship (trust-extending); leaf_only = brand claims house but house has not reciprocated or declaration is expired; house_only = house claims brand, brand has not reciprocated; standalone = brand claims no house; unverifiable = claimed house could not be checked. When absent, trust has not yet been computed — absent MUST NOT be interpreted as standalone. Use get_brand_identity or verify_brand_claim for authoritative trust resolution."
        },
        "relationship_verified_at": {
          "type": "string",
          "format": "date-time",
          "description": "When the mutual-assertion edge was last confirmed by both sides. Present only when relationship_trust is mutual."
        },
        "claimed_house_domain": {
          "type": "string",
          "description": "Canonical domain of the house this brand self-declares as its parent. Not trust-extending on its own. Present for leaf_only and unverifiable trust states where the brand has made a claim that could not be or has not been reciprocated."
        },
        "names": {
          "type": "array",
          "description": "Localized brand names with BCP 47 locale code keys (e.g., 'en_US', 'fr_CA').",
          "items": {
            "type": "object",
            "minProperties": 1,
            "additionalProperties": {
              "type": "string"
            }
          }
        },
        "description": {
          "type": "string",
          "description": "Brand description"
        },
        "industries": {
          "type": "array",
          "items": {
            "$ref": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/enums/advertiser-industry.json"
          },
          "minItems": 1,
          "description": "Brand industries, following the advertiser-industry taxonomy"
        },
        "keller_type": {
          "type": "string",
          "enum": [
            "master",
            "sub_brand",
            "endorsed",
            "independent"
          ],
          "description": "Brand architecture type: master (primary brand of house), sub_brand (carries parent name), endorsed (independent identity backed by parent), independent (operates separately)"
        },
        "logos": {
          "type": "array",
          "description": "Standard-resolution logos for display during discovery. High-res variants are gated behind get_brand_identity with account authorization.",
          "items": {
            "type": "object",
            "properties": {
              "url": {
                "type": "string",
                "format": "uri",
                "description": "URL to the logo asset"
              },
              "orientation": {
                "type": "string",
                "enum": [
                  "square",
                  "horizontal",
                  "vertical",
                  "stacked"
                ],
                "description": "Logo aspect ratio orientation"
              },
              "background": {
                "type": "string",
                "enum": [
                  "dark-bg",
                  "light-bg",
                  "transparent-bg"
                ],
                "description": "Background compatibility"
              },
              "variant": {
                "type": "string",
                "enum": [
                  "primary",
                  "secondary",
                  "icon",
                  "wordmark",
                  "full-lockup"
                ],
                "description": "Logo variant type"
              }
            },
            "required": [
              "url"
            ],
            "additionalProperties": true
          }
        },
        "rights": {
          "type": "object",
          "description": "Rights availability summary. Signals whether this brand has licensable rights and in which markets. For detailed pricing and rights records, use get_rights.",
          "properties": {
            "available_uses": {
              "type": "array",
              "items": {
                "$ref": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/enums/right-use.json"
              }
            },
            "countries": {
              "type": "array",
              "description": "Countries where rights are available (ISO 3166-1 alpha-2). If omitted, rights are available worldwide.",
              "items": {
                "type": "string",
                "pattern": "^[A-Z]{2}$"
              }
            },
            "excluded_countries": {
              "type": "array",
              "description": "Countries excluded from availability (ISO 3166-1 alpha-2)",
              "items": {
                "type": "string",
                "pattern": "^[A-Z]{2}$"
              }
            }
          },
          "additionalProperties": true
        }
      },
      "required": [
        "brand_id",
        "names"
      ],
      "additionalProperties": true
    }
  },
  "type": "object",
  "oneOf": [
    {
      "title": "SearchBrandsSuccess",
      "properties": {
        "brands": {
          "type": "array",
          "description": "Brand stubs matching the query, ranked by relevance",
          "items": {
            "$ref": "#/definitions/SearchBrandResult"
          }
        },
        "pagination": {
          "$ref": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/core/pagination-response.json",
          "description": "Pagination metadata. Present when has_more is true or total_count is known."
        },
        "context": {
          "$ref": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/core/context.json"
        },
        "ext": {
          "$ref": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/core/ext.json"
        }
      },
      "required": [
        "brands"
      ],
      "additionalProperties": true,
      "not": {
        "required": [
          "errors"
        ]
      }
    },
    {
      "title": "SearchBrandsError",
      "properties": {
        "errors": {
          "type": "array",
          "items": {
            "$ref": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/core/error.json"
          },
          "minItems": 1
        },
        "context": {
          "$ref": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/core/context.json"
        },
        "ext": {
          "$ref": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/core/ext.json"
        }
      },
      "required": [
        "errors"
      ],
      "additionalProperties": true,
      "not": {
        "required": [
          "brands"
        ]
      }
    }
  ],
  "allOf": [
    {
      "$ref": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/core/version-envelope.json"
    },
    {
      "$ref": "https://adcontextprotocol.org/schemas/3.2.0-beta.0/core/protocol-envelope.json"
    }
  ]
}
