> ## Documentation Index
> Fetch the complete documentation index at: https://agenticadvertisingorg-snap-format-preview-links.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Property Governance Tasks

> Task reference for AdCP property governance — property list management, feature evaluation, and delivery validation tasks.

# Property Governance Tasks

Property governance uses a **stateful** model where all evaluation happens through property list management. Create lists with filters and brand references, then resolve them to get compliant properties.

## Discovery

| Task                                                            | Purpose                     | Response Time |
| --------------------------------------------------------------- | --------------------------- | ------------- |
| [get\_adcp\_capabilities](/docs/protocol/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](/docs/protocol/get_adcp_capabilities#governance-protocol) for details on the `property_features` array.

## Property List Management

| Task                                                            | Purpose                                | Response Time |
| --------------------------------------------------------------- | -------------------------------------- | ------------- |
| [create\_property\_list](./property_lists#create_property_list) | Create a new property list             | \~500ms       |
| [update\_property\_list](./property_lists#update_property_list) | Modify an existing list                | \~500ms       |
| [get\_property\_list](./property_lists#get_property_list)       | Retrieve list with resolved properties | \~2-5s        |
| [list\_property\_lists](./property_lists#list_property_lists)   | List all property lists                | \~500ms       |
| [delete\_property\_list](./property_lists#delete_property_list) | Delete a property list                 | \~200ms       |

See [Property List Management](./property_lists) for complete CRUD documentation.

## Validation

| Task                                                         | Purpose                                  | Response Time |
| ------------------------------------------------------------ | ---------------------------------------- | ------------- |
| [validate\_property\_delivery](./validate_property_delivery) | Validate delivery records against a list | \~1-5s        |

See [validate\_property\_delivery](./validate_property_delivery) for post-campaign compliance validation.

## Task Selection Guide

### Creating a Property List

Use `create_property_list` with filters and brand reference:

```json theme={null}
{
  "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": {
      "domain": "toybrand.com"
    }
  }
}
```

**Filters** (all optional): `countries_all` restricts to properties with data in ALL listed countries, `channels_any` restricts to properties supporting ANY listed channel. Omitting a filter means no restriction on that dimension.

**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`](/docs/protocol/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:

```json theme={null}
{
  "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:

```json theme={null}
{
  "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:

```python theme={null}
# Create lists on specialized agents
consent_list = consent_agent.create_property_list(
    name="Q1 - Consent",
    base_properties=master_list,
    brand=brand
)
consent_agent.update_property_list(
    list_id=consent_list.list_id,
    webhook_url="https://buyer.example.com/webhooks/consent"
)

suitability_list = suitability_agent.create_property_list(
    name="Q1 - Sustainability",
    base_properties=master_list,
    brand=brand
)
suitability_agent.update_property_list(
    list_id=suitability_list.list_id,
    webhook_url="https://buyer.example.com/webhooks/suitability"
)

# Buyer agent intersects results when webhooks fire
```
