Skip to main content

Documentation Index

Fetch the complete documentation index at: https://agenticadvertisingorg-changeset-release-main.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

AdCP 3.0 Proposal - This protocol is under development for AdCP 3.0. Feedback welcome via GitHub Discussions.
Creative Governance standardizes how creatives are evaluated by specialized governance agents. It applies the same feature-based pattern as Property Governance — agents declare features they can evaluate, accept creative manifests, and return feature values.

Overview

Creative governance agents evaluate creatives and return feature values. Different agents evaluate different features:
Agent typeExample featuresFeature type
Security scannerauto_redirect, credential_harvest, cloakingBinary
Creative qualitybrand_consistency, platform_optimized, creative_quality_scoreQuantitative, binary
Content categorizationiab_casinos_gambling, iab_automotiveBinary (with confidence)
The protocol doesn’t define a fixed feature taxonomy. Vendors declare what they evaluate via get_adcp_capabilities and compete on coverage.

How it works

1. Agent declares features

A creative governance agent advertises its capabilities using the same feature definition pattern as property governance:
{
  "governance": {
    "creative_features": [
      {
        "feature_id": "auto_redirect",
        "type": "binary",
        "description": "Unauthorized navigation away from publisher context without user interaction",
        "methodology_url": "https://scanner.example.com/methodology"
      },
      {
        "feature_id": "credential_harvest",
        "type": "binary",
        "description": "Phishing techniques to gather user credentials or PII",
        "methodology_url": "https://scanner.example.com/methodology"
      },
      {
        "feature_id": "cloaking",
        "type": "binary",
        "description": "Creative masks or misrepresents content to evade detection",
        "methodology_url": "https://scanner.example.com/methodology"
      }
    ]
  }
}
The orchestrator reads these declarations via get_adcp_capabilities before evaluating any creative. If a required feature is absent from an agent’s declaration, the orchestrator surfaces the gap immediately rather than discovering it mid-evaluation.

2. Orchestrator evaluates a creative

The orchestrator calls get_creative_features with a creative manifest:
{
  "creative_manifest": {
    "format_id": {
      "agent_url": "https://creative.adcontextprotocol.org",
      "id": "html5-display-300x250"
    },
    "assets": {
      "creative_html": {
        "url": "https://cdn.agency.com/creative/abc123.html"
      }
    }
  }
}

3. Agent returns feature values

The agent evaluates the creative and returns feature values. The response shape is the same regardless of agent type:
{
  "results": [
    { "feature_id": "auto_redirect", "value": true, "confidence": 0.97 },
    { "feature_id": "credential_harvest", "value": false },
    { "feature_id": "cloaking", "value": false }
  ],
  "detail_url": "https://scanner.example.com/reports/ctx_abc123"
}

4. Orchestrator applies requirements

The orchestrator evaluates the feature values against buyer-defined requirements — the same pattern as property list feature requirements:
  • Security: reject if auto_redirect is true
  • Quality: reject if brand_consistency is below 80
  • Categorization: reject if iab_casinos_gambling is true and campaign excludes gambling

Design principles

Feature IDs enforce strictness, not schema rigidity. A categorization agent that declares iab_casinos_gambling using IAB Content Taxonomy 3.1 ID 181 is as strict as any custom schema — the discipline lives in the agent’s methodology, not in the wire format. An orchestrator that requires iab_casinos_gambling: false gets a binary pass/fail answer regardless of how the agent detected the content. The feature ID is the contract. The protocol staying schema-agnostic means adding a new IAB category or scanning technique does not require a protocol change. Confidence is opt-in, not mandatory. The confidence field on a feature result is optional. Security scanners typically omit it — a creative either contains a credential harvesting pattern or it does not. Categorization agents include it because content detection is probabilistic: a creative may be 94% likely to contain gambling content. The agent decides what to disclose. An orchestrator that cannot tolerate ambiguity requires value: false and ignores confidence entirely; an orchestrator that wants to threshold probabilistic results uses it. This is the same field that exists on property-feature-value for property governance. Orchestrator-enforced consistency. An orchestrator that requires iab_casinos_gambling from its categorization agent discovers at capability-check time — before any creative is evaluated — whether the agent supports that feature. If it does not, the orchestrator fails fast and surfaces the gap. This mirrors how property governance works: IAS and DoubleVerify evaluate different property features; the orchestrator determines which features are required and routes accordingly. Mandating a fixed feature set in the protocol schema would mean every new IAB category or custom brand requirement requires a protocol revision. The protocol defines the enforcement mechanism; the orchestrator defines the requirements. Opaque detailed intelligence. Feature values on the wire are pass/fail (binary) or scores (quantitative). Detection methodology, threat intelligence, and detailed scoring breakdowns stay behind the vendor’s access-controlled detail_url and methodology_url.

Multi-agent collaboration

Creative governance evaluations typically involve multiple specialist agents working in parallel — the same pattern property governance uses for sustainability, quality, and suitability agents.
AgentFeatures returnedOrchestrator requirement
Security scannerauto_redirect, cloakingBlock if any are true
Creative quality platformbrand_consistency, platform_optimizedBlock if score below threshold
Content categorizeriab_casinos_gambling, iab_automotiveBlock if excluded category is true
Each agent uses the same get_creative_features task. The orchestrator calls them in parallel, collects independent result sets, and applies its requirements across all of them. No agent needs to know about the others. This means a buyer can:
  • Add a new specialist agent without changing existing agents or the evaluation protocol
  • Apply different confidence thresholds per agent type
  • Replace one vendor with another without changing the evaluation logic for other agents
The orchestrator’s feature requirements — not the protocol schema — define what “complete” creative governance means for a given campaign.

Pricing

Creative governance agents that charge for evaluations use the same vendor pricing pattern as other AdCP vendor services. When the buyer provides account on the get_creative_features request, the response includes pricing_option_id, vendor_cost, currency, and optionally consumption details (e.g., tokens for LLM-based scanning). The buyer reports usage via report_usage with standards_id and pricing_option_id for billing reconciliation. This is the same discover-execute-report loop used by creative agents, signals agents, and content standards. Governance agents that charge MUST implement the Accounts Protocol.

Async evaluation

If evaluation takes time (e.g., sandboxed execution for malware scanning), the agent returns status: "working" and delivers results via the standard webhook mechanism. No custom status values or webhook events needed — the existing async task pattern handles this.