Skip to main content

get_creative_features

AdCP 3.0 Proposal - This task is under development for AdCP 3.0.
Evaluates a creative manifest and returns feature values from a creative governance agent.

Use cases

  • Security scanning: Detect malware, auto-redirects, credential harvesting, cloaking
  • Creative quality: Evaluate brand consistency, platform optimization, guideline adherence
  • Content categorization: Classify creative content against IAB Content Taxonomy or other standards
  • Accessibility: Check WCAG compliance, screen reader compatibility

Request

{
  "$schema": "/schemas/creative/get-creative-features-request.json",
  "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"
      }
    }
  },
  "feature_ids": ["auto_redirect", "credential_harvest", "cloaking"]
}

Parameters

ParameterTypeRequiredDescription
creative_manifestobjectYesCreative manifest with format_id and assets
feature_idsstring[]NoFilter to specific features. If omitted, evaluates all features the agent supports.

Response

{
  "$schema": "/schemas/creative/get-creative-features-response.json",
  "results": [
    { "feature_id": "auto_redirect", "value": false },
    { "feature_id": "credential_harvest", "value": false },
    { "feature_id": "cloaking", "value": false }
  ],
  "detail_url": "https://scanner.example.com/reports/ctx_abc123"
}

Response fields

FieldDescription
resultsArray of feature evaluation results
results[].feature_idWhich feature was evaluated
results[].valueFeature value: boolean (binary), number (quantitative), or string (categorical)
results[].confidenceConfidence score (0-1), when applicable
results[].unitUnit for quantitative values (e.g., percentage, score)
results[].expires_atWhen this evaluation expires and should be refreshed
results[].measured_atWhen this feature was evaluated
results[].methodology_versionVersion of methodology used
results[].detailsVendor-specific details
detail_urlURL to vendor’s full assessment. Access-controlled by the vendor.

Error response

{
  "errors": [
    {
      "code": "CREATIVE_INACCESSIBLE",
      "message": "Could not retrieve creative assets for evaluation"
    }
  ]
}

Async evaluation

Some evaluations (e.g., sandboxed malware scanning) take time. The agent returns status: "working" and delivers results via webhook when complete. This uses the standard async task pattern — no custom status values needed.

Orchestrator logic

The orchestrator applies feature requirements on the client side, the same way property list feature requirements work:
const result = await agent.getCreativeFeatures({
  creative_manifest: manifest
});

if (result.errors) {
  // Handle error - reject or retry
  return;
}

// Apply security requirements
const threats = result.results.filter(
  f => ['auto_redirect', 'credential_harvest', 'cloaking'].includes(f.feature_id)
    && f.value === true
);
if (threats.length > 0) {
  // Reject - security threat detected
  return;
}

// Apply quality requirements
const quality = result.results.find(f => f.feature_id === 'brand_consistency');
if (quality && quality.value < 80) {
  // Reject - below quality threshold
  return;
}

Relationship to property governance

Creative governance follows the same pattern as property governance:
ConceptProperty governanceCreative governance
What’s evaluatedProperties (websites, apps)Creatives (manifests)
Feature declarationsgovernance.property_featuresgovernance.creative_features
Evaluation taskProperty list filtersget_creative_features
Feature valuesproperty-feature-value schemaSame fields (value, confidence, expires_at, etc.)
Detailed intelligenceBehind detail_url / methodology_urlBehind detail_url / methodology_url