Property Governance Tasks
AdCP 3.0 Proposal - These tasks are under development for AdCP 3.0.
Property governance uses a stateful model where all evaluation happens through property list management. Create lists with filters and brand manifests, then resolve them to get compliant properties.
Discovery
| Task | Purpose | Response Time |
|---|
| get_adcp_capabilities | Discover agent capabilities | ~200ms |
Use the protocol-level get_adcp_capabilities task to discover what features a governance agent can evaluate. See the governance section for details on the property_features array.
Property List Management
| Task | Purpose | Response Time |
|---|
| create_property_list | Create a new property list | ~500ms |
| update_property_list | Modify an existing list | ~500ms |
| get_property_list | Retrieve list with resolved properties | ~2-5s |
| list_property_lists | List all property lists | ~500ms |
| delete_property_list | Delete a property list | ~200ms |
See Property List Management for complete CRUD documentation.
Validation
| Task | Purpose | Response Time |
|---|
| validate_property_delivery | Validate delivery records against a list | ~1-5s |
See validate_property_delivery for post-campaign compliance validation.
Task Selection Guide
Creating a Property List
Use create_property_list with filters and brand manifest:
{
"tool": "create_property_list",
"arguments": {
"name": "Q1 Campaign - UK Premium",
"base_properties": [
{
"selection_type": "publisher_tags",
"publisher_domain": "raptive.com",
"tags": ["premium_news"]
}
],
"filters": {
"countries_all": ["UK"],
"channels_any": ["display", "video"],
"feature_requirements": [
{
"feature_id": "mfa_score",
"min_value": 85,
"max_value": 100
},
{
"feature_id": "coppa_certified",
"allowed_values": [true]
}
]
},
"brand_manifest": {
"name": "ToyBrand",
"industry": "toys",
"target_audience": "children_under_13"
}
}
}
Required filters: At least one country in countries_all and one channel in channels_any must be provided.
Base properties: An array of property sources to evaluate. Each entry is a discriminated union with selection_type:
publisher_tags: { "selection_type": "publisher_tags", "publisher_domain": "...", "tags": [...] }
publisher_ids: { "selection_type": "publisher_ids", "publisher_domain": "...", "property_ids": [...] }
identifiers: { "selection_type": "identifiers", "identifiers": [...] }
- Omitted: Query the agent’s entire property database
Filter logic (explicit in field names):
countries_all: Property must have feature data for ALL listed countries
channels_any: Property must support ANY of the listed channels
feature_requirements: Property must pass ALL requirements (AND)
Filters have two built-in fields (countries_all, channels_any) plus feature_requirements which reference features the agent provides (discovered via get_adcp_capabilities). For quantitative features, use min_value/max_value. For binary or categorical features, use allowed_values.
Getting Resolved Properties
Use get_property_list to retrieve the list with resolved identifiers:
{
"tool": "get_property_list",
"arguments": {
"list_id": "pl_abc123",
"resolve": true
}
}
Response includes resolved identifiers. Note that raw scores are not returned - only identifiers that pass the filter thresholds are included:
{
"list_id": "pl_abc123",
"identifiers": [
{ "type": "domain", "value": "bbc.co.uk" },
{ "type": "domain", "value": "news.sky.com" }
],
"cache_valid_until": "2026-01-04T17:15:00Z"
}
The auth_token for sharing with sellers is returned at creation time (from create_property_list). Store it securely - it’s only returned once.
Multi-Agent Integration
Create the same property list on multiple governance agents, then configure webhooks to aggregate results:
# Create lists on specialized agents
consent_list = consent_agent.create_property_list(
name="Q1 - Consent",
base_properties=master_list,
brand_manifest=brand_manifest
)
consent_agent.update_property_list(
list_id=consent_list.list_id,
webhook_url="https://buyer.example.com/webhooks/consent"
)
scope3_list = scope3_agent.create_property_list(
name="Q1 - Sustainability",
base_properties=master_list,
brand_manifest=brand_manifest
)
scope3_agent.update_property_list(
list_id=scope3_list.list_id,
webhook_url="https://buyer.example.com/webhooks/scope3"
)
# Buyer agent intersects results when webhooks fire