> ## Documentation Index
> Fetch the complete documentation index at: https://agenticadvertisingorg-fix-release-bump-classification.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Brand Manifest

> Standardized brand information manifest for creative generation and media buying

The **Brand Manifest** is a standardized format for identifying the advertiser and providing brand context in AdCP. It tells publishers **who the advertiser is** (for policy compliance and business purposes) and optionally provides brand guidelines, assets, and product catalogs for creative generation.

Brand manifests can be provided either **inline as a JSON object** or **by URL reference** to a hosted manifest file.

## Overview

Brand manifests solve a key problem: how to efficiently identify advertisers and provide brand context without requiring complex authorization flows or repeated data entry. The brand manifest provides:

* **Advertiser identity**: Publishers know who they're doing business with (KYC/policy compliance)
* **Brand guidelines**: Colors, fonts, tone, and visual identity for creative generation
* **Asset libraries**: Logos, images, and videos for creative assembly
* **Product catalogs**: SKUs and offerings for promotional targeting
* **Consistent identity**: Same brand information reused across all requests

### Key Benefits

* **Know Your Customer**: Publishers can verify advertisers meet their standards
* **Minimal Friction**: Start with just a name or URL, expand as needed
* **Cacheable**: Same brand manifest reused across all requests
* **Standardized**: Consistent format across all AdCP implementations
* **Flexible**: Supports SMB to enterprise use cases
* **AI-Optimized**: Structured for easy ingestion by creative agents

## Providing Brand Manifests

### Inline JSON Object

Provide the brand manifest directly in the request:

```json theme={null}
{
  "brand_manifest": {
    "url": "https://bobsfunburgers.com",
    "name": "Bob's Fun Burgers",
    "colors": {
      "primary": "#FF6B35"
    }
  }
}
```

### URL String

Reference a hosted brand manifest file with a URL string:

```json theme={null}
{
  "brand_manifest": "https://cdn.acmecorp.com/brand-manifest.json"
}
```

The manifest at the URL must conform to the brand-manifest.json schema.

**Benefits of URL references:**

* **Centralized management**: Update brand information in one place
* **Version control**: Track changes to brand guidelines over time
* **Reduced payload size**: Large manifests don't bloat every request
* **CDN caching**: Leverage edge caching for faster access
* **Consistency**: Same manifest across all campaigns and platforms

## Use Cases

### Minimal Manifest (Sales Agents / Media Buying Only)

**If you're building a sales agent focused purely on media buying**, you can provide a minimal manifest. The brand manifest is required so publishers know who the advertiser is (for policy compliance and business purposes), but you don't need extensive brand details unless you're using creative generation or optimization features.

**Minimal inline manifest:**

```json theme={null}
{
  "$schema": "https://adcontextprotocol.org/schemas/v2/core/brand-manifest.json",
  "name": "ACME Corporation",
  "url": "https://acmecorp.com"
}
```

**Or even simpler for brands with URLs:**

```json theme={null}
{
  "$schema": "https://adcontextprotocol.org/schemas/v2/core/brand-manifest.json",
  "name": "ACME Corporation",
  "url": "https://acmecorp.com"
}
```

**Or reference a minimal hosted manifest:**

```json theme={null}
"https://acmecorp.com/.well-known/brand-manifest.json"
```

This minimal approach provides:

* Advertiser identity for publisher KYC and policy compliance
* Basic business information for reporting and tracking
* Future extensibility if you later need creative generation

You can safely skip colors, fonts, logos, product catalogs, and tone unless your use case requires them.

### SMB / Ad Hoc Creative Generation

For small businesses or one-off campaigns needing creative generation, a minimal brand manifest with a URL provides enough context:

```json theme={null}
{
  "$schema": "https://adcontextprotocol.org/schemas/v2/core/brand-manifest.json",
  "name": "Bob's Fun Burgers",
  "url": "https://bobsfunburgers.com"
}
```

Creative agents can infer brand information from the URL, pulling logos, colors, and style from the website.

### Enterprise / Established Brand

For established brands with defined guidelines, host the manifest on a CDN:

**Hosted at `https://cdn.acmecorp.com/brand-manifest.json`:**

