brand.json file at a well-known location, brands can declare their identity, brand hierarchy, and optionally designate official brand agents.
Purpose
The Brand Protocol addresses buy-side identity in advertising, providing the same clarity that the Property Protocol provides for the sell-side:| Sell Side | Buy Side | Description |
|---|---|---|
| Publisher | House | Corporate entity (Nike, Inc., P&G) |
| Property | Brand | Advertising identity (Nike, Air Jordan) |
| Inventory | Destination | Landing pages, apps |
How it works
Brands host abrand.json file at /.well-known/brand.json on their domain. The file can take one of four forms:
- Brand Agent: Points to an MCP agent that provides brand information
- House Portfolio: Contains full brand hierarchy with all brands and properties
- House Redirect: Points to a house domain that contains the portfolio
- Authoritative Location: Points to a hosted brand.json URL
Brand architecture
The protocol supports Keller’s brand architecture models:| Type | Description | Example |
|---|---|---|
master | Primary brand of house | Nike for Nike, Inc. |
sub_brand | Carries parent name | Nike SB |
endorsed | Independent identity, backed by parent | Air Jordan “by Nike” |
independent | Operates separately | Converse under Nike, Inc. |
Example: house portfolio
A house domain with multiple brands:Example: brand agent
A brand with an MCP agent that provides brand information:Example: house redirect
A brand domain pointing to its house:Resolution flow
Given any domain, the protocol resolves to a canonical brand:Brand resolution sources
There are three ways to resolve brand identity, each returning the same data structure:| Source | How it works | When to use |
|---|---|---|
resolve_brand | Fetches /.well-known/brand.json, extracts brand identity | Brand publishes a brand.json file |
| Brand enrichment | Fetches from Brandfetch, saves identity to registry | No brand.json available, need enrichment |
| Registry lookup | Returns community or enriched identity from the registry | Brand already registered |
{ "domain": "...", "brand_id": "..." }).
Use cases
Creative generation
When a creative agent needs brand assets:- Resolve domain to canonical brand via brand.json
- Get brand identity data (from brand.json, agent, or registry)
- Generate on-brand creatives
Brand verification
When verifying brand claims:- Fetch brand.json from claimed domain
- Follow redirects to house if needed
- Verify brand exists in portfolio
Reporting roll-up
When aggregating brand performance:- Resolve all brand domains to canonical IDs
- Group by house for corporate-level reporting
- Optionally include/exclude sub-brands
Brand context in requests
AdCP tasks accept abrand reference that identifies the brand by domain and optional brand_id. The system resolves this reference to the full brand identity at execution time.
brand_id is optional:
brand.json or the registry — never passed inline.
Caching
Brand information changes infrequently (logo updates, guideline refreshes). Recommended caching:- HTTP headers: Use standard
ETag,Last-Modified, andCache-Controlheaders - Default TTL: 24 hours for validated brand.json files
- Failed lookups: Cache for 1 hour before retrying
- last_updated field: Informational timestamp in brand.json for staleness checks
Future considerations
Digital asset management (DAM)
For brands requiring fine-grained control over asset usage, thebrand_agent variant provides a natural integration point for DAM systems. Agents can:
- Enforce access control per asset
- Track usage and licensing
- Provide assets with usage terms
- Log access for compliance
MCP tools
The Brand Protocol provides MCP tools for programmatic access:| Tool | Description |
|---|---|
resolve_brand | Resolve domain to canonical brand identity |
validate_brand_json | Validate a domain’s brand.json |
validate_brand_agent | Test brand agent reachability |