Documentation

Overview

The Brand Context Protocol (BCP) is an open standard for expressing brand identity in machine-readable JSON format. It enables AI tools, design platforms, and marketing systems to understand and respect your brand guidelines automatically.

i
Only three fields are required: brand.id, brand.display_name, and brand.brand_type. Everything else is optional but increases your completeness score.

Minimal Example

{
  "brand": {
    "id": "my-brand",
    "display_name": "My Brand",
    "brand_type": "consumer_brand"
  }
}

Core Schema

The core BCP schema defines the structure of a brand context document. It uses JSON Schema (draft-07) for validation.

Section Required Description
brand Yes Core brand identification (id, name, type)
metadata No BCP version, timestamps, status
identity No Mission, values, brand archetype
visual No Logo, colors, typography
verbal No Voice description, tone, vocabulary
positioning No Target audience, market positioning
brand_constraints No Pricing, discounts, forbidden tactics
governance No Approval workflows and tiers
extensions No Official BCP extensions
Browse all core, companion, and extension schemas interactively on the Schema Browser.

Brand Object

The brand object is the only required top-level field. It identifies the brand.

Field Type Required Description
id string Yes Unique identifier. Pattern: ^[a-z0-9-]+$
display_name string Yes Human-readable brand name
brand_type enum Yes consumer_brand, digital_brand, b2b_brand, creator_brand, marketplace, media_publisher, nonprofit, public_sector
industry enum No Primary industry sector (descriptive metadata only). Values: consumer_goods, consumer_services, retail_commerce, healthcare_life_sciences, financial_services, technology_software, media_entertainment, education, real_estate, travel_hospitality, industrial_b2b, public_sector_nonprofit, other
offering_type enum No Nature of what the brand sells: physical_goods, digital_products, software, services, content, experiences, hybrid
business_model enum No Primary revenue model: transactional_sales, subscription, freemium, advertising, commission, lead_generation, hybrid
distribution_model enum No Primary channel to reach customers: d2c, marketplace, retail, omnichannel, channel_partners, enterprise_sales, direct_platform

Identity

The identity section captures the brand's core essence—mission, values, and archetype.

Field Type Description
mission string Brand mission statement
values string[] Core brand values
brand_archetype enum One of 12 Jungian archetypes: innocent, everyperson, hero, outlaw, explorer, creator, ruler, magician, lover, caregiver, jester, sage
{
  "identity": {
    "mission": "Make beauty accessible to everyone",
    "values": ["authenticity", "simplicity", "inclusivity"],
    "brand_archetype": "everyperson"
  }
}

Visual

The visual section defines the brand's visual identity system including logo, colors, and typography.

Primary Brand Mark

Describes the main logo or brand mark with type (logo, profile_image, wordmark, symbol), file URL, and minimum size requirements for digital (px) and print (mm).

Colors