```json theme={null}
{
  "$schema": "https://adcontextprotocol.org/schemas/v2/core/brand-manifest.json",
  "url": "https://acmecorp.com",
  "name": "ACME Corporation",
  "logos": [
    {
      "url": "https://cdn.acmecorp.com/logo-square-dark.png",
      "tags": ["dark", "square"],
      "width": 512,
      "height": 512
    },
    {
      "url": "https://cdn.acmecorp.com/logo-horizontal-light.png",
      "tags": ["light", "horizontal"],
      "width": 1200,
      "height": 400
    }
  ],
  "colors": {
    "primary": "#FF6B35",
    "secondary": "#004E89",
    "accent": "#F7931E",
    "background": "#FFFFFF",
    "text": "#1A1A1A"
  },
  "fonts": {
    "primary": "Helvetica Neue",
    "secondary": "Georgia"
  },
  "tone": "professional and trustworthy",
  "tagline": "Innovation You Can Trust",
  "product_catalog": {
    "feed_url": "https://acmecorp.com/products.rss",
    "feed_format": "google_merchant_center"
  },
  "industry": "technology",
  "target_audience": "business decision-makers aged 35-55"
}
```

**Reference in requests:**

```json theme={null}
{
  "brand_manifest": "https://cdn.acmecorp.com/brand-manifest.json"
}
```

### Multi-SKU Retailer

Large retailers can provide product feeds and asset libraries:

```json theme={null}
{
  "$schema": "https://adcontextprotocol.org/schemas/v2/core/brand-manifest.json",
  "url": "https://bigretail.com",
  "name": "BigRetail",
  "product_catalog": {
    "feed_url": "https://bigretail.com/catalog.xml",
    "feed_format": "google_merchant_center"
  },
  "disclaimers": [
    {
      "text": "Prices and availability subject to change",
      "context": "pricing",
      "required": true
    }
  ]
}
```

### Brands Without URLs

Some brands don't have dedicated URLs (white-label products, local businesses, B2B brands). Brand cards support name-only identification:

```json theme={null}
{
  "$schema": "https://adcontextprotocol.org/schemas/v2/core/brand-manifest.json",
  "name": "Great Value",
  "colors": {
    "primary": "#0071CE",
    "secondary": "#FFC220"
  },
  "tone": "affordable and trustworthy"
}
```

**Common cases for name-only brands:**

* White-label/store brands (e.g., "Great Value", "Kirkland")
* Local businesses without websites
* B2B brands without public sites
* Sub-brands under parent company URLs

## Brand Manifest Schemas

### Brand Manifest Reference (Union Type)

