Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
11 changes: 11 additions & 0 deletions .changeset/creative-standards-protocol.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
"adcontextprotocol": minor
---

Add Creative Standards Protocol for brand guideline compliance.

Provides four tasks:
- `list_creative_features`: Discover available creative compliance features
- `get_creative_standards`: Retrieve creative execution guidelines
- `check_creative`: Evaluate a single creative asset
- `validate_creative_delivery`: Batch validate creatives
15 changes: 15 additions & 0 deletions docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -101,6 +101,21 @@
}
]
},
{
"group": "Creative Standards Protocol",
"pages": [
"docs/governance/creative-standards/index",
{
"group": "Tasks",
"pages": [
"docs/governance/creative-standards/tasks/list_creative_features",
"docs/governance/creative-standards/tasks/get_creative_standards",
"docs/governance/creative-standards/tasks/check_creative",
"docs/governance/creative-standards/tasks/validate_creative_delivery"
]
}
]
},
{
"group": "Curation Protocol",
"pages": [
Expand Down
114 changes: 114 additions & 0 deletions docs/governance/creative-standards/index.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
---
title: Creative Standards Protocol
sidebarTitle: Overview
description: Evaluate creative execution against brand guidelines
---

# Creative Standards Protocol

The Creative Standards Protocol enables AI agents to evaluate creative assets against brand execution guidelines. Unlike Content Standards (which evaluates where ads run), Creative Standards evaluates how the creative itself adheres to brand guidelines.

## Use Cases

- **Logo usage compliance**: Verify logos meet size, clear space, and placement requirements
- **Color palette adherence**: Check that creatives use approved brand colors
- **Typography compliance**: Ensure fonts and text styling follow brand guidelines
- **Messaging consistency**: Evaluate taglines and copy against approved messaging
- **Visual style adherence**: Check imagery, photography style, and visual elements
- **Co-branding requirements**: Verify partner brand usage meets guidelines

## Architecture

Creative Standards follows the same agent + token pattern as other governance protocols:

```
┌─────────────────┐ ┌──────────────────────────┐
│ Orchestrator │────▶│ Creative Standards │
│ (AI Agent) │ │ Agent │
└─────────────────┘ │ (Brand/Agency Service) │
│ └──────────────────────────┘
│ │
│ ▼
│ ┌──────────────────────────┐
│ │ Brand Guidelines │
│ │ (Design System, Assets) │
│ └──────────────────────────┘
┌─────────────────┐
│ Brand Manifest │
│ (Discovery) │
└─────────────────┘
```

## Tasks

The Creative Standards Protocol provides four tasks:

| Task | Purpose |
|------|---------|
| [list_creative_features](/docs/governance/creative-standards/tasks/list_creative_features) | Discover available creative compliance features |
| [get_creative_standards](/docs/governance/creative-standards/tasks/get_creative_standards) | Retrieve creative execution guidelines |
| [check_creative](/docs/governance/creative-standards/tasks/check_creative) | Evaluate a single creative asset |
| [validate_creative_delivery](/docs/governance/creative-standards/tasks/validate_creative_delivery) | Batch validate delivered creatives |

## Feature Types

Creative features follow the same type system as property and content features:

### Binary Features
Pass/fail checks with clear criteria:
- `logo_present`: Is the brand logo included?
- `approved_tagline`: Does the copy use an approved tagline?
- `click_url_valid`: Does the clickthrough URL work?

### Quantitative Features
Numeric values within acceptable ranges:
- `logo_clear_space_px`: Minimum clear space around logo (pixels)
- `text_contrast_ratio`: WCAG contrast ratio compliance
- `logo_min_size_px`: Minimum logo dimensions

### Categorical Features
Values from defined sets:
- `color_palette`: Which approved palette is used (primary, secondary, seasonal)
- `typography_family`: Font family from brand approved list
- `imagery_style`: Photography style (lifestyle, product, abstract)

## Integration with Brand Manifest

The [Brand Manifest](/docs/creative/brand-manifest) can reference a Creative Standards agent for automated compliance checking:

```json
{
"brand_id": "acme_corp",
"governance": {
"creative_standards_agent": {
"url": "https://creative-compliance.acme.com",
"standards_id": "acme_global_2024"
}
}
}
```

## Example Flow

```mermaid
sequenceDiagram
participant O as Orchestrator
participant CS as Creative Standards Agent
participant BM as Brand Manifest

O->>BM: Discover creative standards agent
BM-->>O: Return agent URL + standards_id
O->>CS: list_creative_features()
CS-->>O: Available features
O->>CS: check_creative(creative_asset)
CS-->>O: Feature results (passed/failed)
```

## Relationship to Other Protocols

- **Content Standards**: Evaluates where ads run (content safety)
- **Creative Standards**: Evaluates how creatives look (brand compliance)
- **Property Governance**: Publisher-side inventory characteristics
- **Brand Manifest**: Discovery layer that can link to all governance agents
174 changes: 174 additions & 0 deletions docs/governance/creative-standards/tasks/check_creative.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,174 @@
---
title: check_creative
sidebarTitle: check_creative
description: Evaluate a single creative asset against brand guidelines
---

# check_creative

Evaluate a single creative asset against brand guidelines. Returns per-feature evaluation results indicating compliance status.

## Request

```json
{
"standards_id": "acme_global_2024",
"creative": {
"creative_id": "creative_abc123",
"format_id": {
"agent_url": "https://creative.adcontextprotocol.org",
"id": "display_300x250"
},
"assets": [
{
"asset_id": "hero_image",
"url": "https://cdn.example.com/creative_abc123/hero.png",
"content_type": "image/png"
}
],
"metadata": {
"headline": "Transform Your Business",
"tagline": "ACME - Innovation at Scale",
"cta_text": "Learn More"
}
},
"feature_ids": ["logo_present", "color_palette", "typography_family"]
}
```

### Parameters

| Parameter | Type | Required | Description |
|-----------|------|----------|-------------|
| `standards_id` | string | Yes | Standards configuration to evaluate against |
| `creative` | object | Yes | Creative asset to evaluate |
| `creative.creative_id` | string | No | Identifier for the creative |
| `creative.format_id` | object | No | Creative format specification |
| `creative.assets` | array | Yes | Asset files to evaluate |
| `creative.metadata` | object | No | Text content and metadata |
| `feature_ids` | array | No | Specific features to check (defaults to all) |

## Response

```json
{
"summary": {
"total_features": 5,
"passed_features": 3,
"failed_features": 1,
"warning_features": 1
},
"results": [
{
"feature_id": "logo_present",
"status": "passed",
"message": "Brand logo detected in creative"
},
{
"feature_id": "logo_clear_space_px",
"status": "warning",
"value": 15,
"message": "Logo clear space is 15px, minimum recommended is 20px",
"suggestion": "Increase clear space around logo to at least 20px"
},
{
"feature_id": "color_palette",
"status": "passed",
"value": "primary",
"message": "Creative uses primary brand color palette"
},
{
"feature_id": "typography_family",
"status": "passed",
"value": "brand_sans",
"message": "Creative uses approved ACME Sans font family"
},
{
"feature_id": "approved_tagline",
"status": "failed",
"message": "Tagline 'Innovation at Scale' is not in approved tagline list",
"suggestion": "Use an approved tagline such as 'Innovation Delivered' or 'Scale with Confidence'"
}
]
}
```

### Response Fields

| Field | Type | Description |
|-------|------|-------------|
| `summary` | object | Aggregate counts |
| `summary.total_features` | integer | Total features evaluated |
| `summary.passed_features` | integer | Features that passed |
| `summary.failed_features` | integer | Features that failed |
| `summary.warning_features` | integer | Features with warnings |
| `results` | array | Per-feature results |
| `results[].feature_id` | string | Which feature was evaluated |
| `results[].status` | string | `passed`, `failed`, `warning`, or `unevaluated` |
| `results[].value` | any | The evaluated value (type depends on feature) |
| `results[].message` | string | Human-readable explanation |
| `results[].suggestion` | string | Recommended action if failed/warning |

## Feature Status Values

| Status | Meaning |
|--------|---------|
| `passed` | Creative meets the requirement |
| `failed` | Creative violates the requirement |
| `warning` | Creative is marginally compliant |
| `unevaluated` | Feature could not be evaluated |

## Creative Asset Structure

The `creative.assets` array should include all relevant files:

```json
{
"assets": [
{
"asset_id": "main_image",
"url": "https://cdn.example.com/main.png",
"content_type": "image/png"
},
{
"asset_id": "logo",
"url": "https://cdn.example.com/logo.svg",
"content_type": "image/svg+xml"
},
{
"asset_id": "video",
"url": "https://cdn.example.com/spot.mp4",
"content_type": "video/mp4"
}
]
}
```

## Metadata for Text Evaluation

Include text content in `creative.metadata` for messaging checks:

```json
{
"metadata": {
"headline": "Transform Your Business",
"subheadline": "Enterprise solutions that scale",
"tagline": "Innovation Delivered",
"cta_text": "Get Started",
"legal_text": "Terms and conditions apply. See website for details."
}
}
```

## Error Response

```json
{
"errors": [
{
"code": "ASSET_UNAVAILABLE",
"message": "Could not fetch asset at https://cdn.example.com/main.png"
}
]
}
```
Loading