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
Parameter Type Required Description creative_manifestobject Yes Creative manifest with format_id and assets feature_idsstring[] No Filter to specific features. If omitted, evaluates all features the agent supports.
Response
Security scanner (clean)
Security scanner (threat detected)
Creative quality platform
Content categorizer
{
"$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
Field Description 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:
Concept Property governance Creative governance What’s evaluated Properties (websites, apps) Creatives (manifests) Feature declarations governance.property_featuresgovernance.creative_featuresEvaluation task Property list filters get_creative_featuresFeature values property-feature-value schemaSame fields (value, confidence, expires_at, etc.) Detailed intelligence Behind detail_url / methodology_url Behind detail_url / methodology_url