**Schema URL**: [/schemas/v2/core/brand-manifest-ref.json](https://adcontextprotocol.org/schemas/v2/core/brand-manifest-ref.json)

The brand manifest reference is a union type that accepts either:

1. **Inline object**: Full brand manifest JSON object
2. **URL reference**: Object with `manifest_url` field pointing to hosted manifest

### Brand Manifest Object

**Schema URL**: [/schemas/v2/core/brand-manifest.json](https://adcontextprotocol.org/schemas/v2/core/brand-manifest.json)

The structure of the brand manifest object itself (whether provided inline or hosted at a URL).

### Required Fields

**Either `url` OR `name` is required** (both can be provided):

| Field  | Type         | Description                                          |
| ------ | ------------ | ---------------------------------------------------- |
| `url`  | string (uri) | Primary brand URL for context and asset discovery    |
| `name` | string       | Brand or business name (required if no URL provided) |

### Optional Fields

| Field             | Type           | Description                                            |
| ----------------- | -------------- | ------------------------------------------------------ |
| `name`            | string         | Brand or business name                                 |
| `logos`           | Logo\[]        | Brand logo assets with semantic tags                   |
| `colors`          | Colors         | Brand color palette (hex format)                       |
| `fonts`           | Fonts          | Brand typography guidelines                            |
| `tone`            | string         | Brand voice and messaging tone                         |
| `tagline`         | string         | Brand tagline or slogan                                |
| `assets`          | Asset\[]       | Brand asset library with explicit assets and tags      |
| `product_catalog` | ProductCatalog | Product catalog information for e-commerce advertisers |
| `disclaimers`     | Disclaimer\[]  | Legal disclaimers for creatives                        |
| `industry`        | string         | Industry or vertical                                   |
| `target_audience` | string         | Primary target audience description                    |
| `contact`         | Contact        | Brand contact information                              |
| `metadata`        | Metadata       | Version and update tracking                            |

### Logo Object

```typescript theme={null}
{
  url: string;           // URL to logo asset
  tags?: string[];       // Semantic tags (e.g., "dark", "light", "square", "horizontal")
  width?: number;        // Logo width in pixels
  height?: number;       // Logo height in pixels
}
```

**Common Tags**: `"dark"`, `"light"`, `"square"`, `"horizontal"`, `"vertical"`, `"icon"`, `"wordmark"`, `"lockup"`

### Colors Object

```typescript theme={null}
{
  primary?: string;      // Primary brand color (#RRGGBB)
  secondary?: string;    // Secondary brand color (#RRGGBB)
  accent?: string;       // Accent color (#RRGGBB)
  background?: string;   // Background color (#RRGGBB)
  text?: string;         // Text color (#RRGGBB)
}
```

### Fonts Object

```typescript theme={null}
{
  primary?: string;      // Primary font family name
  secondary?: string;    // Secondary font family name
  font_urls?: string[];  // URLs to web font files
}
```

### Disclaimer Object

```typescript theme={null}
{
  text: string;          // Disclaimer text
  context?: string;      // When this applies (e.g., "financial_products", "health_claims")
  required?: boolean;    // Whether this must appear (default: true)
}
```

### Asset Object

```typescript theme={null}
{
  asset_id: string;                  // Unique identifier for this asset
  asset_type: string;                // Type of asset (image, video, audio, text, etc.)
  url: string;                       // URL to CDN-hosted asset file
  tags?: string[];                   // Tags for asset discovery (e.g., "holiday", "lifestyle")
  name?: string;                     // Human-readable asset name
  description?: string;              // Asset description or usage notes
  width?: number;                    // Image/video width in pixels
  height?: number;                   // Image/video height in pixels
  duration_seconds?: number;         // Video/audio duration in seconds
  file_size_bytes?: number;          // File size in bytes
  format?: string;                   // File format (e.g., "jpg", "mp4")
  metadata?: Record<string, any>;    // Additional asset-specific metadata
}
```

### ProductCatalog Object

```typescript theme={null}
{
  feed_url: string;                  // URL to product catalog feed
  feed_format?: string;              // Format of the product feed (default: "google_merchant_center")
  categories?: string[];             // Product categories available in the catalog
  last_updated?: string;             // When the product catalog was last updated (ISO 8601)
  update_frequency?: string;         // How frequently the catalog is updated
}
```

## Integration with AdCP Tasks

### create\_media\_buy

Include brand manifest in media buy creation to provide context for creative generation:

```json theme={null}
{
  "buyer_ref": "campaign_2024_q1",
  "promoted_offering": "ACME Pro Widget",
  "brand_manifest": {
    "url": "https://acmecorp.com",
    "name": "ACME Corporation",
    "tone": "professional and innovative"
  },
  "packages": [...],
  "budget": {...}
}
```

### build\_creative

Use brand manifest to inform creative generation:

```json theme={null}
{
  "message": "Create a native ad highlighting our new product launch",
  "format_id": {
    "agent_url": "https://creative.adcontextprotocol.org",
    "id": "display_native"
  },
  "brand_manifest": {
    "url": "https://acmecorp.com",
    "logos": [
      {
        "url": "https://cdn.acmecorp.com/logo-square.png",
        "tags": ["square", "dark"]
      }
    ],
    "colors": {
      "primary": "#FF6B35",
      "secondary": "#004E89"
    },
    "tone": "professional and trustworthy"
  }
}
```

## Best Practices

### 1. Start Simple, Expand as Needed

Begin with just a URL. Add more fields only when the URL-based inference isn't sufficient:

```json theme={null}
// ✅ Good starting point
{
  "url": "https://mybrand.com"
}

// ✅ Add details when needed
{
  "url": "https://mybrand.com",
  "logos": [...],
  "colors": {...}
}
```

### 2. Use Semantic Tags for Logos

Tags help creative agents select appropriate logo variants:

```json theme={null}
{
  "logos": [
    {"url": "...", "tags": ["dark", "square"]},      // For light backgrounds
    {"url": "...", "tags": ["light", "square"]},     // For dark backgrounds
    {"url": "...", "tags": ["dark", "horizontal"]},  // Wide layouts
    {"url": "...", "tags": ["icon"]}                 // Small placements
  ]
}
```

### 3. Cache and Reuse Brand Manifests

Brand cards are designed to be cached. Use URL strings for automatic caching:

```javascript theme={null}
// Reference hosted manifest (cacheable by URL)
const brandManifestUrl = "https://cdn.acmecorp.com/brand-manifest.json";

// Reuse across requests - agents can cache the manifest
await createMediaBuy({ brand_manifest: brandManifestUrl, ... });
await buildCreative({ brand_manifest: brandManifestUrl, ... });
await buildCreative({ brand_manifest: brandManifestUrl, ... }); // Same manifest, different creative
```

Or cache inline manifests yourself:

```javascript theme={null}
// Cache inline manifest once
const brandManifest = {
  url: "https://acmecorp.com",
  colors: {...},
  logos: [...]
};

// Reuse across requests
await createMediaBuy({ brand_manifest: brandManifest, ... });
await buildCreative({ brand_manifest: brandManifest, ... });
```

### 4. Product Feeds for Multi-SKU

Large retailers should provide product feeds:

```json theme={null}
{
  "$schema": "https://adcontextprotocol.org/schemas/v2/core/brand-manifest.json",
  "name": "Retailer Name",
  "url": "https://retailer.com",
  "product_catalog": {
    "feed_url": "https://retailer.com/products.json"
  }
}
```

**Supported Feed Formats**: RSS, JSON Feed, Product CSV

### 5. Asset Libraries for Enterprise

Enterprise brands with large asset libraries should provide explicit assets:

```json theme={null}
{
  "$schema": "https://adcontextprotocol.org/schemas/v2/core/brand-manifest.json",
  "name": "Enterprise Brand",
  "url": "https://brand.com",
  "assets": [
    {
      "asset_id": "hero_lifestyle_1",
      "asset_type": "image",
      "url": "https://cdn.brand.com/hero-lifestyle-1.jpg",
      "tags": ["lifestyle", "hero", "outdoor"],
      "width": 1920,
      "height": 1080
    },
    {
      "asset_id": "product_video_30s",
      "asset_type": "video",
      "url": "https://cdn.brand.com/product-video-30s.mp4",
      "tags": ["product", "demo", "30s"],
      "duration_seconds": 30,
      "width": 1920,
      "height": 1080
    }
  ]
}
```

## Evolution and Versioning

Brand cards are versioned using the `metadata.version` field:

```json theme={null}
{
  "$schema": "https://adcontextprotocol.org/schemas/v2/core/brand-manifest.json",
  "name": "Brand Name",
  "url": "https://brand.com",
  "metadata": {
    "version": "2.1",
    "updated_date": "2024-03-15T10:00:00Z"
  }
}
```

Version updates:

* **Patch** (2.0.1): Fix typos, update contact info
* **Minor** (2.1.0): Add new assets, update colors
* **Major** (3.0.0): Complete rebrand, new identity

## Migration from brand\_guidelines

For implementations using the legacy `brand_guidelines` field in `build_creative`:

**Before (Legacy)**:

```json theme={null}
{
  "brand_guidelines": {
    "colors": ["#FF6B35", "#004E89"],
    "fonts": ["Helvetica Neue"],
    "tone": "professional"
  }
}
```

**After (Brand Manifest)**:

```json theme={null}
{
  "brand_manifest": {
    "url": "https://brand.com",
    "colors": {
      "primary": "#FF6B35",
      "secondary": "#004E89"
    },
    "fonts": {
      "primary": "Helvetica Neue"
    },
    "tone": "professional"
  }
}
```

## Related Documentation

* **[create\_media\_buy](/dist/docs/2.5.3/media-buy/task-reference/create_media_buy)** - Media buy creation with brand context
* **[build\_creative](/dist/docs/2.5.3/creative/task-reference/build_creative)** - AI-powered creative generation
* **[Creative Lifecycle](/dist/docs/2.5.3/media-buy/creatives/)** - Managing creative assets