Five color palette buckets: primary, secondary, neutral, background, and accent. Each color entry has a name, hex value (pattern: #RRGGBB), a human-readable usage description, and a machine-readable roles array for brand guard tools. Use accent for high-emphasis colors used sparingly — highlights, badges, or key CTAs distinct from the primary palette.

Typography

Primary font family and allowed weights.

{
  "visual": {
    "primary_brand_mark": {
      "type": "wordmark",
      "file_url": "https://brand.example.com/logo.svg",
      "min_size": { "digital_px": 40, "print_mm": 15 }
    },
    "colors": {
      "primary": [
        {
          "name": "Brand Blue",
          "hex": "#0066CC",
          "usage": "Headers, CTAs, and primary action buttons",
          "roles": ["heading", "primary_action", "accent"]
        }
      ],
      "neutral": [
        {
          "name": "Ink",
          "hex": "#1A1A1A",
          "usage": "Body text and headings",
          "roles": ["text", "heading"]
        }
      ],
      "background": [
        {
          "name": "Canvas",
          "hex": "#FFFFFF",
          "usage": "Page and section backgrounds",
          "roles": ["background"]
        }
      ],
      "accent": [
        {
          "name": "Electric Yellow",
          "hex": "#FFD600",
          "usage": "Highlights, badges, and attention-drawing micro-interactions",
          "roles": ["accent", "icon"]
        }
      ]
    },
    "typography": {
      "primary": { "family": "Inter", "weights": [400, 500, 700] }
    }
  }
}

Verbal

The verbal section defines how the brand communicates—its voice, tone, and vocabulary rules.

Voice & Tone

A textual description of the brand voice, plus 2–4 tone descriptors that capture how the brand sounds:

Available tone descriptors: authoritative, approachable, bold, calm, confident, conversational, direct, empathetic, empowering, enthusiastic, inspirational, nurturing, playful, sophisticated, warm, witty.

Vocabulary

Lists of encouraged words and forbidden words (each with a reason and suggested alternative).

{
  "verbal": {
    "voice": {
      "description": "Warm, knowledgeable, like a trusted friend",
      "tone": ["warm", "approachable", "confident"]
    },
    "vocabulary": {
      "encouraged_words": ["discover", "explore", "together"],
      "forbidden_words": [
        { "word": "cheap", "reason": "Undermines value", "alternative": "affordable" }
      ]
    }
  }
}

Positioning

Describes the brand's market positioning and target audience.

{
  "positioning": {
    "target_audience": {
      "primary": {
        "description": "Health-conscious millennials aged 25-40"
      }
    }
  }
}

Governance

The governance layer is the executable core of BCP v2 — deterministic enforcement rules for marketing tactics, claims, pricing, and per-channel policy. Brands inherit sensible defaults from the Global Policy Library and override what they need.

Risk & Enforcement

Sets the overall brand tolerance for content risk.

FieldTypeDescription
risk_posture enum permissive, moderate, conservative, or strict
enforcement_mode enum advisory (report only), standard, or strict (hard blocks)
block_threshold number Score (0–100) below which content is auto-blocked

Tactics Policy

Controls which marketing tactics are allowed, warned, escalated, or blocked. Each override references a tactic from the Global Policy Library by tactic_id.

FieldTypeDescription
inherit_defaults boolean If true, all GPL tactic defaults apply unless overridden
overrides[] array Per-tactic enforcement: tactic_id, enforcement (allow | warn | block | escalate), optional reason
"tactics_policy": {
  "inherit_defaults": true,
  "overrides": [
    { "tactic_id": "countdown_timer", "enforcement": "block" },
    { "tactic_id": "false_scarcity", "enforcement": "block" },
    { "tactic_id": "social_proof", "enforcement": "allow" }
  ]
}

Claims Policy

Controls how brand and product claims are governed. Works with the Claims Registry companion.

FieldTypeDescription
claims_strictness enum relaxed, moderate, or strict
allow_comparative_claims boolean Whether side-by-side competitor comparisons are permitted
allow_before_after boolean Whether before/after imagery is permitted
evidence_required_for string[] GPL claim type IDs that require evidence (e.g. health_benefit, efficacy_claim)
overrides[] array Per-claim-type enforcement: claim_type_id, enforcement, optional reason

Pricing & Urgency

FieldTypeDescription
pricing_positioning enum budget, value, premium, or luxury
discount_cap_percentage number Maximum allowed discount (0–100)
urgency_policy enum none, subtle, moderate, or aggressive
false_scarcity_policy enum allow, warn, or block

Channel Overrides

Per-channel adjustments to tone and policy. Core rules stay consistent; each channel adapts what it needs.

Valid channels: meta_ads, google_ads, email, website, support, social_instagram, social_twitter, social_linkedin, sms, marketplace.

"channel_overrides": {
  "social_linkedin": {
    "tone": ["authoritative", "confident", "direct"],
    "tactics_overrides": [
      { "tactic_id": "countdown_timer", "enforcement": "block" }
    ]
  },
  "email": {
    "tone": ["warm", "confident"],
    "urgency_policy": "moderate"
  }
}

Approval Workflow

Defines tiered approval requirements for content that triggers escalation.

"approval_workflow": {
  "enabled": true,
  "tiers": [
    {
      "tier": "minor",
      "scope": "Social media posts, internal emails",
      "approvers": ["marketing_team"]
    },
    {
      "tier": "major",
      "scope": "Ad campaigns, press releases",
      "approvers": ["brand_director", "cmo"]
    }
  ]
}

Runtime Overrides

Time-bound policy relaxations for campaigns. These take highest precedence in the merge chain.

"runtime_overrides": [
  {
    "override_id": "diwali-sale-2026",
    "valid_from": "2026-10-15T00:00:00Z",
    "valid_until": "2026-11-05T23:59:59Z",
    "channel_scope": ["email", "social_instagram"],
    "tactics_overrides": [
      { "tactic_id": "limited_time_offer", "enforcement": "allow" }
    ],
    "approved_by": "brand_director"
  }
]

Companion Contexts

Beyond the core BCP, brands can attach companion context files that carry domain-specific data. These are separate JSON documents linked to the same brand, each governed by its own schema.

i
Companion contexts are independently versioned. Updating a companion auto-snapshots the previous version to the brand's version history.
Type Schema Purpose
claims_registry claims-registry Brand/product claims with GPL type refs, evidence links, verification status

Claims Registry

Registry of brand/product claims subject to governance enforcement. Each claim references a GPL claim_type_id so the engine can cross-reference against governance.claims_policy. Claims can be scoped to specific products (via sku:<id>) or the brand as a whole.

{
  "brand_ref": "my-brand",
  "claims": [
    {
      "claim_id": "recycled_soles",
      "claim_type_id": "sustainability_claim",
      "claim_text": "100% recycled ocean plastic in all soles",
      "scope": ["sku:RUN-100", "sku:RUN-200"],
      "evidence_url": "https://example.com/sustainability-report.pdf",
      "verified": true,
      "valid_until": "2027-01-01"
    }
  ]
}

Versioning

Every brand's BCP is version-controlled. When changes are published, a snapshot of the current data is saved to the version history with a changelog entry. You can roll back to any previous version.

Concept Description
Publish Saves a draft's accepted changes as a new version of the brand's BCP
Version History Immutable snapshots of each published version, filterable by bcp_type (core, product, claims_registry)
Rollback Restores a previous version's data as the active BCP, creating a new version entry for the rollback
# List versions
GET /api/brands/:brand_id/versions

# Rollback to version 3
POST /api/brands/:brand_id/rollback
{ "target_version": 3 }

Data Sources

Upload structured data (reviews, surveys, social analytics, support tickets) that the platform normalizes and uses to generate smart BCP update suggestions.

Source Type Description
reviews Product or service reviews with ratings and sentiment
surveys Customer survey responses and NPS data
social Social media analytics and engagement data
support Support ticket themes and resolution patterns
# Upload a data source
POST /api/brands/:brand_id/data-sources
Content-Type: multipart/form-data
{ source_type: "reviews", file: reviews.json }

# Run cross-source analysis
POST /api/brands/:brand_id/analyze
{ "source_ids": [1, 2, 3] }

Drafts & Review

The draft workflow lets you generate, review, and selectively apply BCP changes before they go live.

Step Endpoint Description
1. Generate POST /api/brands/:id/drafts/generate Analyzes selected data sources and proposes changes
2. Review GET /api/brands/:id/drafts/:draft_id View each proposed change with field path, current → suggested value
3. Accept/Reject PATCH /api/brands/:id/drafts/:draft_id/changes/:change_id Accept, reject, or modify individual changes
4. Publish POST /api/brands/:id/drafts/:draft_id/publish Apply accepted changes to the live BCP with a new version entry

Extensions & Policy Library

Global Policy Library (GPL)

The GPL is the canonical menu of marketing tactics, claim types, escalation triggers, platform constraints, and disclaimer templates that brands reference by ID. BCP ships with vertical defaults:

  • d2c-policy-defaults — 38+ tactics across urgency, scarcity, social proof, fear appeals, dark patterns, and more. 15+ claim types. Escalation triggers and disclaimer templates.
  • b2b-policy-defaults — B2B-specific policy defaults for enterprise marketing.
  • compliance-taxonomy — Taxonomy of compliance categories and industry profiles.

Brands set governance.tactics_policy.inherit_defaults: true to inherit GPL defaults, then override individual tactics via overrides[]. Platform constraints from the GPL are immutable — brands cannot relax them.

Official Extensions

Added under the extensions key for domain-specific needs:

  • ecommerce — Product presentation (description style, image guidelines, title format), pricing display (charm/prestige/round), sale vocabulary, shipping, and review response tone.

Companion Schemas

Companion contexts are separate JSON documents linked to the same brand:

  • claims-registry — Brand/product claims with GPL type refs, evidence links, verification status, and expiry dates. See Claims Registry.
View the full JSON schema for extensions, policy defaults, and companions on the Schema Browser.

Custom Extensions

Brands can add proprietary fields using the x- prefix pattern:

{
  "brand": { "id": "orbitops-cloud" },
  "x-orbitops-enterprise-playbooks": {
    "endorsement_guidelines": { ... },
    "athlete_tiers": { ... }
  }
}

API Reference

Authentication

API keys are created per-brand on the Access & Keys page. Each key is scoped to one brand and carries permissions that control what it can do:

PermissionGrants
read_bcp Read BCP JSON via /brands/:brand_id/brand-context.json (scoped to allowed sections)
evaluate Call text/design evaluation, rewrite, and image analysis endpoints

Pass the key as a Bearer token:

Authorization: Bearer bcp_AbCd1234...

When using an API key, you do not need to pass brand_id in the request body — the brand is resolved from the key automatically.

Read Brand Context

Fetch the brand's BCP JSON, scoped by the key's allowed sections.

GET /brands/:brand_id/brand-context.json
Authorization: Bearer bcp_...

Alternatively, pass the key as a query parameter:

GET /brands/:brand_id/brand-context.json?key=bcp_...

Without a key, only public sections (brand, identity, visual, metadata) are returned.

Evaluate Text

Score text against the brand's tone, vocabulary, tactics policy, and claims governance. Requires the evaluate permission.

POST /api/text/evaluate
Authorization: Bearer bcp_...
Content-Type: application/json

{
  "text": "Limited time offer! Buy now before it's too late!",
  "communication_type": "auto",
  "channel": "email"
}

communication_type can be auto (LLM detects it), ad_copy, product_listing, social_post, support_reply, etc. channel activates channel-specific overrides.

Rewrite Text

Rewrite off-brand text to align with the brand's voice and policies. Requires evaluate permission.

POST /api/text/rewrite
Authorization: Bearer bcp_...
Content-Type: application/json

{
  "text": "Cheap products on sale!!!",
  "communication_type": "product_listing"
}

Evaluate Design

Evaluate extracted design data (colors, fonts, logo) against brand visual guidelines. Requires evaluate permission.

POST /api/design/evaluate
Authorization: Bearer bcp_...
Content-Type: application/json

{
  "design_data": {
    "colors": [{ "hex": "#FF0000", "role_hint": "text" }],
    "background_colors": [{ "hex": "#FFFFFF" }],
    "fonts": ["Inter", "Roboto"],
    "has_logo": true
  },
  "source_app": "canva",
  "strictness": "standard"
}

Analyze Image

Analyze a rasterized design image against brand guidelines using vision models. Use this when the design has no editable layers (e.g. a pre-made banner). Requires evaluate permission.

POST /api/design/analyze-image
Authorization: Bearer bcp_...
Content-Type: application/json

{
  "image_base64": "<base64-encoded JPEG or PNG>",
  "image_mime_type": "image/jpeg",
  "source_app": "canva"
}