@adcp/sdk API Reference - v14.0.0-beta.6
    Preparing search index...

    Function legacyCapabilitiesResponse

    • Parameters

      • data: {
            context?: Omit<Omit<{}, "bank">, "authentication"> & {
                authentication?: unknown;
            };
            governance_context?: string;
            adcp: {
                major_versions: number[];
                supported_versions?: string[];
                build_version?: string;
                idempotency: | {
                    supported: true;
                    replay_ttl_seconds: number;
                    in_flight_max_seconds?: number;
                    account_id_is_opaque?: boolean;
                }
                | { supported: false };
                capability_changes?: {
                    capabilities_version?: string;
                    last_modified?: string;
                    cache_ttl_seconds?: number;
                    notifications?:
                        | {
                            supported: true;
                            registration_task: "sync_agent_notification_configs";
                            event_types: "capabilities.changed"[];
                            coalescence_window_seconds?: number;
                        }
                        | { supported: false };
                };
                governance_enforcement?: {
                    tasks: (
                        | {
                            task: "create_media_buy";
                            modes: ("signed_context" | "online_execution_check")[];
                        }
                        | {
                            task: "update_media_buy";
                            modes: ("signed_context" | "online_execution_check")[];
                        }
                        | {
                            task: "buy_products";
                            modes: ("signed_context" | "online_execution_check")[];
                        }
                        | {
                            task: "accept_proposal";
                            modes: ("signed_context" | "online_execution_check")[];
                        }
                        | {
                            task: "control_media_buy";
                            modes: ("signed_context" | "online_execution_check")[];
                        }
                        | { task: "build_creative"; modes: "signed_context"[] }
                        | { task: "activate_signal"; modes: "signed_context"[] }
                        | { task: "acquire_rights"; modes: "signed_context"[] }
                        | { task: "update_rights"; modes: "signed_context"[] }
                    )[];
                };
                attestations?: {
                    accepted_claim_types: string[];
                    accepted_proof_formats: string[];
                    supported_delivery_methods: (
                        "credential_uri"
                        | "issuer_credential_id"
                        | "embedded"
                    )[];
                    accepted_issuers: (
                        | {
                            issuer: | {
                                type: "brand";
                                brand: {
                                    domain: string;
                                    brand_id?: (...)
                                    | (...);
                                    countries?: (...) | (...);
                                    industries?: (...) | (...);
                                    data_subject_contestation?: (...) | (...);
                                    brand_kit_override?: (...) | (...);
                                };
                                ext?: (...) & (...);
                            }
                            | { type: "agent"; agent_url: string; ext?: (...) & (...) }
                            | { type: "origin"; origin: string; ext?: (...) & (...) };
                            claim_types?: string[];
                            proof_formats?: string[];
                            credential_origins?: string[];
                            resolvers?: ((...) & (...) | (...) & (...))[];
                            ext?: Omit<Omit<(...), (...)>, "authentication"> & {
                                authentication?: unknown;
                            };
                        }
                        | {
                            issuer: | {
                                type: "brand";
                                brand: {
                                    domain: string;
                                    brand_id?: (...)
                                    | (...);
                                    countries?: (...) | (...);
                                    industries?: (...) | (...);
                                    data_subject_contestation?: (...) | (...);
                                    brand_kit_override?: (...) | (...);
                                };
                                ext?: (...) & (...);
                            }
                            | { type: "agent"; agent_url: string; ext?: (...) & (...) }
                            | { type: "origin"; origin: string; ext?: (...) & (...) };
                            claim_types?: string[];
                            proof_formats?: string[];
                            credential_origins?: string[];
                            resolvers?: ((...) & (...) | (...) & (...))[];
                            ext?: Omit<Omit<(...), (...)>, "authentication"> & {
                                authentication?: unknown;
                            };
                        }
                    )[];
                    accepted_verifiers?: (
                        | {
                            agent_url: string;
                            claim_types?: string[];
                            proof_formats?: string[];
                            ext?: Omit<(...), (...)> & { authentication?: ... };
                        }
                        | {
                            agent_url: string;
                            claim_types?: string[];
                            proof_formats?: string[];
                            ext?: Omit<(...), (...)> & { authentication?: ... };
                        }
                    )[];
                    max_embedded_credential_bytes?: number;
                    ext?: Omit<Omit<{ [key: string]: unknown }, "bank">, "authentication"> & {
                        authentication?: unknown;
                    };
                };
            };
            supported_protocols: (
                | "brand"
                | "signals"
                | "governance"
                | "creative"
                | "measurement"
                | "sponsored_intelligence"
                | "media_buy"
            )[];
            account?: {
                require_operator_auth?: boolean;
                authorization_endpoint?: string;
                supported_billing: BillingParty[];
                supported_account_currency_modes?: AccountCurrencyMode[];
                timezone?: {
                    mode: "seller_fixed"
                    | "account_fixed";
                    fixed_timezone?: string;
                    account_selection?: "seller_assigned" | "buyer_selected";
                    supported_timezones?: string[];
                };
                required_for_products?: boolean;
                account_financials?: boolean;
                notifications?: | {
                    supported: true;
                    registration_task: "sync_accounts";
                    read_task: "list_accounts";
                    event_types: "account.status_changed"[];
                    supports_webhook_activity?: boolean;
                }
                | { supported: false };
                identity_updates?:
                    | {
                        supported: true;
                        supported_changes: ("operator" | "operator_unit" | "operator_unit_name")[];
                    }
                    | { supported: false };
                sandbox?: boolean;
            };
            media_buy?: {
                supported_pricing_models?: PricingModel[];
                buying_modes?: ("brief" | "wholesale" | "refine")[];
                availability_horizon?: boolean;
                lifecycle_tools?: (
                    | "buy_products"
                    | "accept_proposal"
                    | "control_media_buy"
                    | "request_proposals"
                    | "refine_proposals"
                    | "decline_proposals"
                    | "list_products"
                )[];
                proposal_refinement?: {
                    supported_dimensions: (
                        | "impressions"
                        | "cpm"
                        | "flight"
                        | "total_budget"
                        | "product_changes"
                        | "alternatives"
                        | "criteria"
                    )[];
                    max_alternatives?: number;
                };
                reporting_delivery_methods?: ("offline" | "webhook")[];
                performance_feedback?: { reports_application_status?: boolean };
                offline_delivery_protocols?: CloudStorageProtocol[];
                supports_proposals?: boolean;
                outcome_target?: boolean;
                governance_aware?: boolean;
                propagation_surfaces?: ("webhook" | "snapshot" | "out_of_band")[];
                creative_approval_mode?: "auto_approve" | "require_human";
                supported_indicator_types?: IndicatorType[];
                relationship_notifications?: {
                    supported: true;
                    registration_task: "sync_accounts";
                    event_types: ("creative.assignment_changed" | "indicators.changed")[];
                    repair_tasks: "get_media_buys"[];
                    projection_tasks?: "list_creatives"[];
                    supports_webhook_activity?: boolean;
                };
                features?: {
                    inline_creative_management?: boolean;
                    property_list_filtering?: boolean;
                    catalog_management?: boolean;
                    catalog_item_availability_updates?: boolean;
                    committed_metrics_supported?: boolean;
                    seller_optimized_budget?: boolean;
                    bidding_policy?: {
                        media_buy?: {
                            fixed?: {
                                modes?: ...;
                                cost_per_strengths?: ...;
                                roas_strengths?: ...;
                                supported_combinations?: ...;
                            };
                            seller_optimized?: {
                                modes?: ...;
                                cost_per_strengths?: ...;
                                roas_strengths?: ...;
                                supported_combinations?: ...;
                            };
                        };
                        package?: {
                            fixed?: {
                                modes?: ...;
                                cost_per_strengths?: ...;
                                roas_strengths?: ...;
                                supported_combinations?: ...;
                            };
                            seller_optimized?: {
                                modes?: ...;
                                cost_per_strengths?: ...;
                                roas_strengths?: ...;
                                supported_combinations?: ...;
                            };
                        };
                    };
                    [key: string]: | boolean
                    | {
                        media_buy?: {
                            fixed?: {
                                modes?: ...;
                                cost_per_strengths?: ...;
                                roas_strengths?: ...;
                                supported_combinations?: ...;
                            };
                            seller_optimized?: {
                                modes?: ...;
                                cost_per_strengths?: ...;
                                roas_strengths?: ...;
                                supported_combinations?: ...;
                            };
                        };
                        package?: {
                            fixed?: {
                                modes?: ...;
                                cost_per_strengths?: ...;
                                roas_strengths?: ...;
                                supported_combinations?: ...;
                            };
                            seller_optimized?: {
                                modes?: ...;
                                cost_per_strengths?: ...;
                                roas_strengths?: ...;
                                supported_combinations?: ...;
                            };
                        };
                    }
                    | undefined;
                };
                execution?: {
                    trusted_match?: { surfaces?: PropertyType[] };
                    axe_integrations?: string[];
                    creative_specs?: {
                        vast_versions?: string[];
                        mraid_versions?: string[];
                        vpaid?: boolean;
                        simid?: boolean;
                        vast_validation?: "document" | "structural" | "wrapper";
                    };
                    targeting?: {
                        geo_countries?: boolean;
                        geo_regions?: | boolean
                        | {
                            countries: Omit<(...), (...)> & { authentication?: ... };
                            catalog_version?: string;
                            as_of?: string;
                            max_values_per_package?: number;
                            max_packages?: number;
                            ext?: (...) & (...);
                        };
                        geo_regions_exclude?: | boolean
                        | {
                            countries: Omit<(...), (...)> & { authentication?: ... };
                            catalog_version?: string;
                            as_of?: string;
                            max_values_per_package?: number;
                            max_packages?: number;
                            ext?: (...) & (...);
                        };
                        geo_metros?: {
                            nielsen_dma?: boolean;
                            uk_itl1?: boolean;
                            uk_itl2?: boolean;
                            eurostat_nuts2?: boolean;
                        };
                        geo_postal_areas?: {
                            US?: (...)[];
                            GB?: (...)[];
                            CA?: (...)[];
                            DE?: (...)[];
                            CH?: (...)[];
                            AT?: (...)[];
                            FR?: (...)[];
                            AU?: (...)[];
                            BR?: (...)[];
                            IN?: (...)[];
                            ZA?: (...)[];
                            us_zip?: boolean;
                            us_zip_plus_four?: boolean;
                            gb_outward?: boolean;
                            gb_full?: boolean;
                            ca_fsa?: boolean;
                            ca_full?: boolean;
                            de_plz?: boolean;
                            fr_code_postal?: boolean;
                            au_postcode?: boolean;
                            ch_plz?: boolean;
                            at_plz?: boolean;
                            [key: Uppercase<string>]: (...)[] | undefined;
                        };
                        geo_places?: Omit<Omit<(...), (...)>, "authentication"> & {
                            authentication?: unknown;
                        };
                        age_restriction?: {
                            supported?: boolean;
                            verification_methods?: (...)[];
                        };
                        demographics?: { supported: boolean };
                        language?:
                            | boolean
                            | { supported?: boolean; supported_languages?: (...)[] };
                        keyword_targets?: { supported_match_types: MatchType[] };
                        negative_keywords?: { supported_match_types: MatchType[] };
                        placement_selection?: boolean;
                        property_list?: boolean;
                        property_list_exclude?: boolean;
                        collection_list?: boolean;
                        collection_list_exclude?: boolean;
                        geo_proximity?: {
                            radius?: boolean;
                            travel_time?: boolean;
                            geometry?: boolean;
                            transport_modes?: (...)[];
                        };
                    };
                };
                audience_evidence?: {
                    supported_requirement_modes: ("required" | "preferred")[];
                    supported_presence_modes: ("required" | "when_available")[];
                    supports_attestation_evaluation: boolean;
                };
                rights_attestations?: { requirement: "required"
                | "optional" };
                audience_targeting?: {
                    supported_identifier_types: ("hashed_email" | "hashed_phone")[];
                    supports_platform_customer_id?: boolean;
                    supported_uid_types?: UIDType[];
                    minimum_audience_size: number;
                    matching_latency_hours?: { min?: number; max?: number };
                };
                supported_optimization_metrics?: (
                    | "clicks"
                    | "views"
                    | "completed_views"
                    | "reach"
                    | "engagements"
                    | "follows"
                    | "saves"
                    | "profile_visits"
                    | "attention_score"
                    | "viewed_seconds"
                    | "attention_seconds"
                )[];
                vendor_metric_optimization?: {
                    supported_targets?: ("cost_per" | "threshold_rate")[];
                };
                conversion_tracking?: {
                    multi_source_event_dedup?: boolean;
                    per_creative_attribution?: boolean;
                    supported_event_types?: EventType[];
                    supported_targets?: ("cost_per" | "per_ad_spend" | "maximize_value")[];
                    supported_uid_types?: UIDType[];
                    supported_hashed_identifiers?: ("hashed_email" | "hashed_phone")[];
                    supported_action_sources?: ActionSource[];
                    attribution_windows?: {
                        event_type?: EventType;
                        post_click: {
                            interval: number;
                            unit: (...) | (...) | (...) | (...) | (...);
                        }[];
                        post_view?: { interval: ...; unit: ... }[];
                    }[];
                };
                frequency_capping?: {
                    supported_per_units?: ReachUnit[];
                    supported_window_units?: string[];
                };
                budget_capping?: {
                    supported_scopes: ("package" | "media_buy")[];
                    supported_periods: "day"[];
                    timezone_basis: "fixed" | "account";
                    fixed_timezone?: string;
                    buyer_timezone_override?: boolean;
                };
                content_standards?: {
                    supports_local_evaluation?: boolean;
                    supported_channels?: MediaChannel[];
                    supports_webhook_delivery?: boolean;
                };
                portfolio?: {
                    publisher_domains: string[];
                    primary_channels?: MediaChannel[];
                    primary_countries?: string[];
                    description?: string;
                    advertising_policies?: string;
                };
            };
            signals?: {
                data_provider_domains?: string[];
                discovery_modes?: ("brief" | "wholesale")[];
                features?: {
                    catalog_signals?: boolean;
                    [key: string]: boolean | undefined;
                };
            };
            governance?: {
                runtime_attestations?: {
                    signal_activation: {
                        requirement: "required"
                        | "optional";
                        claim_types: string[];
                    };
                };
                aggregation_window_days?: number;
                property_features?: {
                    feature_id: string;
                    type: "binary"
                    | "categorical"
                    | "quantitative";
                    range?: { min: number; max: number };
                    categories?: string[];
                    description?: string;
                    methodology_url?: string;
                }[];
                creative_features?: {
                    feature_id: string;
                    type: "binary"
                    | "categorical"
                    | "quantitative";
                    range?: { min: number; max: number };
                    categories?: string[];
                    description?: string;
                    methodology_url?: string;
                }[];
            };
            sponsored_intelligence?: {
                endpoint: {
                    transports: { type: "mcp"
                    | "a2a"; url: string }[];
                    preferred?: "mcp" | "a2a";
                };
                capabilities: {
                    modalities?: {
                        conversational?: boolean;
                        voice?: boolean
                        | { provider?: string; voice_id?: string };
                        video?: boolean | { formats?: string[]; max_duration_seconds?: number };
                        avatar?: boolean | { provider?: string; avatar_id?: string };
                    };
                    components?: {
                        standard?: (
                            | "image"
                            | "text"
                            | "link"
                            | "product_card"
                            | "carousel"
                            | "action_button"
                        )[];
                        extensions?: Omit<Omit<{}, "bank">, "authentication"> & {
                            authentication?: unknown;
                        };
                    };
                    commerce?: { acp_checkout?: boolean };
                    a2ui?: { supported?: boolean; catalogs?: string[] };
                    mcp_apps?: boolean;
                };
                brand_url?: string;
            };
            brand?: {
                rights?: boolean;
                right_types?: RightType[];
                available_uses?: RightUse[];
                generation_providers?: string[];
                description?: string;
            };
            creative?: {
                supports_compliance?: boolean;
                has_creative_library?: boolean;
                supports_generation?: boolean;
                supports_transformation?: boolean;
                supports_transformers?: boolean;
                supports_refinement?: boolean;
                supports_spend_controls?: boolean;
                supports_evaluator?: boolean;
                refinable_retention_seconds?: number;
                multiplicity?: {
                    supports_catalog_fanout?: boolean;
                    max_creatives_limit?: number;
                    supports_signal_fanout?: boolean;
                    max_signal_conditions_limit?: number;
                    supports_variants?: boolean;
                    max_variants_limit?: number;
                    variant_dimensions?: (
                        "custom"
                        | "voice"
                        | "theme"
                        | "best_of_n"
                        | "transformer_config"
                    )[];
                    selection_strategies?: CreativeSelectionStrategy[];
                };
                supported_formats?: {
                    capability_id?: string;
                    format: | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "image";
                        params:
                            | {
                                experimental?: (...)
                                | (...)
                                | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                sizes?: (...) | (...);
                                pixel_ratios?: (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                aspect_ratio?: (...) | (...);
                                max_file_size_kb?: (...) | (...);
                                image_formats?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                                headline_max_chars?: (...) | (...);
                                body_text_max_chars?: (...) | (...);
                                cta_values?: (...) | (...);
                                asset_source?: (...) | (...) | (...) | (...) | (...) | (...) | (...);
                                buyer_asset_acceptance?: (...) | (...) | (...);
                                width: number;
                                height: number;
                            }
                            | {
                                experimental?: (...)
                                | (...)
                                | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                width?: (...) | (...);
                                height?: (...) | (...);
                                pixel_ratios?: (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                aspect_ratio?: (...) | (...);
                                max_file_size_kb?: (...) | (...);
                                image_formats?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                                headline_max_chars?: (...) | (...);
                                body_text_max_chars?: (...) | (...);
                                cta_values?: (...) | (...);
                                asset_source?: (...) | (...) | (...) | (...) | (...) | (...) | (...);
                                buyer_asset_acceptance?: (...) | (...) | (...);
                                sizes: (...)[];
                            }
                            | {
                                experimental?: (...)
                                | (...)
                                | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                width?: (...) | (...);
                                height?: (...) | (...);
                                sizes?: (...) | (...);
                                pixel_ratios?: (...) | (...);
                                aspect_ratio?: (...) | (...);
                                max_file_size_kb?: (...) | (...);
                                image_formats?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                                headline_max_chars?: (...) | (...);
                                body_text_max_chars?: (...) | (...);
                                cta_values?: (...) | (...);
                                asset_source?: (...) | (...) | (...) | (...) | (...) | (...) | (...);
                                buyer_asset_acceptance?: (...) | (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                            }
                            | {
                                experimental?: (...)
                                | (...)
                                | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                width?: (...) | (...);
                                height?: (...) | (...);
                                sizes?: (...) | (...);
                                pixel_ratios?: (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                aspect_ratio?: (...) | (...);
                                max_file_size_kb?: (...) | (...);
                                image_formats?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                                headline_max_chars?: (...) | (...);
                                body_text_max_chars?: (...) | (...);
                                cta_values?: (...) | (...);
                                asset_source?: (...) | (...) | (...) | (...) | (...) | (...) | (...);
                                buyer_asset_acceptance?: (...) | (...) | (...);
                            };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "html5";
                        params:
                            | {
                                width: number;
                                height: number;
                                experimental?: (...)
                                | (...)
                                | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                sizes?: (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                max_initial_load_kb?: (...) | (...);
                                max_polite_load_kb?: (...) | (...);
                                host_initiated_subload?: (...) | (...) | (...);
                                max_animation_duration_ms?: (...) | (...);
                                max_cpu_load_percent?: (...) | (...);
                                mraid_required?: (...) | (...) | (...);
                                mraid_version?: (...) | (...) | (...);
                                om_sdk_required?: (...) | (...) | (...);
                                clicktag_macro?: (...) | (...) | (...);
                                backup_image_required?: (...) | (...) | (...);
                                backup_image_max_size_kb?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                            }
                            | {
                                sizes: (...)[];
                                experimental?: (...) | (...) | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                width?: (...) | (...);
                                height?: (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                max_initial_load_kb?: (...) | (...);
                                max_polite_load_kb?: (...) | (...);
                                host_initiated_subload?: (...) | (...) | (...);
                                max_animation_duration_ms?: (...) | (...);
                                max_cpu_load_percent?: (...) | (...);
                                mraid_required?: (...) | (...) | (...);
                                mraid_version?: (...) | (...) | (...);
                                om_sdk_required?: (...) | (...) | (...);
                                clicktag_macro?: (...) | (...) | (...);
                                backup_image_required?: (...) | (...) | (...);
                                backup_image_max_size_kb?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                            }
                            | {
                                min_width?: (...)
                                | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                experimental?: (...) | (...) | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                width?: (...) | (...);
                                height?: (...) | (...);
                                sizes?: (...) | (...);
                                max_initial_load_kb?: (...) | (...);
                                max_polite_load_kb?: (...) | (...);
                                host_initiated_subload?: (...) | (...) | (...);
                                max_animation_duration_ms?: (...) | (...);
                                max_cpu_load_percent?: (...) | (...);
                                mraid_required?: (...) | (...) | (...);
                                mraid_version?: (...) | (...) | (...);
                                om_sdk_required?: (...) | (...) | (...);
                                clicktag_macro?: (...) | (...) | (...);
                                backup_image_required?: (...) | (...) | (...);
                                backup_image_max_size_kb?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                            }
                            | {
                                experimental?: (...)
                                | (...)
                                | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                width?: (...) | (...);
                                height?: (...) | (...);
                                sizes?: (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                max_initial_load_kb?: (...) | (...);
                                max_polite_load_kb?: (...) | (...);
                                host_initiated_subload?: (...) | (...) | (...);
                                max_animation_duration_ms?: (...) | (...);
                                max_cpu_load_percent?: (...) | (...);
                                mraid_required?: (...) | (...) | (...);
                                mraid_version?: (...) | (...) | (...);
                                om_sdk_required?: (...) | (...) | (...);
                                clicktag_macro?: (...) | (...) | (...);
                                backup_image_required?: (...) | (...) | (...);
                                backup_image_max_size_kb?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                            };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "display_tag";
                        params:
                            | {
                                width: number;
                                height: number;
                                experimental?: (...)
                                | (...)
                                | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                sizes?: (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                supported_tag_types?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                                max_redirect_depth?: (...) | (...);
                                max_response_time_ms?: (...) | (...);
                                backup_image_required?: (...) | (...) | (...);
                                backup_image_max_size_kb?: (...) | (...);
                                om_sdk_required?: (...) | (...) | (...);
                            }
                            | {
                                sizes: (...)[];
                                experimental?: (...) | (...) | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                width?: (...) | (...);
                                height?: (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                supported_tag_types?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                                max_redirect_depth?: (...) | (...);
                                max_response_time_ms?: (...) | (...);
                                backup_image_required?: (...) | (...) | (...);
                                backup_image_max_size_kb?: (...) | (...);
                                om_sdk_required?: (...) | (...) | (...);
                            }
                            | {
                                min_width?: (...)
                                | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                experimental?: (...) | (...) | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                width?: (...) | (...);
                                height?: (...) | (...);
                                sizes?: (...) | (...);
                                supported_tag_types?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                                max_redirect_depth?: (...) | (...);
                                max_response_time_ms?: (...) | (...);
                                backup_image_required?: (...) | (...) | (...);
                                backup_image_max_size_kb?: (...) | (...);
                                om_sdk_required?: (...) | (...) | (...);
                            }
                            | {
                                experimental?: (...)
                                | (...)
                                | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                width?: (...) | (...);
                                height?: (...) | (...);
                                sizes?: (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                supported_tag_types?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                                max_redirect_depth?: (...) | (...);
                                max_response_time_ms?: (...) | (...);
                                backup_image_required?: (...) | (...) | (...);
                                backup_image_max_size_kb?: (...) | (...);
                                om_sdk_required?: (...) | (...) | (...);
                            };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "image_carousel";
                        params: {
                            experimental?: boolean;
                            deprecated?: boolean;
                            v1_translatable?: boolean;
                            since_version?: string;
                            migration_target_version?: string;
                            composition_model?: "deterministic" | "algorithmic";
                            provenance_required?: boolean;
                            platform_extensions?: (...)[];
                            synthesis_nondeterministic?: boolean;
                            slots?: (...)[];
                            required_connections?: (...)[];
                            reference_mutability?:
                                | "immutable_snapshot"
                                | "mutable_requires_reapproval"
                                | "mutable_auto_recheck";
                            production_window_business_days?: number;
                            card_aspect_ratio?: string;
                            min_cards?: number;
                            max_cards?: number;
                            allowed_card_media_asset_types?: (...)[];
                            allowed_card_asset_types?: (...)[];
                            card_image_max_file_size_kb?: number;
                            card_video_max_file_size_kb?: number;
                            card_video_max_duration_ms?: number;
                            primary_text_max_chars?: number;
                            card_headline_max_chars?: number;
                            card_description_max_chars?: number;
                            ssl_required?: boolean;
                        };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "video_hosted";
                        params: {
                            experimental?: boolean;
                            deprecated?: boolean;
                            v1_translatable?: boolean;
                            since_version?: string;
                            migration_target_version?: string;
                            composition_model?: "deterministic" | "algorithmic";
                            provenance_required?: boolean;
                            platform_extensions?: (...)[];
                            synthesis_nondeterministic?: boolean;
                            slots?: (...)[];
                            required_connections?: (...)[];
                            reference_mutability?:
                                | "immutable_snapshot"
                                | "mutable_requires_reapproval"
                                | "mutable_auto_recheck";
                            production_window_business_days?: number;
                            orientation?: "vertical"
                            | "horizontal"
                            | "square";
                            aspect_ratio?: string;
                            min_width?: number;
                            min_height?: number;
                            max_width?: number;
                            max_height?: number;
                            duration_ms_range?: (...)[];
                            duration_ms_exact?: number;
                            video_codecs?: (...)[];
                            audio_codecs?: (...)[];
                            containers?: (...)[];
                            min_bitrate_kbps?: number;
                            max_bitrate_kbps?: number;
                            max_file_size_mb?: number;
                            frame_rates?: (...)[];
                            captions?: "required" | "not_required" | "recommended";
                            om_sdk_required?: boolean;
                            headline_max_chars?: number;
                            primary_text_max_chars?: number;
                            brand_name_max_chars?: number;
                            cta_values?: (...)[];
                            companion_banner_widths?: (...)[];
                            companion_banner_heights?: (...)[];
                            asset_source?:
                                | "buyer_uploaded"
                                | "publisher_host_recorded"
                                | "seller_pre_rendered_from_brief"
                                | "seller_human_designed"
                                | "agent_synthesized"
                                | "publisher_owned_reference";
                            buyer_asset_acceptance?: "rejected"
                            | "accepted";
                        };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "video_vast";
                        params: {
                            experimental?: boolean;
                            deprecated?: boolean;
                            v1_translatable?: boolean;
                            since_version?: string;
                            migration_target_version?: string;
                            composition_model?: "deterministic" | "algorithmic";
                            provenance_required?: boolean;
                            platform_extensions?: (...)[];
                            synthesis_nondeterministic?: boolean;
                            slots?: (...)[];
                            required_connections?: (...)[];
                            reference_mutability?:
                                | "immutable_snapshot"
                                | "mutable_requires_reapproval"
                                | "mutable_auto_recheck";
                            production_window_business_days?: number;
                            orientation?: "vertical"
                            | "horizontal"
                            | "square";
                            aspect_ratio?: string;
                            vast_version?: VASTVersion;
                            vpaid_enabled?: boolean;
                            vpaid_version?: "1.0" | "2.0";
                            simid_supported?: boolean;
                            duration_ms_range?: (...)[];
                            duration_ms_exact?: number;
                            min_width?: number;
                            max_width?: number;
                            min_height?: number;
                            max_height?: number;
                            linear_required?: boolean;
                            skippable_after_ms?: number;
                            max_wrapper_depth?: number;
                            ssl_required?: boolean;
                        };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "audio_hosted";
                        params: {
                            experimental?: boolean;
                            deprecated?: boolean;
                            v1_translatable?: boolean;
                            since_version?: string;
                            migration_target_version?: string;
                            composition_model?: "deterministic" | "algorithmic";
                            provenance_required?: boolean;
                            platform_extensions?: (...)[];
                            synthesis_nondeterministic?: boolean;
                            slots?: (...)[];
                            required_connections?: (...)[];
                            reference_mutability?:
                                | "immutable_snapshot"
                                | "mutable_requires_reapproval"
                                | "mutable_auto_recheck";
                            production_window_business_days?: number;
                            duration_ms_range?: (...)[];
                            duration_ms_exact?: number;
                            audio_codecs?: (...)[];
                            audio_sample_rates?: (...)[];
                            audio_channels?: (...)[];
                            min_bitrate_kbps?: number;
                            max_bitrate_kbps?: number;
                            max_file_size_mb?: number;
                            loudness_lufs?: number;
                            loudness_tolerance_db?: number;
                            true_peak_dbfs?: number;
                            asset_source?:
                                | "buyer_uploaded"
                                | "publisher_host_recorded"
                                | "seller_pre_rendered_from_brief"
                                | "seller_human_designed"
                                | "agent_synthesized"
                                | "publisher_owned_reference";
                            buyer_asset_acceptance?: "rejected"
                            | "accepted";
                            companion_image_required?: boolean;
                            companion_image_aspect_ratio?: string;
                            companion_image_max_file_size_kb?: number;
                            brand_name_max_chars?: number;
                        };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "audio_daast";
                        params: {
                            experimental?: boolean;
                            deprecated?: boolean;
                            v1_translatable?: boolean;
                            since_version?: string;
                            migration_target_version?: string;
                            composition_model?: "deterministic" | "algorithmic";
                            provenance_required?: boolean;
                            platform_extensions?: (...)[];
                            synthesis_nondeterministic?: boolean;
                            slots?: (...)[];
                            required_connections?: (...)[];
                            reference_mutability?:
                                | "immutable_snapshot"
                                | "mutable_requires_reapproval"
                                | "mutable_auto_recheck";
                            production_window_business_days?: number;
                            daast_version?: "1.0"
                            | "1.1";
                            duration_ms_range?: (...)[];
                            duration_ms_exact?: number;
                            linear_required?: boolean;
                            max_wrapper_depth?: number;
                            ssl_required?: boolean;
                            companion_image_required?: boolean;
                        };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "sponsored_placement";
                        params: {
                            experimental?: boolean;
                            deprecated?: boolean;
                            v1_translatable?: boolean;
                            since_version?: string;
                            migration_target_version?: string;
                            composition_model?: "deterministic" | "algorithmic";
                            provenance_required?: boolean;
                            platform_extensions?: (...)[];
                            synthesis_nondeterministic?: boolean;
                            slots?: (...)[];
                            required_connections?: (...)[];
                            reference_mutability?:
                                | "immutable_snapshot"
                                | "mutable_requires_reapproval"
                                | "mutable_auto_recheck";
                            production_window_business_days?: number;
                            supported_catalog_types?: (...)[];
                            min_items?: number;
                            max_items?: number;
                            fanout_mode?: "per_item" | "multi_item_in_creative" | "single_item";
                            required_catalog_fields?: (...)[];
                            supported_id_types?: (...)[];
                            hero_asset_supported?: boolean;
                            item_production_model?:
                                | "buyer_uploaded"
                                | "seller_pre_rendered_from_brief"
                                | "seller_human_designed"
                                | "agent_synthesized";
                        };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "native_in_feed";
                        params: {
                            experimental?: boolean;
                            deprecated?: boolean;
                            v1_translatable?: boolean;
                            since_version?: string;
                            migration_target_version?: string;
                            composition_model?: "deterministic" | "algorithmic";
                            provenance_required?: boolean;
                            platform_extensions?: (...)[];
                            synthesis_nondeterministic?: boolean;
                            slots?: (...)[];
                            required_connections?: (...)[];
                            reference_mutability?:
                                | "immutable_snapshot"
                                | "mutable_requires_reapproval"
                                | "mutable_auto_recheck";
                            production_window_business_days?: number;
                            title_max_chars?: number;
                            body_text_max_chars?: number;
                            cta_max_chars?: number;
                            cta_values?: (...)[];
                            main_image_sizes?: (...)[];
                            icon_size?: { width: ...; height: ... };
                            max_image_file_size_kb?: number;
                            image_formats?: (...)[];
                            ssl_required?: boolean;
                            asset_source?:
                                | "buyer_uploaded"
                                | "seller_pre_rendered_from_brief"
                                | "seller_human_designed"
                                | "agent_synthesized"
                                | "publisher_owned_reference";
                            buyer_asset_acceptance?: "rejected"
                            | "accepted";
                        };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "responsive_creative";
                        params: {
                            experimental?: boolean;
                            deprecated?: boolean;
                            v1_translatable?: boolean;
                            since_version?: string;
                            migration_target_version?: string;
                            composition_model?: "deterministic" | "algorithmic";
                            provenance_required?: boolean;
                            platform_extensions?: (...)[];
                            synthesis_nondeterministic?: boolean;
                            slots?: (...)[];
                            required_connections?: (...)[];
                            reference_mutability?:
                                | "immutable_snapshot"
                                | "mutable_requires_reapproval"
                                | "mutable_auto_recheck";
                            production_window_business_days?: number;
                            headlines_min?: number;
                            headlines_max?: number;
                            headline_max_chars?: number;
                            long_headlines_min?: number;
                            long_headlines_max?: number;
                            long_headline_max_chars?: number;
                            descriptions_min?: number;
                            descriptions_max?: number;
                            description_max_chars?: number;
                            images_landscape_min?: number;
                            images_landscape_max?: number;
                            images_landscape_aspect_ratio?: string;
                            images_square_min?: number;
                            images_square_max?: number;
                            images_vertical_min?: number;
                            images_vertical_max?: number;
                            videos_min?: number;
                            videos_max?: number;
                            video_min_duration_ms?: number;
                            video_max_duration_ms?: number;
                            logo_min?: number;
                            logo_max?: number;
                            logo_aspect_ratios?: (...)[];
                            business_name_max_chars?: number;
                            asset_image_max_file_size_kb?: number;
                            supports_catalog_input?: boolean;
                        };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "agent_placement";
                        params: {
                            experimental?: boolean;
                            deprecated?: boolean;
                            v1_translatable?: boolean;
                            since_version?: string;
                            migration_target_version?: string;
                            composition_model?: "deterministic" | "algorithmic";
                            provenance_required?: boolean;
                            platform_extensions?: (...)[];
                            synthesis_nondeterministic?: boolean;
                            slots?: (...)[];
                            required_connections?: (...)[];
                            reference_mutability?:
                                | "immutable_snapshot"
                                | "mutable_requires_reapproval"
                                | "mutable_auto_recheck";
                            production_window_business_days?: number;
                            output_modality?: "audio"
                            | "text"
                            | "card";
                            max_mention_length_chars?: number;
                            max_mention_duration_ms?: number;
                            supports_offering_reference?: boolean;
                            supports_landing_page_url?: boolean;
                            tone_constraints?: (...)[];
                            disclosure_required?: boolean;
                        };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "custom";
                        params: Omit<Omit<(...), (...)>, "authentication"> & {
                            authentication?: unknown;
                        };
                    };
                    operations?: ("preview" | "build" | "validate")[];
                }[];
                preview?: {
                    routes: {
                        capability_id: string;
                        rendering_origin: "platform_native"
                        | "agent_approximation";
                    }[];
                };
                localization?: {
                    max_target_variants?: number;
                    locale_matching: "rfc4647_lookup";
                };
                bills_through_adcp?: boolean;
                canonical_catalog_version?: string;
            };
            oauth?: { supported: boolean };
            request_signing?: {
                supported: boolean;
                covers_content_digest?: "required" | "forbidden" | "either";
                required_for?: string[];
                warn_for?: string[];
                supported_for?: string[];
                protocol_methods_supported_for?: string[];
                protocol_methods_warn_for?: string[];
                protocol_methods_required_for?: string[];
            };
            webhook_signing?: {
                supported: boolean;
                profile?: "adcp/webhook-signing/v1";
                algorithms?: ("ed25519" | "ecdsa-p256-sha256")[];
                legacy_hmac_fallback?: boolean;
            };
            identity?: {
                brand_json_url?: string;
                per_principal_key_isolation?: boolean;
                key_origins?: {
                    governance_signing?: string;
                    request_signing?: string;
                    webhook_signing?: string;
                    tmp_signing?: string;
                };
                compromise_notification?: { emits?: boolean; accepts?: boolean };
            };
            measurement_gateway?: {
                delivery_task: "get_media_buy_delivery";
                feedback_task: "provide_performance_feedback";
            };
            measurement?: {
                produces_performance_feedback?: boolean;
                metrics: {
                    metric_id: string;
                    standard_reference?: string;
                    accreditations?: {
                        accrediting_body: string;
                        certification_id?: string;
                        valid_until?: string;
                        evidence_url?: string;
                    }[];
                    unit?: string;
                    description?: string;
                    methodology_url?: string;
                    methodology_version?: string;
                    ext?: Omit<Omit<{ [key: string]: unknown }, "bank">, "authentication"> & {
                        authentication?: unknown;
                    };
                }[];
            };
            compliance_testing?: { scenarios: string[] };
            specialisms?: AdCPSpecialism[];
            extensions_supported?: string[];
            experimental_features?: string[];
            wholesale_feed_versioning?: {
                supported: boolean;
                pricing_version_separate?: boolean;
                cache_scope_account?: boolean;
            };
            last_updated?: string;
            errors?: {
                code: string;
                message: string;
                field?: string;
                suggestion?: string;
                retry_after?: number;
                issues?: {
                    pointer: string;
                    message: string;
                    keyword: string;
                    schemaPath?: string;
                    schema_id?: string;
                    discriminator?: {
                        property_name: string;
                        value: (...)
                        | (...)
                        | (...)
                        | (...)
                        | (...);
                    }[];
                }[];
                details?: Omit<Omit<{}, "bank">, "authentication"> & {
                    authentication?: unknown;
                };
                recovery?: "transient"
                | "correctable"
                | "terminal";
                source?: "producer" | "sdk";
                sdk_id?: string;
            }[];
            ext?: Omit<Omit<{ [key: string]: unknown }, "bank">, "authentication"> & {
                authentication?: unknown;
            };
            wholesale_feed_webhooks?: {
                supported: boolean;
                event_types?: (
                    | "product.created"
                    | "product.updated"
                    | "product.priced"
                    | "product.removed"
                    | "signal.created"
                    | "signal.updated"
                    | "signal.priced"
                    | "signal.removed"
                    | "wholesale_feed.bulk_change"
                )[];
            };
        }
        • Optionalcontext?: Omit<Omit<{}, "bank">, "authentication"> & { authentication?: unknown }
        • Optionalgovernance_context?: string

          Opaque authorization context issued only by an approved check_governance decision. Buyers attach it to governed requests across protocol roles (media buys, rights acquisitions, signal activations, creative services); receiving services persist it and forward it on subsequent execution and lifecycle checks. The context is the authoritative plan binding at service boundaries, so a service MUST NOT require a separate plan_id.

          Governance agents MUST emit a compact JWS per the AdCP JWS profile. Verifiers validate standard authorization claims such as signature, issuer, audience, expiry, and replay protection, but intermediaries MUST NOT interpret embedded governance state for business logic. A conditions or denied verdict never carries an authorization context.

          This is the primary correlation key for audit and reporting across the governance lifecycle.

        • adcp: {
              major_versions: number[];
              supported_versions?: string[];
              build_version?: string;
              idempotency:
                  | {
                      supported: true;
                      replay_ttl_seconds: number;
                      in_flight_max_seconds?: number;
                      account_id_is_opaque?: boolean;
                  }
                  | { supported: false };
              capability_changes?: {
                  capabilities_version?: string;
                  last_modified?: string;
                  cache_ttl_seconds?: number;
                  notifications?:
                      | {
                          supported: true;
                          registration_task: "sync_agent_notification_configs";
                          event_types: "capabilities.changed"[];
                          coalescence_window_seconds?: number;
                      }
                      | { supported: false };
              };
              governance_enforcement?: {
                  tasks: (
                      | {
                          task: "create_media_buy";
                          modes: ("signed_context" | "online_execution_check")[];
                      }
                      | {
                          task: "update_media_buy";
                          modes: ("signed_context" | "online_execution_check")[];
                      }
                      | {
                          task: "buy_products";
                          modes: ("signed_context" | "online_execution_check")[];
                      }
                      | {
                          task: "accept_proposal";
                          modes: ("signed_context" | "online_execution_check")[];
                      }
                      | {
                          task: "control_media_buy";
                          modes: ("signed_context" | "online_execution_check")[];
                      }
                      | { task: "build_creative"; modes: "signed_context"[] }
                      | { task: "activate_signal"; modes: "signed_context"[] }
                      | { task: "acquire_rights"; modes: "signed_context"[] }
                      | { task: "update_rights"; modes: "signed_context"[] }
                  )[];
              };
              attestations?: {
                  accepted_claim_types: string[];
                  accepted_proof_formats: string[];
                  supported_delivery_methods: (
                      "credential_uri"
                      | "issuer_credential_id"
                      | "embedded"
                  )[];
                  accepted_issuers: (
                      | {
                          issuer: | {
                              type: "brand";
                              brand: {
                                  domain: string;
                                  brand_id?: (...)
                                  | (...);
                                  countries?: (...) | (...);
                                  industries?: (...) | (...);
                                  data_subject_contestation?: (...) | (...);
                                  brand_kit_override?: (...) | (...);
                              };
                              ext?: (...) & (...);
                          }
                          | { type: "agent"; agent_url: string; ext?: (...) & (...) }
                          | { type: "origin"; origin: string; ext?: (...) & (...) };
                          claim_types?: string[];
                          proof_formats?: string[];
                          credential_origins?: string[];
                          resolvers?: ((...) & (...) | (...) & (...))[];
                          ext?: Omit<Omit<(...), (...)>, "authentication"> & {
                              authentication?: unknown;
                          };
                      }
                      | {
                          issuer: | {
                              type: "brand";
                              brand: {
                                  domain: string;
                                  brand_id?: (...)
                                  | (...);
                                  countries?: (...) | (...);
                                  industries?: (...) | (...);
                                  data_subject_contestation?: (...) | (...);
                                  brand_kit_override?: (...) | (...);
                              };
                              ext?: (...) & (...);
                          }
                          | { type: "agent"; agent_url: string; ext?: (...) & (...) }
                          | { type: "origin"; origin: string; ext?: (...) & (...) };
                          claim_types?: string[];
                          proof_formats?: string[];
                          credential_origins?: string[];
                          resolvers?: ((...) & (...) | (...) & (...))[];
                          ext?: Omit<Omit<(...), (...)>, "authentication"> & {
                              authentication?: unknown;
                          };
                      }
                  )[];
                  accepted_verifiers?: (
                      | {
                          agent_url: string;
                          claim_types?: string[];
                          proof_formats?: string[];
                          ext?: Omit<(...), (...)> & { authentication?: ... };
                      }
                      | {
                          agent_url: string;
                          claim_types?: string[];
                          proof_formats?: string[];
                          ext?: Omit<(...), (...)> & { authentication?: ... };
                      }
                  )[];
                  max_embedded_credential_bytes?: number;
                  ext?: Omit<Omit<{ [key: string]: unknown }, "bank">, "authentication"> & {
                      authentication?: unknown;
                  };
              };
          }

          Core AdCP protocol information

          • major_versions: number[]

            DEPRECATED in favor of supported_versions (release-precision strings). Servers MUST continue to emit this field through 3.x for backwards compatibility. Removed in 4.0. Original semantics: AdCP major versions supported by this seller. Major versions indicate breaking changes.

          • Optionalsupported_versions?: string[]

            Release-precision (VERSION.RELEASE) AdCP versions this seller speaks. Authoritative for buyer-side release pinning — buyers SHOULD declare adcp_version (release-precision string) on each request. Sellers downshift to the highest supported release ≤ the buyer's pin within the same major; cross-major mismatch returns VERSION_UNSUPPORTED. Pre-release tags (e.g. "3.1-beta") hang off release.

          • Optionalbuild_version?: string

            Optional advisory metadata: full semver build identifier of the seller's deployment — MAJOR.MINOR.PATCH plus optional pre-release and build-metadata segments per semver §9–§10. Patches are not part of the wire contract — semver patch by definition introduces no contract change — but surfacing the build helps buyers triage incidents and bug reports against a specific seller deployment lineage. Buyers MUST NOT use this field for negotiation; use supported_versions (release-precision) instead.

            ^\d+.\d+.\d+(-[a-zA-Z0-9.-]+)?(+[a-zA-Z0-9.-]+)?$

          • idempotency:
                | {
                    supported: true;
                    replay_ttl_seconds: number;
                    in_flight_max_seconds?: number;
                    account_id_is_opaque?: boolean;
                }
                | { supported: false }

            Idempotency semantics for mutating requests. Sellers MUST declare whether they honor idempotency_key replay protection so buyers can reason about safe retry behavior. Modeled as a discriminated union on the supported boolean so that code generators produce two named types (IdempotencySupported, IdempotencyUnsupported) with the replay_ttl_seconds invariant enforced at the type level — draft-07 if/then would be dropped by most generators (openapi-typescript, zod-to-json-schema, datamodel-code-generator pre-0.25, quicktype). Clients MUST NOT assume a default — a seller without this declaration is non-compliant and should be treated as unsafe for retry-sensitive operations.

          • Optionalcapability_changes?: {
                capabilities_version?: string;
                last_modified?: string;
                cache_ttl_seconds?: number;
                notifications?:
                    | {
                        supported: true;
                        registration_task: "sync_agent_notification_configs";
                        event_types: "capabilities.changed"[];
                        coalescence_window_seconds?: number;
                    }
                    | { supported: false };
            }

            Freshness metadata and optional invalidation webhooks for this get_adcp_capabilities document. Buyers and registries MAY cache capabilities for up to cache_ttl_seconds when present, SHOULD compare capabilities_version across refreshes when present, and SHOULD re-run get_adcp_capabilities after receiving a capabilities.changed webhook. This block describes the agent-wide capability document, not per-caller authorization or account-scoped settings. A material capability change is any externally advertised contract change that can affect routing, validation, conformance coverage, task availability, auth/account handling, sandbox support, billing support, reporting delivery methods, creative-library support, targeting support, protocol versions, or other buyer-visible feature gates. Non-contract operational changes that do not alter the response body do not require a revision or webhook fire.

            • Optionalcapabilities_version?: string

              Opaque revision token for the full capability document. Required when notifications.supported: true because capabilities.changed webhooks use this as the read-after-notify fence. Sellers SHOULD change this value whenever any material field in get_adcp_capabilities changes. Buyers MUST treat it as opaque and compare it only for equality.

              1

              255

            • Optionallast_modified?: string

              ISO 8601 timestamp when the seller last changed the advertised capability document. This is the scoped replacement for legacy top-level last_updated when buyers need cache validation semantics.

              date-time

            • Optionalcache_ttl_seconds?: number

              Maximum time a buyer or registry SHOULD reuse this capability response before refreshing when it has no fresher invalidation signal. Sellers that emit capabilities.changed webhooks SHOULD still set a bounded TTL so consumers can recover from missed notifications. This is a cache hint, not an authorization lifetime.

              60

              604800

            • Optionalnotifications?:
                  | {
                      supported: true;
                      registration_task: "sync_agent_notification_configs";
                      event_types: "capabilities.changed"[];
                      coalescence_window_seconds?: number;
                  }
                  | { supported: false }

              Whether the seller supports agent-level capability-change webhooks. When supported, interested consumers register endpoint subscribers with sync_agent_notification_configs; each capabilities.changed fire is a small invalidation payload, and consumers repair by re-reading get_adcp_capabilities.

          • Optionalgovernance_enforcement?: {
                tasks: (
                    | {
                        task: "create_media_buy";
                        modes: ("signed_context" | "online_execution_check")[];
                    }
                    | {
                        task: "update_media_buy";
                        modes: ("signed_context" | "online_execution_check")[];
                    }
                    | {
                        task: "buy_products";
                        modes: ("signed_context" | "online_execution_check")[];
                    }
                    | {
                        task: "accept_proposal";
                        modes: ("signed_context" | "online_execution_check")[];
                    }
                    | {
                        task: "control_media_buy";
                        modes: ("signed_context" | "online_execution_check")[];
                    }
                    | { task: "build_creative"; modes: "signed_context"[] }
                    | { task: "activate_signal"; modes: "signed_context"[] }
                    | { task: "acquire_rights"; modes: "signed_context"[] }
                    | { task: "update_rights"; modes: "signed_context"[] }
                )[];
            }

            Cross-role declaration that this agent enforces buyer-provided governance authorization when performing consequential tasks. This is distinct from the top-level governance capability block, which describes an agent that provides governance services. An agent can enforce governance without implementing the governance protocol itself. Absence means the agent makes no governance-enforcement conformance claim.

            • tasks: (
                  | {
                      task: "create_media_buy";
                      modes: ("signed_context" | "online_execution_check")[];
                  }
                  | {
                      task: "update_media_buy";
                      modes: ("signed_context" | "online_execution_check")[];
                  }
                  | {
                      task: "buy_products";
                      modes: ("signed_context" | "online_execution_check")[];
                  }
                  | {
                      task: "accept_proposal";
                      modes: ("signed_context" | "online_execution_check")[];
                  }
                  | {
                      task: "control_media_buy";
                      modes: ("signed_context" | "online_execution_check")[];
                  }
                  | { task: "build_creative"; modes: "signed_context"[] }
                  | { task: "activate_signal"; modes: "signed_context"[] }
                  | { task: "acquire_rights"; modes: "signed_context"[] }
                  | { task: "update_rights"; modes: "signed_context"[] }
              )[]

              Task-scoped enforcement claims. The task field is a semantic uniqueness key: an agent MUST emit at most one entry per task and combine all supported modes in that entry. JSON Schema uniqueItems only rejects structurally identical objects, so producers and capability validators MUST enforce task-key uniqueness separately. Values correspond to request schemas annotated with x-governed-commitment. Online execution checks are currently defined only for media-buy tasks, whose prepared result has the PlannedDelivery contract; other roles can enforce signed intent authorization without inventing media-buy fields.

          • Optionalattestations?: {
                accepted_claim_types: string[];
                accepted_proof_formats: string[];
                supported_delivery_methods: (
                    "credential_uri"
                    | "issuer_credential_id"
                    | "embedded"
                )[];
                accepted_issuers: (
                    | {
                        issuer: | {
                            type: "brand";
                            brand: {
                                domain: string;
                                brand_id?: (...)
                                | (...);
                                countries?: (...) | (...);
                                industries?: (...) | (...);
                                data_subject_contestation?: (...) | (...);
                                brand_kit_override?: (...) | (...);
                            };
                            ext?: (...) & (...);
                        }
                        | { type: "agent"; agent_url: string; ext?: (...) & (...) }
                        | { type: "origin"; origin: string; ext?: (...) & (...) };
                        claim_types?: string[];
                        proof_formats?: string[];
                        credential_origins?: string[];
                        resolvers?: ((...) & (...) | (...) & (...))[];
                        ext?: Omit<Omit<(...), (...)>, "authentication"> & {
                            authentication?: unknown;
                        };
                    }
                    | {
                        issuer: | {
                            type: "brand";
                            brand: {
                                domain: string;
                                brand_id?: (...)
                                | (...);
                                countries?: (...) | (...);
                                industries?: (...) | (...);
                                data_subject_contestation?: (...) | (...);
                                brand_kit_override?: (...) | (...);
                            };
                            ext?: (...) & (...);
                        }
                        | { type: "agent"; agent_url: string; ext?: (...) & (...) }
                        | { type: "origin"; origin: string; ext?: (...) & (...) };
                        claim_types?: string[];
                        proof_formats?: string[];
                        credential_origins?: string[];
                        resolvers?: ((...) & (...) | (...) & (...))[];
                        ext?: Omit<Omit<(...), (...)>, "authentication"> & {
                            authentication?: unknown;
                        };
                    }
                )[];
                accepted_verifiers?: (
                    | {
                        agent_url: string;
                        claim_types?: string[];
                        proof_formats?: string[];
                        ext?: Omit<(...), (...)> & { authentication?: ... };
                    }
                    | {
                        agent_url: string;
                        claim_types?: string[];
                        proof_formats?: string[];
                        ext?: Omit<(...), (...)> & { authentication?: ... };
                    }
                )[];
                max_embedded_credential_bytes?: number;
                ext?: Omit<Omit<{ [key: string]: unknown }, "bank">, "authentication"> & {
                    authentication?: unknown;
                };
            }
            • accepted_claim_types: string[]

              Open claim identifiers the evaluator is prepared to evaluate. Each value is an absolute URI. Absence means the evaluator has not advertised portable-attestation support; an empty list is not permitted.

              1

            • accepted_proof_formats: string[]

              Open credential/proof format identifiers the evaluator can verify. Values are absolute URIs rather than a protocol enum so issuers can adopt new formats without AdCP endorsement.

              1

            • supported_delivery_methods: ("credential_uri" | "issuer_credential_id" | "embedded")[]

              Credential delivery paths this evaluator supports. credential_uri resolves an HTTPS credential URI from the presentation; issuer_credential_id combines issuer, credential_id, and an evaluator-published resolver_id; embedded accepts an inline credential.

              1

            • accepted_issuers: (
                  | {
                      issuer: | {
                          type: "brand";
                          brand: {
                              domain: string;
                              brand_id?: (...)
                              | (...);
                              countries?: (...) | (...);
                              industries?: (...) | (...);
                              data_subject_contestation?: (...) | (...);
                              brand_kit_override?: (...) | (...);
                          };
                          ext?: (...) & (...);
                      }
                      | { type: "agent"; agent_url: string; ext?: (...) & (...) }
                      | { type: "origin"; origin: string; ext?: (...) & (...) };
                      claim_types?: string[];
                      proof_formats?: string[];
                      credential_origins?: string[];
                      resolvers?: ((...) & (...) | (...) & (...))[];
                      ext?: Omit<Omit<(...), (...)>, "authentication"> & {
                          authentication?: unknown;
                      };
                  }
                  | {
                      issuer: | {
                          type: "brand";
                          brand: {
                              domain: string;
                              brand_id?: (...)
                              | (...);
                              countries?: (...) | (...);
                              industries?: (...) | (...);
                              data_subject_contestation?: (...) | (...);
                              brand_kit_override?: (...) | (...);
                          };
                          ext?: (...) & (...);
                      }
                      | { type: "agent"; agent_url: string; ext?: (...) & (...) }
                      | { type: "origin"; origin: string; ext?: (...) & (...) };
                      claim_types?: string[];
                      proof_formats?: string[];
                      credential_origins?: string[];
                      resolvers?: ((...) & (...) | (...) & (...))[];
                      ext?: Omit<Omit<(...), (...)>, "authentication"> & {
                          authentication?: unknown;
                      };
                  }
              )[]

              Issuer allowlist and resolver policy. Matching is on the canonical AttestationIssuer identity. A presenter-supplied issuer or credential URI that does not match this policy is rejected without an outbound request.

              1

            • Optionalaccepted_verifiers?: (
                  | {
                      agent_url: string;
                      claim_types?: string[];
                      proof_formats?: string[];
                      ext?: Omit<(...), (...)> & { authentication?: ... };
                  }
                  | {
                      agent_url: string;
                      claim_types?: string[];
                      proof_formats?: string[];
                      ext?: Omit<(...), (...)> & { authentication?: ... };
                  }
              )[]

              Verifier agents the evaluator may call. A presenter's verify_agent nomination must match one of these canonicalized URLs, but the evaluator remains verifier-of-record and chooses whether to use the nominated agent, another accepted agent, or local verification.

              1

            • Optionalmax_embedded_credential_bytes?: number

              Maximum UTF-8 byte size accepted for one embedded credential. Evaluators MUST enforce this limit before parsing the credential. The protocol ceiling is 1 MiB.

            • Optionalext?: Omit<Omit<{ [key: string]: unknown }, "bank">, "authentication"> & {
                  authentication?: unknown;
              }
        • supported_protocols: (
              | "brand"
              | "signals"
              | "governance"
              | "creative"
              | "measurement"
              | "sponsored_intelligence"
              | "media_buy"
          )[]

          AdCP protocols this agent supports. Stable values both (a) declare which tools the agent implements and (b) commit the agent to pass the baseline compliance storyboard at /compliance/{version}/protocols/{protocol}/ (with snake_case → kebab-case path mapping, e.g. media_buy → /compliance/.../protocols/media-buy/). The measurement protocol is experimental and currently covers provider catalog/output declaration (measurement.core) and buyer-orchestrator interchange gateways (measurement.gateway). Measurement agents exchange delivery and feedback with the gateway rather than receiving direct seller access. Additional provider tasks and a baseline storyboard land only when concrete workflows require them. Compliance testing support is declared separately via the compliance_testing capability block (below), not as a protocol claim.

        • Optionalaccount?: {
              require_operator_auth?: boolean;
              authorization_endpoint?: string;
              supported_billing: BillingParty[];
              supported_account_currency_modes?: AccountCurrencyMode[];
              timezone?: {
                  mode: "seller_fixed" | "account_fixed";
                  fixed_timezone?: string;
                  account_selection?: "seller_assigned" | "buyer_selected";
                  supported_timezones?: string[];
              };
              required_for_products?: boolean;
              account_financials?: boolean;
              notifications?: | {
                  supported: true;
                  registration_task: "sync_accounts";
                  read_task: "list_accounts";
                  event_types: "account.status_changed"[];
                  supports_webhook_activity?: boolean;
              }
              | { supported: false };
              identity_updates?:
                  | {
                      supported: true;
                      supported_changes: ("operator" | "operator_unit" | "operator_unit_name")[];
                  }
                  | { supported: false };
              sandbox?: boolean;
          }

          Account management capabilities. Describes how accounts are established, what billing models are supported, and whether an account is required before browsing products.

          • Optionalrequire_operator_auth?: boolean

            Whether the seller requires operator-level credentials. This declares who must authenticate; it does not by itself declare whether OAuth is used, whether list_accounts is exposed, or which sync_accounts modes are supported. When true, operators authenticate independently with the seller and account-scoped calls use seller/storefront-assigned account_id values because the seller or upstream platform owns the canonical account namespace. If a credential may access more than one account, the seller MUST expose list_accounts and buyers MUST resolve an explicit account_id before the first account-scoped request. If a credential is bound to exactly one account, the seller SHOULD expose list_accounts returning that singleton; a seller MAY omit list_accounts only when it provides the same explicit account_id through another declared path or out-of-band onboarding. When false (default, buyer-declared accounts), the seller trusts the agent's identity claims and account-scoped calls use the advertiser natural key: brand + operator + optional operator_unit, fixed currency, optional buyer-selected account timezone, and sandbox. operator_unit.id is owned by the operator and is distinct from the seller's account_id. The seller normally provisions through sync_accounts, but MAY lazily provision on the first account-scoped request when billing and other required settings are unambiguous from capabilities or onboarding defaults. A lazy-provisioning seller MUST keep accepting the natural key and MUST expose list_accounts for recovery; if buyer input is needed before use, the seller MUST expose sync_accounts.

          • Optionalauthorization_endpoint?: string

            OAuth authorization endpoint for obtaining operator-level credentials. Present when the seller supports OAuth for operator authentication. The agent directs the operator to this URL to authenticate and obtain a bearer token. If absent and require_operator_auth is true, operators obtain credentials out-of-band (e.g., seller portal, API key).

          • supported_billing: BillingParty[]

            Billing models this seller supports. operator: seller invoices the operator (agency or brand buying direct). agent: agent consolidates billing. advertiser: seller invoices the advertiser directly, even when a different operator places orders on their behalf. When the buyer calls sync_accounts, it must pass one of these values. A lazy-provisioning seller may omit sync_accounts only when billing can be resolved unambiguously from this capability or the authenticated agent's onboarding defaults.

          • Optionalsupported_account_currency_modes?: AccountCurrencyMode[]

            Required for sellers implementing AdCP 3.2 advertiser-account provisioning, but optional in this shared 3.x response schema so existing 3.0 and 3.1 capability responses remain valid. Declares whether advertiser accounts are bound to one immutable currency (fixed), select currency independently per proposal or media buy (per_media_buy), or support both models. When only fixed is advertised, buyer-declared provisioning entries MUST include currency. When only per_media_buy is advertised, they MUST omit it. When both are advertised, presence of currency selects a fixed-currency account and omission selects per-media-buy currency. Buyers MUST treat absence as an older seller whose currency mode is not discoverable, not as support for either mode.

          • Optionaltimezone?: {
                mode: "seller_fixed" | "account_fixed";
                fixed_timezone?: string;
                account_selection?: "seller_assigned" | "buyer_selected";
                supported_timezones?: string[];
            }
            • mode: "seller_fixed" | "account_fixed"

              seller_fixed means every account uses fixed_timezone. account_fixed means each account has an immutable timezone returned on Account and selected or assigned during account establishment.

            • Optionalfixed_timezone?: string

              Seller-wide timezone used by every account. Required only for seller_fixed. Use UTC or an IANA timezone identifier.

            • Optionalaccount_selection?: "seller_assigned" | "buyer_selected"

              How an account_fixed timezone is established. seller_assigned covers an existing upstream account or seller onboarding choice; buyer_selected requires timezone in buyer-declared sync_accounts provisioning.

            • Optionalsupported_timezones?: string[]

              Exact timezone values accepted during buyer-selected account provisioning. Required when account_selection is buyer_selected so buyers can validate the choice before sync_accounts.

              1

          • Optionalrequired_for_products?: boolean

            Whether an account reference is required for get_products. When true, the buyer must establish an account before browsing products. When false (default), the buyer can browse products without an account — useful for price comparison and discovery before committing to a seller.

          • Optionalaccount_financials?: boolean

            Whether this seller exposes the get_account_financials task for querying account-level financial status (spend, credit, invoices). Acts as a pre-call discriminator — buyers MUST consult this field before issuing get_account_financials; when false (or absent), sellers MAY reject the call with an UNSUPPORTED_FEATURE / OPERATION_NOT_SUPPORTED error. Companion pattern to creative.bills_through_adcp (issue #2881) — both fields let buyers gate optional capability calls on a single declared boolean rather than probing for support. Only applicable to operator-billed accounts; sellers using buyer-billed flows omit or set to false.

          • Optionalnotifications?:
                | {
                    supported: true;
                    registration_task: "sync_accounts";
                    read_task: "list_accounts";
                    event_types: "account.status_changed"[];
                    supports_webhook_activity?: boolean;
                }
                | { supported: false }

            Whether the seller supports durable account-lifecycle webhooks through account-level notification_configs[]. This capability is specifically for account status changes such as approval, rejection, payment-required, suspension, recovery, and closure. When supported, buyers register subscribers with sync_accounts.accounts[].notification_configs[]; each account.status_changed fire is an invalidation payload, and buyers repair by re-reading list_accounts for the account_id.

          • Optionalidentity_updates?:
                | {
                    supported: true;
                    supported_changes: ("operator" | "operator_unit" | "operator_unit_name")[];
                }
                | { supported: false }

            Whether the seller accepts buyer-desired operator identity reconciliation through sync_accounts settings-update entries. Sellers declaring support expose the exact identity transitions they implement, MUST return account revisions from sync_accounts and list_accounts, and MUST return identity_change_preview for dry-run identity updates.

          • Optionalsandbox?: boolean

            Whether this seller supports sandbox accounts for testing. Buyer-declared accounts use sandbox: true in sync_accounts or, for an unambiguous lazy-provisioning seller, in the natural-key account reference. Sellers with account_id namespaces expose sandbox accounts as pre-existing test accounts through list_accounts or supply them out-of-band. Requests using a sandbox account perform no real platform calls or spend.

        • Optionalmedia_buy?: {
              supported_pricing_models?: PricingModel[];
              buying_modes?: ("brief" | "wholesale" | "refine")[];
              availability_horizon?: boolean;
              lifecycle_tools?: (
                  | "buy_products"
                  | "accept_proposal"
                  | "control_media_buy"
                  | "request_proposals"
                  | "refine_proposals"
                  | "decline_proposals"
                  | "list_products"
              )[];
              proposal_refinement?: {
                  supported_dimensions: (
                      | "impressions"
                      | "cpm"
                      | "flight"
                      | "total_budget"
                      | "product_changes"
                      | "alternatives"
                      | "criteria"
                  )[];
                  max_alternatives?: number;
              };
              reporting_delivery_methods?: ("offline" | "webhook")[];
              performance_feedback?: { reports_application_status?: boolean };
              offline_delivery_protocols?: CloudStorageProtocol[];
              supports_proposals?: boolean;
              outcome_target?: boolean;
              governance_aware?: boolean;
              propagation_surfaces?: ("webhook" | "snapshot" | "out_of_band")[];
              creative_approval_mode?: "auto_approve" | "require_human";
              supported_indicator_types?: IndicatorType[];
              relationship_notifications?: {
                  supported: true;
                  registration_task: "sync_accounts";
                  event_types: ("creative.assignment_changed" | "indicators.changed")[];
                  repair_tasks: "get_media_buys"[];
                  projection_tasks?: "list_creatives"[];
                  supports_webhook_activity?: boolean;
              };
              features?: {
                  inline_creative_management?: boolean;
                  property_list_filtering?: boolean;
                  catalog_management?: boolean;
                  catalog_item_availability_updates?: boolean;
                  committed_metrics_supported?: boolean;
                  seller_optimized_budget?: boolean;
                  bidding_policy?: {
                      media_buy?: {
                          fixed?: {
                              modes?: ...;
                              cost_per_strengths?: ...;
                              roas_strengths?: ...;
                              supported_combinations?: ...;
                          };
                          seller_optimized?: {
                              modes?: ...;
                              cost_per_strengths?: ...;
                              roas_strengths?: ...;
                              supported_combinations?: ...;
                          };
                      };
                      package?: {
                          fixed?: {
                              modes?: ...;
                              cost_per_strengths?: ...;
                              roas_strengths?: ...;
                              supported_combinations?: ...;
                          };
                          seller_optimized?: {
                              modes?: ...;
                              cost_per_strengths?: ...;
                              roas_strengths?: ...;
                              supported_combinations?: ...;
                          };
                      };
                  };
                  [key: string]: | boolean
                  | {
                      media_buy?: {
                          fixed?: {
                              modes?: ...;
                              cost_per_strengths?: ...;
                              roas_strengths?: ...;
                              supported_combinations?: ...;
                          };
                          seller_optimized?: {
                              modes?: ...;
                              cost_per_strengths?: ...;
                              roas_strengths?: ...;
                              supported_combinations?: ...;
                          };
                      };
                      package?: {
                          fixed?: {
                              modes?: ...;
                              cost_per_strengths?: ...;
                              roas_strengths?: ...;
                              supported_combinations?: ...;
                          };
                          seller_optimized?: {
                              modes?: ...;
                              cost_per_strengths?: ...;
                              roas_strengths?: ...;
                              supported_combinations?: ...;
                          };
                      };
                  }
                  | undefined;
              };
              execution?: {
                  trusted_match?: { surfaces?: PropertyType[] };
                  axe_integrations?: string[];
                  creative_specs?: {
                      vast_versions?: string[];
                      mraid_versions?: string[];
                      vpaid?: boolean;
                      simid?: boolean;
                      vast_validation?: "document" | "structural" | "wrapper";
                  };
                  targeting?: {
                      geo_countries?: boolean;
                      geo_regions?: | boolean
                      | {
                          countries: Omit<(...), (...)> & { authentication?: ... };
                          catalog_version?: string;
                          as_of?: string;
                          max_values_per_package?: number;
                          max_packages?: number;
                          ext?: (...) & (...);
                      };
                      geo_regions_exclude?: | boolean
                      | {
                          countries: Omit<(...), (...)> & { authentication?: ... };
                          catalog_version?: string;
                          as_of?: string;
                          max_values_per_package?: number;
                          max_packages?: number;
                          ext?: (...) & (...);
                      };
                      geo_metros?: {
                          nielsen_dma?: boolean;
                          uk_itl1?: boolean;
                          uk_itl2?: boolean;
                          eurostat_nuts2?: boolean;
                      };
                      geo_postal_areas?: {
                          US?: (...)[];
                          GB?: (...)[];
                          CA?: (...)[];
                          DE?: (...)[];
                          CH?: (...)[];
                          AT?: (...)[];
                          FR?: (...)[];
                          AU?: (...)[];
                          BR?: (...)[];
                          IN?: (...)[];
                          ZA?: (...)[];
                          us_zip?: boolean;
                          us_zip_plus_four?: boolean;
                          gb_outward?: boolean;
                          gb_full?: boolean;
                          ca_fsa?: boolean;
                          ca_full?: boolean;
                          de_plz?: boolean;
                          fr_code_postal?: boolean;
                          au_postcode?: boolean;
                          ch_plz?: boolean;
                          at_plz?: boolean;
                          [key: Uppercase<string>]: (...)[] | undefined;
                      };
                      geo_places?: Omit<Omit<(...), (...)>, "authentication"> & {
                          authentication?: unknown;
                      };
                      age_restriction?: { supported?: boolean; verification_methods?: (...)[] };
                      demographics?: { supported: boolean };
                      language?:
                          | boolean
                          | { supported?: boolean; supported_languages?: (...)[] };
                      keyword_targets?: { supported_match_types: MatchType[] };
                      negative_keywords?: { supported_match_types: MatchType[] };
                      placement_selection?: boolean;
                      property_list?: boolean;
                      property_list_exclude?: boolean;
                      collection_list?: boolean;
                      collection_list_exclude?: boolean;
                      geo_proximity?: {
                          radius?: boolean;
                          travel_time?: boolean;
                          geometry?: boolean;
                          transport_modes?: (...)[];
                      };
                  };
              };
              audience_evidence?: {
                  supported_requirement_modes: ("required" | "preferred")[];
                  supported_presence_modes: ("required" | "when_available")[];
                  supports_attestation_evaluation: boolean;
              };
              rights_attestations?: { requirement: "required"
              | "optional" };
              audience_targeting?: {
                  supported_identifier_types: ("hashed_email" | "hashed_phone")[];
                  supports_platform_customer_id?: boolean;
                  supported_uid_types?: UIDType[];
                  minimum_audience_size: number;
                  matching_latency_hours?: { min?: number; max?: number };
              };
              supported_optimization_metrics?: (
                  | "clicks"
                  | "views"
                  | "completed_views"
                  | "reach"
                  | "engagements"
                  | "follows"
                  | "saves"
                  | "profile_visits"
                  | "attention_score"
                  | "viewed_seconds"
                  | "attention_seconds"
              )[];
              vendor_metric_optimization?: {
                  supported_targets?: ("cost_per" | "threshold_rate")[];
              };
              conversion_tracking?: {
                  multi_source_event_dedup?: boolean;
                  per_creative_attribution?: boolean;
                  supported_event_types?: EventType[];
                  supported_targets?: ("cost_per" | "per_ad_spend" | "maximize_value")[];
                  supported_uid_types?: UIDType[];
                  supported_hashed_identifiers?: ("hashed_email" | "hashed_phone")[];
                  supported_action_sources?: ActionSource[];
                  attribution_windows?: {
                      event_type?: EventType;
                      post_click: {
                          interval: number;
                          unit: (...) | (...) | (...) | (...) | (...);
                      }[];
                      post_view?: { interval: ...; unit: ... }[];
                  }[];
              };
              frequency_capping?: {
                  supported_per_units?: ReachUnit[];
                  supported_window_units?: string[];
              };
              budget_capping?: {
                  supported_scopes: ("package" | "media_buy")[];
                  supported_periods: "day"[];
                  timezone_basis: "fixed" | "account";
                  fixed_timezone?: string;
                  buyer_timezone_override?: boolean;
              };
              content_standards?: {
                  supports_local_evaluation?: boolean;
                  supported_channels?: MediaChannel[];
                  supports_webhook_delivery?: boolean;
              };
              portfolio?: {
                  publisher_domains: string[];
                  primary_channels?: MediaChannel[];
                  primary_countries?: string[];
                  description?: string;
                  advertising_policies?: string;
              };
          }

          Media-buy protocol capabilities. Expected when media_buy is in supported_protocols. Sellers declaring media_buy should also include account with supported_billing.

          • Optionalsupported_pricing_models?: PricingModel[]

            Pricing models this seller supports across its product portfolio. Buyers can use this for pre-flight filtering before querying individual products. Individual products may support a subset of these models.

          • Optionalbuying_modes?: ("brief" | "wholesale" | "refine")[]

            Buying modes this seller supports on get_products. 'brief' (semantic discovery driven by the brief) is universally supported and implicit. 'wholesale' (raw wholesale product feed enumeration — caller omits brief and the seller returns the full priced product feed, paginated) is opt-in and SHOULD be declared explicitly so buyers can probe before issuing wholesale calls. 'refine' lets buyers iterate on prior products/proposals and is also the vehicle for finalizing draft proposals when the seller returns them. Sellers MAY declare ['brief', 'wholesale'] to signal wholesale support; absent declaration is treated as ['brief'] for wholesale-feed probing purposes and sellers MAY return INVALID_REQUEST for wholesale calls they do not support. Symmetric with signals.discovery_modes.

          • Optionalavailability_horizon?: boolean

            Whether this seller supports flexible-window availability discovery: parsing offer_filters.availability_horizon and answering with time-dimensioned forecast points that carry availability_status. Sellers declaring true MUST apply the full window contract — half-open non-overlapping windows that partition the requested horizon (or signal gaps via incomplete[]), with availability_status computed from all booking eligibility constraints, not only competing holds. false or absent means flexible-window support is unknown: buyers SHOULD use exact start_date/end_date filtering, and sellers MAY ignore the field or reject it. Conformance storyboards gate flexible-window checks on this declaration.

          • Optionallifecycle_tools?: (
                | "buy_products"
                | "accept_proposal"
                | "control_media_buy"
                | "request_proposals"
                | "refine_proposals"
                | "decline_proposals"
                | "list_products"
            )[]

            Compact product and MediaBuy lifecycle operation names this seller supports. Added in AdCP 3.2 as task-specific contracts that form the 4.0 lifecycle foundation. Sellers may advertise any supported subset while retaining the deprecated get_products/create_media_buy/update_media_buy facades throughout 3.x. Each stateful split task has its own idempotency identity; callers MUST retry with the same tool name.

          • Optionalproposal_refinement?: {
                supported_dimensions: (
                    | "impressions"
                    | "cpm"
                    | "flight"
                    | "total_budget"
                    | "product_changes"
                    | "alternatives"
                    | "criteria"
                )[];
                max_alternatives?: number;
            }

            Pre-flight support for typed refine_proposals revision dimensions. These declarations mean the seller can parse and mechanically validate a dimension; they never promise that the seller will commercially concede it. Absence means typed-dimension support is unknown and buyers must handle per-result partial or unable outcomes. A dimension omitted from an explicit supported_dimensions list MUST be rejected at task level with UNSUPPORTED_FEATURE before any proposal is created.

            • supported_dimensions: (
                  | "impressions"
                  | "cpm"
                  | "flight"
                  | "total_budget"
                  | "product_changes"
                  | "alternatives"
                  | "criteria"
              )[]

              Typed revision dimensions the seller can parse and validate. An empty list authoritatively means ask-only refinement with no typed dimensions. total_budget, cpm, impressions, and flight cover the same-named constraints keys; product_changes covers product_changes; alternatives covers alternatives.count; criteria covers structured discovery criteria. Free-text ask interpretation is competence, not a capability declared here.

            • Optionalmax_alternatives?: number

              Optional maximum alternatives.count the seller accepts, up to the protocol maximum of 10. Valid only when supported_dimensions includes alternatives. Requests above this ceiling fail at task level with VALIDATION_ERROR identifying refinements[i].alternatives.count; sellers MUST NOT silently clamp the request or return alternatives_unavailable for the declared ceiling violation.

              2

              10

          • Optionalreporting_delivery_methods?: ("offline" | "webhook")[]

            How this seller delivers reporting data to buyers. Polling via get_media_buy_delivery is always available as a baseline regardless of this field. This array declares additional push-based delivery methods the seller supports. 'webhook': seller pushes to buyer-provided URL (configured per buy via reporting_webhook). 'offline': seller pushes batch files to a cloud storage bucket (seller-provisioned per account via reporting_bucket on the account object). When absent, only polling is available.

          • Optionalperformance_feedback?: { reports_application_status?: boolean }

            Structured seller performance-feedback support beyond the legacy scalar contract. Presence means the seller accepts compact baseline/metric/provenance fields from a buyer orchestrator and returns a feedback_id.

            • Optionalreports_application_status?: boolean

              Whether provide_performance_feedback responses include an honest application_status of accepted, applied, or not_applied. accepted is explicitly not an application claim. Sellers that cannot determine optimizer disposition omit this claim or set it false.

          • Optionaloffline_delivery_protocols?: CloudStorageProtocol[]

            Cloud storage protocols this seller supports for offline file delivery. Only meaningful when reporting_delivery_methods includes 'offline'. Buyers express a protocol preference in sync_accounts; the seller provisions the account's reporting_bucket using a supported protocol.

          • Optionalsupports_proposals?: boolean

            Conformance declaration that this seller supports proposals through either the compact request/refine/finalize lifecycle or the legacy get_products facade. accept_proposal, or the create_media_buy compatibility facade, consumes a finalized committed proposal_id before expires_at.

          • Optionaloutcome_target?: boolean

            Whether this seller supports reverse-forecast planning: parsing criteria.outcome_target (a compact goal — a forecastable-metric delivery metric or an event-type conversion event — plus a desired volume) and solving for budget, answering with total_budget_guidance on proposals and forecasts whose points carry the goal's key in metrics. false or absent means support is unknown: buyers SHOULD express outcome goals in brief prose instead, and sellers reject a structured outcome_target with UNSUPPORTED_FEATURE rather than silently ignoring it.

          • Optionalgovernance_aware?: boolean

            Compatibility claim used by existing media-buy conformance runners. A value of true corresponds only to online governance consultation for create_media_buy, the historically graded surface. Agents use adcp.governance_enforcement for explicit task-scoped claims, including update_media_buy and cross-role signed-context enforcement.

          • Optionalpropagation_surfaces?: ("webhook" | "snapshot" | "out_of_band")[]

            Where this seller surfaces dependency-resource impairments (creative suspended/rejected post-approval, audience suspended, catalog item withdrawn, event source insufficient, property depublished) to buyers. Non-exclusive: a seller mirroring impairments on both the buy snapshot AND firing webhooks declares ["snapshot", "webhook"] (the common case for premium guaranteed sellers). Each value names one surface where buyers can observe an impairment:

            • snapshot — seller propagates resource transitions into media_buy.health and media_buy.impairments[] on the next get_media_buys read. The impairment.coherence compliance assertion grades this surface; storyboards that exercise it (media_buy_seller/dependency_impairment, media_buy_seller/dependency_impairment_cardinality) require "snapshot" to be declared, else they grade not_applicable.
            • webhook — seller fires notification-type: impairment webhooks (configured via push_notification_config). Sellers declaring "webhook" MUST satisfy the persistent-channel webhook contract for the impairment event type. A seller declaring ["webhook"] without "snapshot" is webhook-only — buyers reconcile state from the push channel alone, and snapshot-coherence storyboards grade not_applicable.
            • out_of_band — seller propagates via channels outside the AdCP protocol surface entirely (email to trafficker, separate dashboard, partner-specific notification feed). Long-tail and enterprise-bundled platforms commonly use this when impairment workflows are managed in human channels. Sellers declaring only ["out_of_band"] are not graded by snapshot or webhook compliance — their bar is the offline agreement, not a protocol assertion. If a seller has impairment data in their API under a non-AdCP field name (a mapping gap, not truly out-of-band), they SHOULD document the mapping rather than declare out_of_band — the spec's gap, not the seller's posture, is what out_of_band legitimately covers.

            Default: ["snapshot"] when absent (preserves the existing snapshot-coherence contract for sellers that don't declare). Empty array [] is invalid (minItems: 1) — omit the field to inherit the default rather than declaring no surfaces. Pick the surfaces that honestly describe where buyers will see impairments on this agent. Mixing is normative — ["snapshot", "webhook"] is the documented common case; ["snapshot", "webhook", "out_of_band"] is valid for sellers that ship all three surfaces (rare but legal). See lifecycle.mdx § Compliance for the per-surface contract.

          • Optionalcreative_approval_mode?: "auto_approve" | "require_human"

            Tenant-wide applicability signal for media-buy creative approval behavior. This is not a notification or new approval workflow. auto_approve means human review does not block serving eligibility after creatives are assigned and automated validation passes. require_human means one or more products/accounts may require manual review before creatives become eligible to serve; buyers and compliance runners MUST treat this as a worst-case ceiling across this seller's portfolio unless a future product-level override says otherwise. Compliance runners use this mainly to decide whether auto-approval-dependent storyboards apply. When absent, approval behavior is legacy-unspecified; runners SHOULD NOT treat omission as an affirmative auto-approval claim. ai_assisted is intentionally not part of the enum until a behavioral contract is defined.

          • Optionalsupported_indicator_types?: IndicatorType[]

            Indicator types this seller can expose on get_media_buys media-buy/package/creative-assignment snapshots. Each type's meaning is defined by the negotiated AdCP release; indicator types do not carry independent sub-versions. This is availability, not complete upstream coverage. Poll-only sellers may declare this field without relationship_notifications. If relationship_notifications includes indicators.changed, this field is required so receivers know which durable indicator types can be repaired.

          • Optionalrelationship_notifications?: {
                supported: true;
                registration_task: "sync_accounts";
                event_types: ("creative.assignment_changed" | "indicators.changed")[];
                repair_tasks: "get_media_buys"[];
                projection_tasks?: "list_creatives"[];
                supports_webhook_activity?: boolean;
            }

            Optional durable account-level invalidations for indicator, creative-assignment, and assignment-approval changes. A seller may expose indicators only through polling and omit this block. A seller without an indicator catalog may declare creative.assignment_changed alone. get_media_buys is the complete authoritative repair read. creative.assignment_changed is independent of the optional bounded list_creatives reverse projection, so inline-only sellers can advertise approval and assignment invalidations. Presence means the seller accepts the declared subscriptions through sync_accounts notification_configs. Timestamp-only reevaluation does not fire. Poll-based upstream integrations fire when they detect a change; this declaration does not promise upstream detection latency.

            • supported: true

              Discriminator. True means the declared invalidation event types are supported.

            • registration_task: "sync_accounts"

              Task buyers call to register account-level subscribers.

            • event_types: ("creative.assignment_changed" | "indicators.changed")[]

              Relationship invalidation events supported by this seller. indicators.changed requires supported_indicator_types but is not required merely because polling readback is available. creative.assignment_changed is independently available when the seller can detect assignment or assignment-approval changes; it does not require indicator support or list_creatives.

            • repair_tasks: "get_media_buys"[]

              Complete authoritative snapshot reads used after an invalidation. get_media_buys is mandatory and is the only 3.2 repair task for this contract.

            • Optionalprojection_tasks?: "list_creatives"[]

              Optional bounded reverse projections of relationship-scoped indicator and approval state. list_creatives is a discovery/read convenience for creative-library sellers, not a complete repair path; declaring it also requires creative in supported_protocols. Buyers fall back to get_media_buys whenever nested assignments are truncated or a relationship must be proven absent.

            • Optionalsupports_webhook_activity?: boolean

              Whether the declared repair tasks can return recent delivery attempts for these account-level invalidations when include_webhook_activity is true.

          • Optionalfeatures?: {
                inline_creative_management?: boolean;
                property_list_filtering?: boolean;
                catalog_management?: boolean;
                catalog_item_availability_updates?: boolean;
                committed_metrics_supported?: boolean;
                seller_optimized_budget?: boolean;
                bidding_policy?: {
                    media_buy?: {
                        fixed?: {
                            modes?: ...;
                            cost_per_strengths?: ...;
                            roas_strengths?: ...;
                            supported_combinations?: ...;
                        };
                        seller_optimized?: {
                            modes?: ...;
                            cost_per_strengths?: ...;
                            roas_strengths?: ...;
                            supported_combinations?: ...;
                        };
                    };
                    package?: {
                        fixed?: {
                            modes?: ...;
                            cost_per_strengths?: ...;
                            roas_strengths?: ...;
                            supported_combinations?: ...;
                        };
                        seller_optimized?: {
                            modes?: ...;
                            cost_per_strengths?: ...;
                            roas_strengths?: ...;
                            supported_combinations?: ...;
                        };
                    };
                };
                [key: string]: | boolean
                | {
                    media_buy?: {
                        fixed?: {
                            modes?: ...;
                            cost_per_strengths?: ...;
                            roas_strengths?: ...;
                            supported_combinations?: ...;
                        };
                        seller_optimized?: {
                            modes?: ...;
                            cost_per_strengths?: ...;
                            roas_strengths?: ...;
                            supported_combinations?: ...;
                        };
                    };
                    package?: {
                        fixed?: {
                            modes?: ...;
                            cost_per_strengths?: ...;
                            roas_strengths?: ...;
                            supported_combinations?: ...;
                        };
                        seller_optimized?: {
                            modes?: ...;
                            cost_per_strengths?: ...;
                            roas_strengths?: ...;
                            supported_combinations?: ...;
                        };
                    };
                }
                | undefined;
            }
            • Optionalinline_creative_management?: boolean

              Deprecated 3.x compatibility capability for creatives provided inline in create_media_buy and update_media_buy package payloads. buy_products, accept_proposal, and control_media_buy never accept inline creatives. New integrations use the dedicated creative lifecycle. Removed in 4.0.

            • Optionalproperty_list_filtering?: boolean

              Honors property_list parameter in get_products to filter results to buyer-approved properties

            • Optionalcatalog_management?: boolean

              Supports sync_catalogs task for catalog feed management with platform review and approval

            • Optionalcatalog_item_availability_updates?: boolean

              Supports buyer-pushed item_availability_updates and item_availability_queries on sync_catalogs for immediate suppression/restoration and current-state readback in buyer-managed catalogs. Seller declarations may be true only with catalog_management: true; buyer required_features filters may request this feature alone. Requests containing availability operations are synchronous and accept at most 1,000 combined update and query entries. A successful suppress covers selection, dynamic rendering, and cached or pre-generated creatives materialized from the item. Internal lineage MUST retain resolved_account_id, catalog_id, catalog_generation, and item_id. Static creatives supplied or promoted by the buyer without catalog lineage remain outside this automatic guarantee. Suppression persists across feed refreshes and ordinary upserts until restore, expires_at, or catalog deletion. A seller that does not declare true MUST reject availability operations with UNSUPPORTED_FEATURE before lookup or mutation and MUST NOT interpret them as discovery. This does not control seller-owned wholesale inventory or let restore bypass seller controls.

            • Optionalcommitted_metrics_supported?: boolean

              Seller has per-package snapshot infrastructure for the reporting contract. When true, the seller MUST populate package.committed_metrics on committed create_media_buy responses where confirmed_at is non-null, MUST omit package.committed_metrics while confirmed_at is null for a provisional buy, and MUST honor append-only mid-flight metric additions via update_media_buy. The unified committed_metrics array (per the metric-accountability design) covers both standard and vendor-defined metric entries, so a single flag is load-bearing. Buyers filtering on this flag are detecting 'this seller can stamp the reporting contract,' which closes the audit gap from PR #3510 where absence of committed_metrics was indistinguishable between 'didn't snapshot' and 'snapshot infrastructure not implemented.'

            • Optionalseller_optimized_budget?: boolean

              Supports media-buy-level shared budgets with budget_allocation.mode seller_optimized. Sellers declaring true MUST accept eligible explicit-package and proposal executions, enforce the aggregate budget and package constraints, apply media-buy-level pacing, and echo the allocation configuration on buy read surfaces. Product combinations may still be rejected when their currencies, optimization capabilities, pricing terms, or delivery constraints are incompatible. Sellers that do not declare this feature MUST reject any request carrying budget_allocation.mode: 'seller_optimized' with UNSUPPORTED_FEATURE before any provider mutation, and MUST NOT coerce the request to fixed allocation.

            • Optionalbidding_policy?: {
                  media_buy?: {
                      fixed?: {
                          modes?: ...;
                          cost_per_strengths?: ...;
                          roas_strengths?: ...;
                          supported_combinations?: ...;
                      };
                      seller_optimized?: {
                          modes?: ...;
                          cost_per_strengths?: ...;
                          roas_strengths?: ...;
                          supported_combinations?: ...;
                      };
                  };
                  package?: {
                      fixed?: {
                          modes?: ...;
                          cost_per_strengths?: ...;
                          roas_strengths?: ...;
                          supported_combinations?: ...;
                      };
                      seller_optimized?: {
                          modes?: ...;
                          cost_per_strengths?: ...;
                          roas_strengths?: ...;
                          supported_combinations?: ...;
                      };
                  };
              }

              Structured support for canonical bidding by authored scope, allocation context, mode, strength, and strength-qualified multi-field combination. Presence does not imply support for both scopes, both allocation modes, or every policy shape. Sellers MUST preserve every advertised semantic exactly and reject unadvertised policies rather than translating them.

          • Optionalexecution?: {
                trusted_match?: { surfaces?: PropertyType[] };
                axe_integrations?: string[];
                creative_specs?: {
                    vast_versions?: string[];
                    mraid_versions?: string[];
                    vpaid?: boolean;
                    simid?: boolean;
                    vast_validation?: "document" | "structural" | "wrapper";
                };
                targeting?: {
                    geo_countries?: boolean;
                    geo_regions?: | boolean
                    | {
                        countries: Omit<(...), (...)> & { authentication?: ... };
                        catalog_version?: string;
                        as_of?: string;
                        max_values_per_package?: number;
                        max_packages?: number;
                        ext?: (...) & (...);
                    };
                    geo_regions_exclude?: | boolean
                    | {
                        countries: Omit<(...), (...)> & { authentication?: ... };
                        catalog_version?: string;
                        as_of?: string;
                        max_values_per_package?: number;
                        max_packages?: number;
                        ext?: (...) & (...);
                    };
                    geo_metros?: {
                        nielsen_dma?: boolean;
                        uk_itl1?: boolean;
                        uk_itl2?: boolean;
                        eurostat_nuts2?: boolean;
                    };
                    geo_postal_areas?: {
                        US?: (...)[];
                        GB?: (...)[];
                        CA?: (...)[];
                        DE?: (...)[];
                        CH?: (...)[];
                        AT?: (...)[];
                        FR?: (...)[];
                        AU?: (...)[];
                        BR?: (...)[];
                        IN?: (...)[];
                        ZA?: (...)[];
                        us_zip?: boolean;
                        us_zip_plus_four?: boolean;
                        gb_outward?: boolean;
                        gb_full?: boolean;
                        ca_fsa?: boolean;
                        ca_full?: boolean;
                        de_plz?: boolean;
                        fr_code_postal?: boolean;
                        au_postcode?: boolean;
                        ch_plz?: boolean;
                        at_plz?: boolean;
                        [key: Uppercase<string>]: (...)[] | undefined;
                    };
                    geo_places?: Omit<Omit<(...), (...)>, "authentication"> & {
                        authentication?: unknown;
                    };
                    age_restriction?: { supported?: boolean; verification_methods?: (...)[] };
                    demographics?: { supported: boolean };
                    language?:
                        | boolean
                        | { supported?: boolean; supported_languages?: (...)[] };
                    keyword_targets?: { supported_match_types: MatchType[] };
                    negative_keywords?: { supported_match_types: MatchType[] };
                    placement_selection?: boolean;
                    property_list?: boolean;
                    property_list_exclude?: boolean;
                    collection_list?: boolean;
                    collection_list_exclude?: boolean;
                    geo_proximity?: {
                        radius?: boolean;
                        travel_time?: boolean;
                        geometry?: boolean;
                        transport_modes?: (...)[];
                    };
                };
            }

            Technical execution capabilities for media buying

            • Optionaltrusted_match?: { surfaces?: PropertyType[] }

              Trusted Match Protocol (TMP) support. Presence of this object indicates the seller has TMP infrastructure deployed. Check individual products via get_products for per-product TMP capabilities.

              • Optionalsurfaces?: PropertyType[]

                Surface types this seller supports via TMP.

            • Optionalaxe_integrations?: string[]

              Deprecated. Legacy AXE integrations. Use trusted_match for new integrations.

            • Optionalcreative_specs?: {
                  vast_versions?: string[];
                  mraid_versions?: string[];
                  vpaid?: boolean;
                  simid?: boolean;
                  vast_validation?: "document" | "structural" | "wrapper";
              }

              Creative specification support

              • Optionalvast_versions?: string[]

                VAST versions supported for video creatives

              • Optionalmraid_versions?: string[]

                MRAID versions supported for rich media mobile creatives

              • Optionalvpaid?: boolean

                VPAID support for interactive video ads

              • Optionalsimid?: boolean

                SIMID support for interactive video ads

              • Optionalvast_validation?: "document" | "structural" | "wrapper"

                Level of VAST asset validation the seller performs at sync_creatives (including dry_run): 'structural' checks manifest shape and format requirements only and never inspects the VAST document; 'document' additionally parses the VAST document and can return VAST_PARSE_FAILED / VAST_VERSION_MISMATCH; 'wrapper' additionally resolves the wrapper chain and can return VAST_WRAPPER_DEPTH_EXCEEDED. Absent means 'structural'. See the VAST Validation section of the video channel documentation for the normative checks at each level.

            • Optionaltargeting?: {
                  geo_countries?: boolean;
                  geo_regions?:
                      | boolean
                      | {
                          countries: Omit<(...), (...)> & { authentication?: ... };
                          catalog_version?: string;
                          as_of?: string;
                          max_values_per_package?: number;
                          max_packages?: number;
                          ext?: (...) & (...);
                      };
                  geo_regions_exclude?: | boolean
                  | {
                      countries: Omit<(...), (...)> & { authentication?: ... };
                      catalog_version?: string;
                      as_of?: string;
                      max_values_per_package?: number;
                      max_packages?: number;
                      ext?: (...) & (...);
                  };
                  geo_metros?: {
                      nielsen_dma?: boolean;
                      uk_itl1?: boolean;
                      uk_itl2?: boolean;
                      eurostat_nuts2?: boolean;
                  };
                  geo_postal_areas?: {
                      US?: (...)[];
                      GB?: (...)[];
                      CA?: (...)[];
                      DE?: (...)[];
                      CH?: (...)[];
                      AT?: (...)[];
                      FR?: (...)[];
                      AU?: (...)[];
                      BR?: (...)[];
                      IN?: (...)[];
                      ZA?: (...)[];
                      us_zip?: boolean;
                      us_zip_plus_four?: boolean;
                      gb_outward?: boolean;
                      gb_full?: boolean;
                      ca_fsa?: boolean;
                      ca_full?: boolean;
                      de_plz?: boolean;
                      fr_code_postal?: boolean;
                      au_postcode?: boolean;
                      ch_plz?: boolean;
                      at_plz?: boolean;
                      [key: Uppercase<string>]: (...)[] | undefined;
                  };
                  geo_places?: Omit<Omit<(...), (...)>, "authentication"> & {
                      authentication?: unknown;
                  };
                  age_restriction?: { supported?: boolean; verification_methods?: (...)[] };
                  demographics?: { supported: boolean };
                  language?: boolean | { supported?: boolean; supported_languages?: (...)[] };
                  keyword_targets?: { supported_match_types: MatchType[] };
                  negative_keywords?: { supported_match_types: MatchType[] };
                  placement_selection?: boolean;
                  property_list?: boolean;
                  property_list_exclude?: boolean;
                  collection_list?: boolean;
                  collection_list_exclude?: boolean;
                  geo_proximity?: {
                      radius?: boolean;
                      travel_time?: boolean;
                      geometry?: boolean;
                      transport_modes?: (...)[];
                  };
              }

              Targeting capabilities. If declared true/supported, buyer can use these targeting parameters and seller MUST honor them.

              • Optionalgeo_countries?: boolean

                Country-level targeting using ISO 3166-1 alpha-2 codes

              • Optionalgeo_regions?:
                    | boolean
                    | {
                        countries: Omit<(...), (...)> & { authentication?: ... };
                        catalog_version?: string;
                        as_of?: string;
                        max_values_per_package?: number;
                        max_packages?: number;
                        ext?: (...) & (...);
                    }

                ISO 3166-2 subdivision inclusion targeting. A legacy boolean is a coarse seller-wide declaration. Structured country/value entries are individually supported within the response scope, but do not promise joint composability or availability through the same execution route or account. Only Product.overlay_support supplies the binding set of executable targeting permissions for a configured Product.

              • Optionalgeo_regions_exclude?:
                    | boolean
                    | {
                        countries: Omit<(...), (...)> & { authentication?: ... };
                        catalog_version?: string;
                        as_of?: string;
                        max_values_per_package?: number;
                        max_packages?: number;
                        ext?: (...) & (...);
                    }

                ISO 3166-2 subdivision exclusion targeting, declared independently from inclusion. Structured country/value entries are individually supported within the response scope, but do not promise joint composability or availability through the same execution route or account. Only Product.overlay_support supplies the binding set of executable targeting permissions for a configured Product; absence means buyers cannot infer exclusion support from geo_regions alone.

              • Optionalgeo_metros?: {
                    nielsen_dma?: boolean;
                    uk_itl1?: boolean;
                    uk_itl2?: boolean;
                    eurostat_nuts2?: boolean;
                }

                Metro area targeting. Properties indicate which classification systems are supported.

              • Optionalgeo_postal_areas?: {
                    US?: (...)[];
                    GB?: (...)[];
                    CA?: (...)[];
                    DE?: (...)[];
                    CH?: (...)[];
                    AT?: (...)[];
                    FR?: (...)[];
                    AU?: (...)[];
                    BR?: (...)[];
                    IN?: (...)[];
                    ZA?: (...)[];
                    us_zip?: boolean;
                    us_zip_plus_four?: boolean;
                    gb_outward?: boolean;
                    gb_full?: boolean;
                    ca_fsa?: boolean;
                    ca_full?: boolean;
                    de_plz?: boolean;
                    fr_code_postal?: boolean;
                    au_postcode?: boolean;
                    ch_plz?: boolean;
                    at_plz?: boolean;
                    [key: Uppercase<string>]: (...)[] | undefined;
                }
                • OptionalUS?: (...)[]

                  1

                • OptionalGB?: (...)[]

                  1

                • OptionalCA?: (...)[]

                  1

                • OptionalDE?: (...)[]

                  1

                • OptionalCH?: (...)[]

                  1

                • OptionalAT?: (...)[]

                  1

                • OptionalFR?: (...)[]

                  1

                • OptionalAU?: (...)[]

                  1

                • OptionalBR?: (...)[]

                  1

                • OptionalIN?: (...)[]

                  1

                • OptionalZA?: (...)[]

                  1

                • Optionalus_zip?: boolean
                • Optionalus_zip_plus_four?: boolean
                • Optionalgb_outward?: boolean
                • Optionalgb_full?: boolean
                • Optionalca_fsa?: boolean
                • Optionalca_full?: boolean
                • Optionalde_plz?: boolean
                • Optionalfr_code_postal?: boolean
                • Optionalau_postcode?: boolean
                • Optionalch_plz?: boolean
                • Optionalat_plz?: boolean
              • Optionalgeo_places?: Omit<Omit<(...), (...)>, "authentication"> & { authentication?: unknown }

                Place targeting support keyed by collision-safe identifier system. Each system declares exact country-to-place-type combinations, accepted catalog versions, and a machine-readable resolver. Sellers MUST reject unsupported systems, country/type pairs, versions, and identifiers rather than silently dropping them.

              • Optionalage_restriction?: { supported?: boolean; verification_methods?: (...)[] }

                Age restriction capabilities for compliance (alcohol, gambling)

                • Optionalsupported?: boolean

                  Whether seller supports age restrictions

                • Optionalverification_methods?: (...)[]

                  Age verification methods this seller supports

              • Optionaldemographics?: { supported: boolean }

                Seller-wide discovery rollup for canonical demographic targeting. supported=true means at least one product implements the demographic targeting contract; it does not authorize demographic targeting on every product. Buyers MUST inspect Product.demographic_targeting for exact execution modes, bounds, intervals, and unknown-age behavior.

                • supported: boolean

                  Whether at least one seller product supports canonical demographic targeting.

              • Optionallanguage?: boolean | { supported?: boolean; supported_languages?: (...)[] }

                Language-preference targeting support. A legacy boolean is a coarse declaration. The structured form can enumerate the exact canonical BCP 47 targeting ranges the seller accepts. Buyers MUST treat supported_languages as exact selectable values: a declared 'fr' does not by itself authorize a request for 'fr-CA'. Sellers MUST reject unsupported requested values rather than silently widening or dropping them.

              • Optionalkeyword_targets?: { supported_match_types: MatchType[] }

                Keyword targeting capabilities. Presence indicates support for targeting_overlay.keyword_targets and keyword_targets_add/remove in update_media_buy.

                • supported_match_types: MatchType[]

                  Match types this seller supports for keyword targets. Sellers must reject goals with unsupported match types.

              • Optionalnegative_keywords?: { supported_match_types: MatchType[] }

                Negative keyword capabilities. Presence indicates support for targeting_overlay.negative_keywords and negative_keywords_add/remove in update_media_buy.

                • supported_match_types: MatchType[]

                  Match types this seller supports for negative keywords. Sellers must reject goals with unsupported match types.

              • Optionalplacement_selection?: boolean

                When true, seller-wide rollup indicating at least one product supports targeting_overlay.placement_selection. False or absence makes no product-level promise. Product.overlay_support and Product.placements remain authoritative for a selected product.

              • Optionalproperty_list?: boolean

                When true, seller-wide rollup indicating at least one product supports targeting_overlay.property_list inclusion targeting. False or absence makes no product-level promise. Product.overlay_support is authoritative.

              • Optionalproperty_list_exclude?: boolean

                When true, seller-wide rollup indicating at least one product supports targeting_overlay.property_list_exclude targeting. False or absence makes no product-level promise. Product.overlay_support is authoritative.

              • Optionalcollection_list?: boolean

                When true, seller-wide rollup indicating at least one product supports targeting_overlay.collection_list inclusion targeting. False or absence makes no product-level promise. Product.overlay_support is authoritative.

              • Optionalcollection_list_exclude?: boolean

                When true, seller-wide rollup indicating at least one product supports targeting_overlay.collection_list_exclude targeting. False or absence makes no product-level promise. Product.overlay_support is authoritative.

              • Optionalgeo_proximity?: {
                    radius?: boolean;
                    travel_time?: boolean;
                    geometry?: boolean;
                    transport_modes?: (...)[];
                }

                Proximity targeting capabilities from arbitrary coordinates via targeting_overlay.geo_proximity.

                • Optionalradius?: boolean

                  Whether seller supports simple radius targeting (distance circle from a point)

                • Optionaltravel_time?: boolean

                  Whether seller supports travel time isochrone targeting (requires a routing engine)

                • Optionalgeometry?: boolean

                  Whether seller supports pre-computed GeoJSON geometry (buyer provides the polygon)

                • Optionaltransport_modes?: (...)[]

                  Transport modes supported for travel_time isochrones. Only relevant when travel_time is true.

          • Optionalaudience_evidence?: {
                supported_requirement_modes: ("required" | "preferred")[];
                supported_presence_modes: ("required" | "when_available")[];
                supports_attestation_evaluation: boolean;
            }

            Support for structured product audience evidence and buyer-authored evidence policy. Presence means the seller can publish Product.audience_evidence, preserve immutable snapshots through package readback, and evaluate the declared policy modes. It does not declare audience-targeting capability.

            • supported_requirement_modes: ("required" | "preferred")[]

              Buyer policy modes the seller evaluates. A seller MUST NOT silently ignore a mode it does not list.

            • supported_presence_modes: ("required" | "when_available")[]

              Evidence-presence semantics the seller supports.

            • supports_attestation_evaluation: boolean

              Whether the seller evaluates audience-evidence attestation_refs under its core adcp.attestations policy and returns the exact reference and AttestationEvaluation in package readback.

          • Optionalrights_attestations?: { requirement: "required" | "optional" }

            Seller evaluation policy for portable rights-grant attestations carried on creative rights constraints. Presence requires adcp.attestations and the rights-grant claim URI in accepted_claim_types. The seller remains verifier-of-record and never treats verification_url or a buyer-authored evaluation as authorization.

            • requirement: "required" | "optional"

              required means every applicable rights constraint needs at least one current verified attestation evaluation before the creative is eligible to serve. optional permits independent legacy contractual policy, but unattested constraints remain machine-unverified and verification_url is never a downgrade path.

          • Optionalaudience_targeting?: {
                supported_identifier_types: ("hashed_email" | "hashed_phone")[];
                supports_platform_customer_id?: boolean;
                supported_uid_types?: UIDType[];
                minimum_audience_size: number;
                matching_latency_hours?: { min?: number; max?: number };
            }

            Audience targeting capabilities. Presence of this object indicates the seller supports audience targeting, including sync_audiences and audience_include/audience_exclude in targeting overlays.

            • supported_identifier_types: ("hashed_email" | "hashed_phone")[]

              PII-derived identifier types accepted for audience matching. Buyers should only send identifiers the seller supports.

            • Optionalsupports_platform_customer_id?: boolean

              Whether the seller accepts the buyer's CRM/loyalty ID as a matchable identifier. Only applicable when the seller operates a closed ecosystem with a shared ID namespace (e.g., a retailer matching against their loyalty program). When true, buyers can include platform_customer_id values in AudienceMember.identifiers for matching against the seller's identity graph. Reporting on matched platform_customer_ids typically requires a clean room or the seller's own reporting surface.

            • Optionalsupported_uid_types?: UIDType[]

              Universal ID types accepted for audience matching (MAIDs, RampID, UID2, etc.). MAID support varies significantly by platform — check this field before sending uids with type: maid.

            • minimum_audience_size: number

              Minimum matched audience size required for targeting. Audiences below this threshold will have status: too_small. Varies by platform (100–1000 is typical).

              1

            • Optionalmatching_latency_hours?: { min?: number; max?: number }

              Expected matching latency range in hours after upload. Use to calibrate polling cadence and set appropriate expectations before configuring push_notification_config.

              • Optionalmin?: number

                0

              • Optionalmax?: number

                0

          • Optionalsupported_optimization_metrics?: (
                | "clicks"
                | "views"
                | "completed_views"
                | "reach"
                | "engagements"
                | "follows"
                | "saves"
                | "profile_visits"
                | "attention_score"
                | "viewed_seconds"
                | "attention_seconds"
            )[]

            Optimization metrics this seller can support on at least one of their products. Seller-level rollup of product-level metric_optimization.supported_metrics declarations (core/product.json). Buyers SHOULD filter their requested optimization goals against this list before submitting briefs. Sellers MUST keep this in sync with their product catalog — if no products support a metric, it must not appear here. Omitting this field means the seller declares no specific guarantees about which metrics they support; buyers should fall back to per-product inspection of metric_optimization.supported_metrics.

          • Optionalvendor_metric_optimization?: { supported_targets?: ("cost_per" | "threshold_rate")[] }

            Seller-level rollup of vendor-metric optimization capabilities supported by at least one product. Product-level vendor_metric_optimization.supported_metrics[] remains authoritative for the specific (vendor, metric_id) pairs and target kinds a buyer may bind on a package; this seller-level object exists so buyers and compliance runners can discover whether vendor_metric goals are in scope before walking the catalog. Sellers MUST keep this in sync with product-level vendor_metric_optimization declarations.

            • Optionalsupported_targets?: ("cost_per" | "threshold_rate")[]

              Target kinds this seller can support for vendor_metric optimization goals on at least one product. Values match optimization_goals[].target.kind for kind: vendor_metric. A target-less vendor_metric goal maximizes the metric within budget and does not require a target-kind declaration.

          • Optionalconversion_tracking?: {
                multi_source_event_dedup?: boolean;
                per_creative_attribution?: boolean;
                supported_event_types?: EventType[];
                supported_targets?: ("cost_per" | "per_ad_spend" | "maximize_value")[];
                supported_uid_types?: UIDType[];
                supported_hashed_identifiers?: ("hashed_email" | "hashed_phone")[];
                supported_action_sources?: ActionSource[];
                attribution_windows?: {
                    event_type?: EventType;
                    post_click: {
                        interval: number;
                        unit: (...) | (...) | (...) | (...) | (...);
                    }[];
                    post_view?: { interval: ...; unit: ... }[];
                }[];
            }

            Seller-level conversion tracking capabilities. Presence of this object indicates the seller supports sync_event_sources and log_event for conversion event tracking.

            • Optionalmulti_source_event_dedup?: boolean

              Whether this seller can deduplicate conversion events across multiple event sources within a single goal. When true, the seller honors the deduplication semantics in optimization_goals event_sources arrays — the same event_id from multiple sources counts once. When false or absent, buyers should use a single event source per goal; multi-source arrays will be treated as first-source-wins. Most social platforms cannot deduplicate across independently-managed pixel and CAPI sources.

            • Optionalper_creative_attribution?: boolean

              Whether the seller can attribute conversions to specific creatives within a package and surface that breakdown via media_buy_deliveries[].by_package[].by_creative[].conversions in get_media_buy_delivery. Defaults to false when omitted. Sellers that report conversions only at the line / package / placement / campaign granularity (retail-media, MMP-mediated mobile, CTV performance) declare false (or omit) and the per-creative scenario grades not_applicable for them. Sellers that surface ad-level conversion attribution (most social platforms) declare true and the scenario asserts the breakdown is populated end-to-end. Defaults to false to preserve backward compatibility.

            • Optionalsupported_event_types?: EventType[]

              Event types this seller can track and attribute. If omitted, all standard event types are supported.

            • Optionalsupported_targets?: ("cost_per" | "per_ad_spend" | "maximize_value")[]

              Event-goal target kinds this seller can compute against. Buyers should only submit event-kind optimization goals whose target.kind is listed here — sellers MUST reject goals with unlisted target kinds. When omitted, only target-less event goals (maximize conversion count within budget) are guaranteed; sellers MAY accept specific target kinds but buyers should not rely on it. Named to parallel metric_optimization.supported_targets at the product level — same concept (which target kinds are supported), one at seller-capability granularity and one at product granularity.

            • Optionalsupported_uid_types?: UIDType[]

              Universal ID types accepted for user matching

            • Optionalsupported_hashed_identifiers?: ("hashed_email" | "hashed_phone")[]

              Hashed PII types accepted for user matching. Buyers must hash before sending (SHA-256, normalized).

            • Optionalsupported_action_sources?: ActionSource[]

              Action sources this seller accepts events from

            • Optionalattribution_windows?: {
                  event_type?: EventType;
                  post_click: {
                      interval: number;
                      unit: (...) | (...) | (...) | (...) | (...);
                  }[];
                  post_view?: { interval: ...; unit: ... }[];
              }[]

              Attribution windows available from this seller. Single-element arrays indicate fixed windows; multi-element arrays indicate configurable options the buyer can choose from via attribution_window on optimization goals.

          • Optionalfrequency_capping?: { supported_per_units?: ReachUnit[]; supported_window_units?: string[] }

            Frequency capping capabilities. Presence of this object indicates the seller honors targeting.frequency_cap on packages and MUST reject caps it cannot enforce rather than silently dropping them. Buyers SHOULD inspect supported_per_units and supported_window_units before submitting caps; sellers without these sub-fields populated MAY accept any reach-unit / duration-unit combination they can enforce. Per-product overrides (for sellers with mixed addressable/non-addressable inventory) are a likely follow-up — file a separate RFC if needed.

            • Optionalsupported_per_units?: ReachUnit[]

              Entity granularities the seller can enforce caps against. Values from the reach-unit enum. Omit to indicate all reach-unit values are supported.

            • Optionalsupported_window_units?: string[]

              Duration units the seller supports for frequency cap windows. Values must match the duration.json unit enum (e.g., 'hours', 'days', 'campaign'). Omit to indicate all duration units are supported.

          • Optionalbudget_capping?: {
                supported_scopes: ("package" | "media_buy")[];
                supported_periods: "day"[];
                timezone_basis: "fixed" | "account";
                fixed_timezone?: string;
                buyer_timezone_override?: boolean;
            }

            Hard daily budget-cap capabilities. Presence declares only the scopes listed in supported_scopes; sellers MUST reject a daily_budget_cap at an undeclared scope with UNSUPPORTED_FEATURE before mutation and MUST NOT silently drop or soften it. A cap is always a hard ceiling. Sellers that offer a best-effort pacing target must expose that under a separately named feature rather than interpreting daily_budget_cap as soft. Daily caps are orthogonal to pacing.

            • supported_scopes: ("package" | "media_buy")[]

              Scopes where the seller enforces hard daily caps. media_buy bounds aggregate spend across all packages without allocating it. package bounds one package and remains subordinate to any aggregate cap.

            • supported_periods: "day"[]

              Cap reset periods the seller enforces. AdCP 3.2 defines day only; the array form reserves room for future periods as an additive change.

            • timezone_basis: "fixed" | "account"

              Source of the default cap-day boundary. account uses the selected Account.timezone and therefore supports different boundaries for different accounts. fixed uses fixed_timezone for every media buy regardless of account timezone.

            • Optionalfixed_timezone?: string

              Feature-specific default cap-day timezone used when timezone_basis is fixed. Use UTC or an IANA timezone identifier.

              1

            • Optionalbuyer_timezone_override?: boolean

              When true, buyers MAY override the default cap-day boundary via media-buy-level budget_cap_timezone. The accepted timezone applies to aggregate and package caps alike. When false or absent, a submitted override is rejected with UNSUPPORTED_FEATURE.

          • Optionalcontent_standards?: {
                supports_local_evaluation?: boolean;
                supported_channels?: MediaChannel[];
                supports_webhook_delivery?: boolean;
            }

            Content standards implementation details. Presence of this object indicates the seller supports content_standards configuration including sampling rates and category filtering. Gives buyers pre-buy visibility into local evaluation and artifact delivery capabilities. This is a seller-side media-buy capability; governance agents providing content standards services declare specialisms: ["content-standards"] instead.

            • Optionalsupports_local_evaluation?: boolean

              Whether the seller runs a local evaluation model. When false, all artifacts will have local_verdict: 'unevaluated' and the failures_only filter on get_media_buy_artifacts is not useful.

            • Optionalsupported_channels?: MediaChannel[]

              Channels for which the seller can provide content artifacts. Helps buyers understand which parts of a mixed-channel buy will have content standards coverage.

            • Optionalsupports_webhook_delivery?: boolean

              Whether the seller supports push-based artifact delivery via artifact_webhook configured at buy creation time.

          • Optionalportfolio?: {
                publisher_domains: string[];
                primary_channels?: MediaChannel[];
                primary_countries?: string[];
                description?: string;
                advertising_policies?: string;
            }

            Information about the seller's media inventory portfolio. Media-buy sellers SHOULD publish primary_channels and primary_countries as their complete brief-routing scope. Buyers use publisher_domains to verify authorization via adagents.json. Omitted routing arrays mean unknown scope and MUST NOT be interpreted as global coverage.

            • publisher_domains: string[]

              Publisher domains this seller is authorized to represent. Buyers should fetch each publisher's adagents.json for property definitions.

            • Optionalprimary_channels?: MediaChannel[]

              Complete list of AdCP media channels for which this sales agent accepts and can meaningfully answer product-discovery briefs. When present, this is an exhaustive brief-routing allowlist: buyers MAY skip the agent when a brief's requested channels do not intersect it. Omission means channel scope is unknown and MUST NOT be interpreted as support for every channel. This is a routing pre-filter, not a promise of current product availability.

            • Optionalprimary_countries?: string[]

              Complete list of ISO 3166-1 alpha-2 countries for which this sales agent accepts and can meaningfully answer product-discovery briefs. When present, this is an exhaustive brief-routing allowlist: buyers MAY skip the agent when a brief's requested countries do not intersect it. Omission means country scope is unknown and MUST NOT be interpreted as global coverage. This is a routing pre-filter, not a promise of current product availability and not an executable geo-targeting declaration; media_buy.execution.targeting geo capabilities and each product's overlay_support remain authoritative for targeting execution.

            • Optionaldescription?: string

              Markdown-formatted description of the inventory portfolio

              5000

            • Optionaladvertising_policies?: string

              Advertising content policies, restrictions, and guidelines

              10000

        • Optionalsignals?: {
              data_provider_domains?: string[];
              discovery_modes?: ("brief" | "wholesale")[];
              features?: {
                  catalog_signals?: boolean;
                  [key: string]: boolean | undefined;
              };
          }

          Signals protocol capabilities. Only present if signals is in supported_protocols.

          • Optionaldata_provider_domains?: string[]

            Data provider domains this signals agent is authorized to resell. Buyers should fetch each data provider's adagents.json for published signal definitions and to verify authorization.

          • Optionaldiscovery_modes?: ("brief" | "wholesale")[]

            Discovery modes this signals agent supports on get_signals. 'brief' (default — every signals agent supports this): semantic discovery driven by signal_spec or signal_refs, with deprecated signal_ids accepted for older clients. 'wholesale': raw wholesale signals feed enumeration — caller omits signal_spec, signal_refs, and signal_ids and the agent returns its full priced signals feed, paginated, scoped by filters/account/destinations/countries. Agents that do not declare 'wholesale' MAY return INVALID_REQUEST for wholesale calls. Absent declaration is treated as ['brief'].

          • Optionalfeatures?: { catalog_signals?: boolean; [key: string]: boolean | undefined }

            Optional signals features supported

            • Optionalcatalog_signals?: boolean

              DEPRECATED. Legacy wire flag for structured signal_ref references to provider-published signal definitions. New agents SHOULD omit this flag; callers MUST NOT require it before using signal_ref with the Signals protocol.

        • Optionalgovernance?: {
              runtime_attestations?: {
                  signal_activation: {
                      requirement: "required" | "optional";
                      claim_types: string[];
                  };
              };
              aggregation_window_days?: number;
              property_features?: {
                  feature_id: string;
                  type: "binary"
                  | "categorical"
                  | "quantitative";
                  range?: { min: number; max: number };
                  categories?: string[];
                  description?: string;
                  methodology_url?: string;
              }[];
              creative_features?: {
                  feature_id: string;
                  type: "binary"
                  | "categorical"
                  | "quantitative";
                  range?: { min: number; max: number };
                  categories?: string[];
                  description?: string;
                  methodology_url?: string;
              }[];
          }

          Governance protocol capabilities. Only present if governance is in supported_protocols. Governance agents provide property and creative data like compliance scores, brand safety ratings, sustainability metrics, and creative quality assessments.

          • Optionalruntime_attestations?: {
                signal_activation: {
                    requirement: "required" | "optional";
                    claim_types: string[];
                };
            }

            Signal-activation policy for the portable attestation support declared in adcp.attestations. Presence means check_governance accepts runtime_attestations[] for purchase_type signal_activation. The claim_types list MUST be a subset of adcp.attestations.accepted_claim_types; issuer, resolver, verifier, proof-format, and delivery allowlists remain authoritative in the shared adcp.attestations block rather than being duplicated here.

            • signal_activation: { requirement: "required" | "optional"; claim_types: string[] }
              • requirement: "required" | "optional"

                Whether an activate_signal activation check may omit runtime_attestations. When required, missing evidence fails an activation check. Deactivation and privacy-removal checks never require signal-quality evidence and remain available without it.

              • claim_types: string[]

                Signal-quality claim identifiers accepted for this governed action. Values are open absolute URIs and MUST be a subset of adcp.attestations.accepted_claim_types.

          • Optionalaggregation_window_days?: number

            Trailing window (in days) over which this governance agent aggregates committed spend when evaluating dollar-valued thresholds (reallocation_threshold, human_review triggers, registry-policy floors). Required for fragmentation defense: without aggregation, a buyer can split a single large spend into many sub-threshold commits across plans / task surfaces / time and bypass every dollar-gated escalation. Aggregation is keyed on (buyer_agent, seller_agent, account_id) and spans all spend-commit task types. Upper bound 365 represents a one-year trailing window (fiscal-year alignment with grace); governance agents needing longer scopes negotiate via operator sign-off, not this capability. No schema default: absence of this field indicates the governance agent has not committed to any aggregation window and buyers MUST assume per-commit evaluation only (the fragmentation attack surface is open). A declared value of 30 is a common starting point but is not implied by omission. Buyers depending on a specific window for compliance MUST check this capability before relying on aggregation semantics — an agent declaring 7 days does not defend against fragmentation spread across a 30-day quarter-end push.

            1

            365

          • Optionalproperty_features?: {
                feature_id: string;
                type: "binary" | "categorical" | "quantitative";
                range?: { min: number; max: number };
                categories?: string[];
                description?: string;
                methodology_url?: string;
            }[]

            Property features this governance agent can evaluate. Each feature describes a score, rating, or certification the agent can provide for properties.

          • Optionalcreative_features?: {
                feature_id: string;
                type: "binary" | "categorical" | "quantitative";
                range?: { min: number; max: number };
                categories?: string[];
                description?: string;
                methodology_url?: string;
            }[]

            Creative features this governance agent can evaluate. Each feature describes a score, rating, or assessment the agent can provide for creatives (e.g., security scanning, creative quality, content categorization).

        • Optionalsponsored_intelligence?: {
              endpoint: {
                  transports: { type: "mcp" | "a2a"; url: string }[];
                  preferred?: "mcp" | "a2a";
              };
              capabilities: {
                  modalities?: {
                      conversational?: boolean;
                      voice?: boolean
                      | { provider?: string; voice_id?: string };
                      video?: boolean | { formats?: string[]; max_duration_seconds?: number };
                      avatar?: boolean | { provider?: string; avatar_id?: string };
                  };
                  components?: {
                      standard?: (
                          | "image"
                          | "text"
                          | "link"
                          | "product_card"
                          | "carousel"
                          | "action_button"
                      )[];
                      extensions?: Omit<Omit<{}, "bank">, "authentication"> & {
                          authentication?: unknown;
                      };
                  };
                  commerce?: { acp_checkout?: boolean };
                  a2ui?: { supported?: boolean; catalogs?: string[] };
                  mcp_apps?: boolean;
              };
              brand_url?: string;
          }

          Sponsored Intelligence protocol capabilities. Only present if sponsored_intelligence is in supported_protocols. SI agents handle conversational brand experiences.

          • endpoint: {
                transports: { type: "mcp" | "a2a"; url: string }[];
                preferred?: "mcp" | "a2a";
            }

            SI agent endpoint configuration

            • transports: { type: "mcp" | "a2a"; url: string }[]

              Available protocol transports. Hosts select based on their capabilities.

            • Optionalpreferred?: "mcp" | "a2a"

              Preferred transport when host supports multiple

          • capabilities: {
                modalities?: {
                    conversational?: boolean;
                    voice?: boolean | { provider?: string; voice_id?: string };
                    video?: boolean | { formats?: string[]; max_duration_seconds?: number };
                    avatar?: boolean | { provider?: string; avatar_id?: string };
                };
                components?: {
                    standard?: (
                        | "image"
                        | "text"
                        | "link"
                        | "product_card"
                        | "carousel"
                        | "action_button"
                    )[];
                    extensions?: Omit<Omit<{}, "bank">, "authentication"> & {
                        authentication?: unknown;
                    };
                };
                commerce?: { acp_checkout?: boolean };
                a2ui?: { supported?: boolean; catalogs?: string[] };
                mcp_apps?: boolean;
            }
            • Optionalmodalities?: {
                  conversational?: boolean;
                  voice?: boolean | { provider?: string; voice_id?: string };
                  video?: boolean | { formats?: string[]; max_duration_seconds?: number };
                  avatar?: boolean | { provider?: string; avatar_id?: string };
              }

              Interaction modalities supported

              • Optionalconversational?: boolean

                Pure text exchange - the baseline modality

              • Optionalvoice?: boolean | { provider?: string; voice_id?: string }

                Audio-based interaction using brand voice

              • Optionalvideo?: boolean | { formats?: string[]; max_duration_seconds?: number }

                Brand video content playback

              • Optionalavatar?: boolean | { provider?: string; avatar_id?: string }

                Animated video presence with brand avatar

            • Optionalcomponents?: {
                  standard?: (
                      | "image"
                      | "text"
                      | "link"
                      | "product_card"
                      | "carousel"
                      | "action_button"
                  )[];
                  extensions?: Omit<Omit<{}, "bank">, "authentication"> & {
                      authentication?: unknown;
                  };
              }

              Visual components supported

              • Optionalstandard?: ("image" | "text" | "link" | "product_card" | "carousel" | "action_button")[]

                Standard components that all SI hosts must render

              • Optionalextensions?: Omit<Omit<{}, "bank">, "authentication"> & { authentication?: unknown }

                Platform-specific extensions (chatgpt_apps_sdk, maps, forms, etc.)

            • Optionalcommerce?: { acp_checkout?: boolean }

              Commerce capabilities

              • Optionalacp_checkout?: boolean

                Supports ACP (Agentic Commerce Protocol) checkout handoff

            • Optionala2ui?: { supported?: boolean; catalogs?: string[] }

              A2UI (Agent-to-UI) capabilities

              • Optionalsupported?: boolean

                Supports A2UI surface rendering

              • Optionalcatalogs?: string[]

                Supported A2UI component catalogs (e.g., 'si-standard', 'standard')

            • Optionalmcp_apps?: boolean

              Supports MCP Apps for rendering A2UI surfaces in iframes

          • Optionalbrand_url?: string

            URL to brand.json with colors, fonts, logos, tone

        • Optionalbrand?: {
              rights?: boolean;
              right_types?: RightType[];
              available_uses?: RightUse[];
              generation_providers?: string[];
              description?: string;
          }

          Brand protocol capabilities. Only present if brand is in supported_protocols. Brand agents provide identity data (logos, colors, tone, assets) and optionally rights clearance for licensable content (talent, music, stock media).

          • Optionalrights?: boolean

            Supports get_rights and acquire_rights for rights discovery and clearance

          • Optionalright_types?: RightType[]

            Types of rights available through this agent

          • Optionalavailable_uses?: RightUse[]

            Rights uses available across this agent's roster

          • Optionalgeneration_providers?: string[]

            LLM/generation providers this agent can issue credentials for

          • Optionaldescription?: string

            Description of the agent's brand protocol capabilities

            5000

        • Optionalcreative?: {
              supports_compliance?: boolean;
              has_creative_library?: boolean;
              supports_generation?: boolean;
              supports_transformation?: boolean;
              supports_transformers?: boolean;
              supports_refinement?: boolean;
              supports_spend_controls?: boolean;
              supports_evaluator?: boolean;
              refinable_retention_seconds?: number;
              multiplicity?: {
                  supports_catalog_fanout?: boolean;
                  max_creatives_limit?: number;
                  supports_signal_fanout?: boolean;
                  max_signal_conditions_limit?: number;
                  supports_variants?: boolean;
                  max_variants_limit?: number;
                  variant_dimensions?: (
                      "custom"
                      | "voice"
                      | "theme"
                      | "best_of_n"
                      | "transformer_config"
                  )[];
                  selection_strategies?: CreativeSelectionStrategy[];
              };
              supported_formats?: {
                  capability_id?: string;
                  format: | {
                      format_option_id?: string;
                      publisher_domain?: string;
                      display_name?: string;
                      sample_render_url?: string;
                      applies_to_channels?: MediaChannel[];
                      seller_preference?: "accepted"
                      | "preferred"
                      | "discouraged";
                      locale_policy?: { accepted_language_ranges: (...)[] };
                      canonical_formats_only?: boolean;
                      experimental?: boolean;
                      format_shape?: string;
                      v1_format_ref?: {
                          agent_url: ...;
                          id: ...;
                          width?: ...;
                          height?: ...;
                          duration_ms?: ...;
                          pixel_ratio?: ...;
                      }[];
                      format_schema?: { uri: string; digest: string };
                      format_kind: "image";
                      params:
                          | {
                              experimental?: (...)
                              | (...)
                              | (...);
                              deprecated?: (...) | (...) | (...);
                              v1_translatable?: (...) | (...) | (...);
                              since_version?: (...) | (...);
                              migration_target_version?: (...) | (...);
                              composition_model?: (...) | (...) | (...);
                              provenance_required?: (...) | (...) | (...);
                              platform_extensions?: (...) | (...);
                              synthesis_nondeterministic?: (...) | (...) | (...);
                              slots?: (...) | (...);
                              required_connections?: (...) | (...);
                              reference_mutability?: (...) | (...) | (...) | (...);
                              production_window_business_days?: (...) | (...);
                              sizes?: (...) | (...);
                              pixel_ratios?: (...) | (...);
                              min_width?: (...) | (...);
                              max_width?: (...) | (...);
                              min_height?: (...) | (...);
                              max_height?: (...) | (...);
                              aspect_ratio?: (...) | (...);
                              max_file_size_kb?: (...) | (...);
                              image_formats?: (...) | (...);
                              ssl_required?: (...) | (...) | (...);
                              headline_max_chars?: (...) | (...);
                              body_text_max_chars?: (...) | (...);
                              cta_values?: (...) | (...);
                              asset_source?: (...) | (...) | (...) | (...) | (...) | (...) | (...);
                              buyer_asset_acceptance?: (...) | (...) | (...);
                              width: number;
                              height: number;
                          }
                          | {
                              experimental?: (...)
                              | (...)
                              | (...);
                              deprecated?: (...) | (...) | (...);
                              v1_translatable?: (...) | (...) | (...);
                              since_version?: (...) | (...);
                              migration_target_version?: (...) | (...);
                              composition_model?: (...) | (...) | (...);
                              provenance_required?: (...) | (...) | (...);
                              platform_extensions?: (...) | (...);
                              synthesis_nondeterministic?: (...) | (...) | (...);
                              slots?: (...) | (...);
                              required_connections?: (...) | (...);
                              reference_mutability?: (...) | (...) | (...) | (...);
                              production_window_business_days?: (...) | (...);
                              width?: (...) | (...);
                              height?: (...) | (...);
                              pixel_ratios?: (...) | (...);
                              min_width?: (...) | (...);
                              max_width?: (...) | (...);
                              min_height?: (...) | (...);
                              max_height?: (...) | (...);
                              aspect_ratio?: (...) | (...);
                              max_file_size_kb?: (...) | (...);
                              image_formats?: (...) | (...);
                              ssl_required?: (...) | (...) | (...);
                              headline_max_chars?: (...) | (...);
                              body_text_max_chars?: (...) | (...);
                              cta_values?: (...) | (...);
                              asset_source?: (...) | (...) | (...) | (...) | (...) | (...) | (...);
                              buyer_asset_acceptance?: (...) | (...) | (...);
                              sizes: (...)[];
                          }
                          | {
                              experimental?: (...)
                              | (...)
                              | (...);
                              deprecated?: (...) | (...) | (...);
                              v1_translatable?: (...) | (...) | (...);
                              since_version?: (...) | (...);
                              migration_target_version?: (...) | (...);
                              composition_model?: (...) | (...) | (...);
                              provenance_required?: (...) | (...) | (...);
                              platform_extensions?: (...) | (...);
                              synthesis_nondeterministic?: (...) | (...) | (...);
                              slots?: (...) | (...);
                              required_connections?: (...) | (...);
                              reference_mutability?: (...) | (...) | (...) | (...);
                              production_window_business_days?: (...) | (...);
                              width?: (...) | (...);
                              height?: (...) | (...);
                              sizes?: (...) | (...);
                              pixel_ratios?: (...) | (...);
                              aspect_ratio?: (...) | (...);
                              max_file_size_kb?: (...) | (...);
                              image_formats?: (...) | (...);
                              ssl_required?: (...) | (...) | (...);
                              headline_max_chars?: (...) | (...);
                              body_text_max_chars?: (...) | (...);
                              cta_values?: (...) | (...);
                              asset_source?: (...) | (...) | (...) | (...) | (...) | (...) | (...);
                              buyer_asset_acceptance?: (...) | (...) | (...);
                              min_width?: (...) | (...);
                              max_width?: (...) | (...);
                              min_height?: (...) | (...);
                              max_height?: (...) | (...);
                          }
                          | {
                              experimental?: (...)
                              | (...)
                              | (...);
                              deprecated?: (...) | (...) | (...);
                              v1_translatable?: (...) | (...) | (...);
                              since_version?: (...) | (...);
                              migration_target_version?: (...) | (...);
                              composition_model?: (...) | (...) | (...);
                              provenance_required?: (...) | (...) | (...);
                              platform_extensions?: (...) | (...);
                              synthesis_nondeterministic?: (...) | (...) | (...);
                              slots?: (...) | (...);
                              required_connections?: (...) | (...);
                              reference_mutability?: (...) | (...) | (...) | (...);
                              production_window_business_days?: (...) | (...);
                              width?: (...) | (...);
                              height?: (...) | (...);
                              sizes?: (...) | (...);
                              pixel_ratios?: (...) | (...);
                              min_width?: (...) | (...);
                              max_width?: (...) | (...);
                              min_height?: (...) | (...);
                              max_height?: (...) | (...);
                              aspect_ratio?: (...) | (...);
                              max_file_size_kb?: (...) | (...);
                              image_formats?: (...) | (...);
                              ssl_required?: (...) | (...) | (...);
                              headline_max_chars?: (...) | (...);
                              body_text_max_chars?: (...) | (...);
                              cta_values?: (...) | (...);
                              asset_source?: (...) | (...) | (...) | (...) | (...) | (...) | (...);
                              buyer_asset_acceptance?: (...) | (...) | (...);
                          };
                  }
                  | {
                      format_option_id?: string;
                      publisher_domain?: string;
                      display_name?: string;
                      sample_render_url?: string;
                      applies_to_channels?: MediaChannel[];
                      seller_preference?: "accepted"
                      | "preferred"
                      | "discouraged";
                      locale_policy?: { accepted_language_ranges: (...)[] };
                      canonical_formats_only?: boolean;
                      experimental?: boolean;
                      format_shape?: string;
                      v1_format_ref?: {
                          agent_url: ...;
                          id: ...;
                          width?: ...;
                          height?: ...;
                          duration_ms?: ...;
                          pixel_ratio?: ...;
                      }[];
                      format_schema?: { uri: string; digest: string };
                      format_kind: "html5";
                      params:
                          | {
                              width: number;
                              height: number;
                              experimental?: (...)
                              | (...)
                              | (...);
                              deprecated?: (...) | (...) | (...);
                              v1_translatable?: (...) | (...) | (...);
                              since_version?: (...) | (...);
                              migration_target_version?: (...) | (...);
                              composition_model?: (...) | (...) | (...);
                              provenance_required?: (...) | (...) | (...);
                              platform_extensions?: (...) | (...);
                              synthesis_nondeterministic?: (...) | (...) | (...);
                              slots?: (...) | (...);
                              required_connections?: (...) | (...);
                              reference_mutability?: (...) | (...) | (...) | (...);
                              production_window_business_days?: (...) | (...);
                              sizes?: (...) | (...);
                              min_width?: (...) | (...);
                              max_width?: (...) | (...);
                              min_height?: (...) | (...);
                              max_height?: (...) | (...);
                              max_initial_load_kb?: (...) | (...);
                              max_polite_load_kb?: (...) | (...);
                              host_initiated_subload?: (...) | (...) | (...);
                              max_animation_duration_ms?: (...) | (...);
                              max_cpu_load_percent?: (...) | (...);
                              mraid_required?: (...) | (...) | (...);
                              mraid_version?: (...) | (...) | (...);
                              om_sdk_required?: (...) | (...) | (...);
                              clicktag_macro?: (...) | (...) | (...);
                              backup_image_required?: (...) | (...) | (...);
                              backup_image_max_size_kb?: (...) | (...);
                              ssl_required?: (...) | (...) | (...);
                          }
                          | {
                              sizes: (...)[];
                              experimental?: (...) | (...) | (...);
                              deprecated?: (...) | (...) | (...);
                              v1_translatable?: (...) | (...) | (...);
                              since_version?: (...) | (...);
                              migration_target_version?: (...) | (...);
                              composition_model?: (...) | (...) | (...);
                              provenance_required?: (...) | (...) | (...);
                              platform_extensions?: (...) | (...);
                              synthesis_nondeterministic?: (...) | (...) | (...);
                              slots?: (...) | (...);
                              required_connections?: (...) | (...);
                              reference_mutability?: (...) | (...) | (...) | (...);
                              production_window_business_days?: (...) | (...);
                              width?: (...) | (...);
                              height?: (...) | (...);
                              min_width?: (...) | (...);
                              max_width?: (...) | (...);
                              min_height?: (...) | (...);
                              max_height?: (...) | (...);
                              max_initial_load_kb?: (...) | (...);
                              max_polite_load_kb?: (...) | (...);
                              host_initiated_subload?: (...) | (...) | (...);
                              max_animation_duration_ms?: (...) | (...);
                              max_cpu_load_percent?: (...) | (...);
                              mraid_required?: (...) | (...) | (...);
                              mraid_version?: (...) | (...) | (...);
                              om_sdk_required?: (...) | (...) | (...);
                              clicktag_macro?: (...) | (...) | (...);
                              backup_image_required?: (...) | (...) | (...);
                              backup_image_max_size_kb?: (...) | (...);
                              ssl_required?: (...) | (...) | (...);
                          }
                          | {
                              min_width?: (...)
                              | (...);
                              max_width?: (...) | (...);
                              min_height?: (...) | (...);
                              max_height?: (...) | (...);
                              experimental?: (...) | (...) | (...);
                              deprecated?: (...) | (...) | (...);
                              v1_translatable?: (...) | (...) | (...);
                              since_version?: (...) | (...);
                              migration_target_version?: (...) | (...);
                              composition_model?: (...) | (...) | (...);
                              provenance_required?: (...) | (...) | (...);
                              platform_extensions?: (...) | (...);
                              synthesis_nondeterministic?: (...) | (...) | (...);
                              slots?: (...) | (...);
                              required_connections?: (...) | (...);
                              reference_mutability?: (...) | (...) | (...) | (...);
                              production_window_business_days?: (...) | (...);
                              width?: (...) | (...);
                              height?: (...) | (...);
                              sizes?: (...) | (...);
                              max_initial_load_kb?: (...) | (...);
                              max_polite_load_kb?: (...) | (...);
                              host_initiated_subload?: (...) | (...) | (...);
                              max_animation_duration_ms?: (...) | (...);
                              max_cpu_load_percent?: (...) | (...);
                              mraid_required?: (...) | (...) | (...);
                              mraid_version?: (...) | (...) | (...);
                              om_sdk_required?: (...) | (...) | (...);
                              clicktag_macro?: (...) | (...) | (...);
                              backup_image_required?: (...) | (...) | (...);
                              backup_image_max_size_kb?: (...) | (...);
                              ssl_required?: (...) | (...) | (...);
                          }
                          | {
                              experimental?: (...)
                              | (...)
                              | (...);
                              deprecated?: (...) | (...) | (...);
                              v1_translatable?: (...) | (...) | (...);
                              since_version?: (...) | (...);
                              migration_target_version?: (...) | (...);
                              composition_model?: (...) | (...) | (...);
                              provenance_required?: (...) | (...) | (...);
                              platform_extensions?: (...) | (...);
                              synthesis_nondeterministic?: (...) | (...) | (...);
                              slots?: (...) | (...);
                              required_connections?: (...) | (...);
                              reference_mutability?: (...) | (...) | (...) | (...);
                              production_window_business_days?: (...) | (...);
                              width?: (...) | (...);
                              height?: (...) | (...);
                              sizes?: (...) | (...);
                              min_width?: (...) | (...);
                              max_width?: (...) | (...);
                              min_height?: (...) | (...);
                              max_height?: (...) | (...);
                              max_initial_load_kb?: (...) | (...);
                              max_polite_load_kb?: (...) | (...);
                              host_initiated_subload?: (...) | (...) | (...);
                              max_animation_duration_ms?: (...) | (...);
                              max_cpu_load_percent?: (...) | (...);
                              mraid_required?: (...) | (...) | (...);
                              mraid_version?: (...) | (...) | (...);
                              om_sdk_required?: (...) | (...) | (...);
                              clicktag_macro?: (...) | (...) | (...);
                              backup_image_required?: (...) | (...) | (...);
                              backup_image_max_size_kb?: (...) | (...);
                              ssl_required?: (...) | (...) | (...);
                          };
                  }
                  | {
                      format_option_id?: string;
                      publisher_domain?: string;
                      display_name?: string;
                      sample_render_url?: string;
                      applies_to_channels?: MediaChannel[];
                      seller_preference?: "accepted"
                      | "preferred"
                      | "discouraged";
                      locale_policy?: { accepted_language_ranges: (...)[] };
                      canonical_formats_only?: boolean;
                      experimental?: boolean;
                      format_shape?: string;
                      v1_format_ref?: {
                          agent_url: ...;
                          id: ...;
                          width?: ...;
                          height?: ...;
                          duration_ms?: ...;
                          pixel_ratio?: ...;
                      }[];
                      format_schema?: { uri: string; digest: string };
                      format_kind: "display_tag";
                      params:
                          | {
                              width: number;
                              height: number;
                              experimental?: (...)
                              | (...)
                              | (...);
                              deprecated?: (...) | (...) | (...);
                              v1_translatable?: (...) | (...) | (...);
                              since_version?: (...) | (...);
                              migration_target_version?: (...) | (...);
                              composition_model?: (...) | (...) | (...);
                              provenance_required?: (...) | (...) | (...);
                              platform_extensions?: (...) | (...);
                              synthesis_nondeterministic?: (...) | (...) | (...);
                              slots?: (...) | (...);
                              required_connections?: (...) | (...);
                              reference_mutability?: (...) | (...) | (...) | (...);
                              production_window_business_days?: (...) | (...);
                              sizes?: (...) | (...);
                              min_width?: (...) | (...);
                              max_width?: (...) | (...);
                              min_height?: (...) | (...);
                              max_height?: (...) | (...);
                              supported_tag_types?: (...) | (...);
                              ssl_required?: (...) | (...) | (...);
                              max_redirect_depth?: (...) | (...);
                              max_response_time_ms?: (...) | (...);
                              backup_image_required?: (...) | (...) | (...);
                              backup_image_max_size_kb?: (...) | (...);
                              om_sdk_required?: (...) | (...) | (...);
                          }
                          | {
                              sizes: (...)[];
                              experimental?: (...) | (...) | (...);
                              deprecated?: (...) | (...) | (...);
                              v1_translatable?: (...) | (...) | (...);
                              since_version?: (...) | (...);
                              migration_target_version?: (...) | (...);
                              composition_model?: (...) | (...) | (...);
                              provenance_required?: (...) | (...) | (...);
                              platform_extensions?: (...) | (...);
                              synthesis_nondeterministic?: (...) | (...) | (...);
                              slots?: (...) | (...);
                              required_connections?: (...) | (...);
                              reference_mutability?: (...) | (...) | (...) | (...);
                              production_window_business_days?: (...) | (...);
                              width?: (...) | (...);
                              height?: (...) | (...);
                              min_width?: (...) | (...);
                              max_width?: (...) | (...);
                              min_height?: (...) | (...);
                              max_height?: (...) | (...);
                              supported_tag_types?: (...) | (...);
                              ssl_required?: (...) | (...) | (...);
                              max_redirect_depth?: (...) | (...);
                              max_response_time_ms?: (...) | (...);
                              backup_image_required?: (...) | (...) | (...);
                              backup_image_max_size_kb?: (...) | (...);
                              om_sdk_required?: (...) | (...) | (...);
                          }
                          | {
                              min_width?: (...)
                              | (...);
                              max_width?: (...) | (...);
                              min_height?: (...) | (...);
                              max_height?: (...) | (...);
                              experimental?: (...) | (...) | (...);
                              deprecated?: (...) | (...) | (...);
                              v1_translatable?: (...) | (...) | (...);
                              since_version?: (...) | (...);
                              migration_target_version?: (...) | (...);
                              composition_model?: (...) | (...) | (...);
                              provenance_required?: (...) | (...) | (...);
                              platform_extensions?: (...) | (...);
                              synthesis_nondeterministic?: (...) | (...) | (...);
                              slots?: (...) | (...);
                              required_connections?: (...) | (...);
                              reference_mutability?: (...) | (...) | (...) | (...);
                              production_window_business_days?: (...) | (...);
                              width?: (...) | (...);
                              height?: (...) | (...);
                              sizes?: (...) | (...);
                              supported_tag_types?: (...) | (...);
                              ssl_required?: (...) | (...) | (...);
                              max_redirect_depth?: (...) | (...);
                              max_response_time_ms?: (...) | (...);
                              backup_image_required?: (...) | (...) | (...);
                              backup_image_max_size_kb?: (...) | (...);
                              om_sdk_required?: (...) | (...) | (...);
                          }
                          | {
                              experimental?: (...)
                              | (...)
                              | (...);
                              deprecated?: (...) | (...) | (...);
                              v1_translatable?: (...) | (...) | (...);
                              since_version?: (...) | (...);
                              migration_target_version?: (...) | (...);
                              composition_model?: (...) | (...) | (...);
                              provenance_required?: (...) | (...) | (...);
                              platform_extensions?: (...) | (...);
                              synthesis_nondeterministic?: (...) | (...) | (...);
                              slots?: (...) | (...);
                              required_connections?: (...) | (...);
                              reference_mutability?: (...) | (...) | (...) | (...);
                              production_window_business_days?: (...) | (...);
                              width?: (...) | (...);
                              height?: (...) | (...);
                              sizes?: (...) | (...);
                              min_width?: (...) | (...);
                              max_width?: (...) | (...);
                              min_height?: (...) | (...);
                              max_height?: (...) | (...);
                              supported_tag_types?: (...) | (...);
                              ssl_required?: (...) | (...) | (...);
                              max_redirect_depth?: (...) | (...);
                              max_response_time_ms?: (...) | (...);
                              backup_image_required?: (...) | (...) | (...);
                              backup_image_max_size_kb?: (...) | (...);
                              om_sdk_required?: (...) | (...) | (...);
                          };
                  }
                  | {
                      format_option_id?: string;
                      publisher_domain?: string;
                      display_name?: string;
                      sample_render_url?: string;
                      applies_to_channels?: MediaChannel[];
                      seller_preference?: "accepted"
                      | "preferred"
                      | "discouraged";
                      locale_policy?: { accepted_language_ranges: (...)[] };
                      canonical_formats_only?: boolean;
                      experimental?: boolean;
                      format_shape?: string;
                      v1_format_ref?: {
                          agent_url: ...;
                          id: ...;
                          width?: ...;
                          height?: ...;
                          duration_ms?: ...;
                          pixel_ratio?: ...;
                      }[];
                      format_schema?: { uri: string; digest: string };
                      format_kind: "image_carousel";
                      params: {
                          experimental?: boolean;
                          deprecated?: boolean;
                          v1_translatable?: boolean;
                          since_version?: string;
                          migration_target_version?: string;
                          composition_model?: "deterministic" | "algorithmic";
                          provenance_required?: boolean;
                          platform_extensions?: (...)[];
                          synthesis_nondeterministic?: boolean;
                          slots?: (...)[];
                          required_connections?: (...)[];
                          reference_mutability?:
                              | "immutable_snapshot"
                              | "mutable_requires_reapproval"
                              | "mutable_auto_recheck";
                          production_window_business_days?: number;
                          card_aspect_ratio?: string;
                          min_cards?: number;
                          max_cards?: number;
                          allowed_card_media_asset_types?: (...)[];
                          allowed_card_asset_types?: (...)[];
                          card_image_max_file_size_kb?: number;
                          card_video_max_file_size_kb?: number;
                          card_video_max_duration_ms?: number;
                          primary_text_max_chars?: number;
                          card_headline_max_chars?: number;
                          card_description_max_chars?: number;
                          ssl_required?: boolean;
                      };
                  }
                  | {
                      format_option_id?: string;
                      publisher_domain?: string;
                      display_name?: string;
                      sample_render_url?: string;
                      applies_to_channels?: MediaChannel[];
                      seller_preference?: "accepted"
                      | "preferred"
                      | "discouraged";
                      locale_policy?: { accepted_language_ranges: (...)[] };
                      canonical_formats_only?: boolean;
                      experimental?: boolean;
                      format_shape?: string;
                      v1_format_ref?: {
                          agent_url: ...;
                          id: ...;
                          width?: ...;
                          height?: ...;
                          duration_ms?: ...;
                          pixel_ratio?: ...;
                      }[];
                      format_schema?: { uri: string; digest: string };
                      format_kind: "video_hosted";
                      params: {
                          experimental?: boolean;
                          deprecated?: boolean;
                          v1_translatable?: boolean;
                          since_version?: string;
                          migration_target_version?: string;
                          composition_model?: "deterministic" | "algorithmic";
                          provenance_required?: boolean;
                          platform_extensions?: (...)[];
                          synthesis_nondeterministic?: boolean;
                          slots?: (...)[];
                          required_connections?: (...)[];
                          reference_mutability?:
                              | "immutable_snapshot"
                              | "mutable_requires_reapproval"
                              | "mutable_auto_recheck";
                          production_window_business_days?: number;
                          orientation?: "vertical"
                          | "horizontal"
                          | "square";
                          aspect_ratio?: string;
                          min_width?: number;
                          min_height?: number;
                          max_width?: number;
                          max_height?: number;
                          duration_ms_range?: (...)[];
                          duration_ms_exact?: number;
                          video_codecs?: (...)[];
                          audio_codecs?: (...)[];
                          containers?: (...)[];
                          min_bitrate_kbps?: number;
                          max_bitrate_kbps?: number;
                          max_file_size_mb?: number;
                          frame_rates?: (...)[];
                          captions?: "required" | "not_required" | "recommended";
                          om_sdk_required?: boolean;
                          headline_max_chars?: number;
                          primary_text_max_chars?: number;
                          brand_name_max_chars?: number;
                          cta_values?: (...)[];
                          companion_banner_widths?: (...)[];
                          companion_banner_heights?: (...)[];
                          asset_source?:
                              | "buyer_uploaded"
                              | "publisher_host_recorded"
                              | "seller_pre_rendered_from_brief"
                              | "seller_human_designed"
                              | "agent_synthesized"
                              | "publisher_owned_reference";
                          buyer_asset_acceptance?: "rejected"
                          | "accepted";
                      };
                  }
                  | {
                      format_option_id?: string;
                      publisher_domain?: string;
                      display_name?: string;
                      sample_render_url?: string;
                      applies_to_channels?: MediaChannel[];
                      seller_preference?: "accepted"
                      | "preferred"
                      | "discouraged";
                      locale_policy?: { accepted_language_ranges: (...)[] };
                      canonical_formats_only?: boolean;
                      experimental?: boolean;
                      format_shape?: string;
                      v1_format_ref?: {
                          agent_url: ...;
                          id: ...;
                          width?: ...;
                          height?: ...;
                          duration_ms?: ...;
                          pixel_ratio?: ...;
                      }[];
                      format_schema?: { uri: string; digest: string };
                      format_kind: "video_vast";
                      params: {
                          experimental?: boolean;
                          deprecated?: boolean;
                          v1_translatable?: boolean;
                          since_version?: string;
                          migration_target_version?: string;
                          composition_model?: "deterministic" | "algorithmic";
                          provenance_required?: boolean;
                          platform_extensions?: (...)[];
                          synthesis_nondeterministic?: boolean;
                          slots?: (...)[];
                          required_connections?: (...)[];
                          reference_mutability?:
                              | "immutable_snapshot"
                              | "mutable_requires_reapproval"
                              | "mutable_auto_recheck";
                          production_window_business_days?: number;
                          orientation?: "vertical"
                          | "horizontal"
                          | "square";
                          aspect_ratio?: string;
                          vast_version?: VASTVersion;
                          vpaid_enabled?: boolean;
                          vpaid_version?: "1.0" | "2.0";
                          simid_supported?: boolean;
                          duration_ms_range?: (...)[];
                          duration_ms_exact?: number;
                          min_width?: number;
                          max_width?: number;
                          min_height?: number;
                          max_height?: number;
                          linear_required?: boolean;
                          skippable_after_ms?: number;
                          max_wrapper_depth?: number;
                          ssl_required?: boolean;
                      };
                  }
                  | {
                      format_option_id?: string;
                      publisher_domain?: string;
                      display_name?: string;
                      sample_render_url?: string;
                      applies_to_channels?: MediaChannel[];
                      seller_preference?: "accepted"
                      | "preferred"
                      | "discouraged";
                      locale_policy?: { accepted_language_ranges: (...)[] };
                      canonical_formats_only?: boolean;
                      experimental?: boolean;
                      format_shape?: string;
                      v1_format_ref?: {
                          agent_url: ...;
                          id: ...;
                          width?: ...;
                          height?: ...;
                          duration_ms?: ...;
                          pixel_ratio?: ...;
                      }[];
                      format_schema?: { uri: string; digest: string };
                      format_kind: "audio_hosted";
                      params: {
                          experimental?: boolean;
                          deprecated?: boolean;
                          v1_translatable?: boolean;
                          since_version?: string;
                          migration_target_version?: string;
                          composition_model?: "deterministic" | "algorithmic";
                          provenance_required?: boolean;
                          platform_extensions?: (...)[];
                          synthesis_nondeterministic?: boolean;
                          slots?: (...)[];
                          required_connections?: (...)[];
                          reference_mutability?:
                              | "immutable_snapshot"
                              | "mutable_requires_reapproval"
                              | "mutable_auto_recheck";
                          production_window_business_days?: number;
                          duration_ms_range?: (...)[];
                          duration_ms_exact?: number;
                          audio_codecs?: (...)[];
                          audio_sample_rates?: (...)[];
                          audio_channels?: (...)[];
                          min_bitrate_kbps?: number;
                          max_bitrate_kbps?: number;
                          max_file_size_mb?: number;
                          loudness_lufs?: number;
                          loudness_tolerance_db?: number;
                          true_peak_dbfs?: number;
                          asset_source?:
                              | "buyer_uploaded"
                              | "publisher_host_recorded"
                              | "seller_pre_rendered_from_brief"
                              | "seller_human_designed"
                              | "agent_synthesized"
                              | "publisher_owned_reference";
                          buyer_asset_acceptance?: "rejected"
                          | "accepted";
                          companion_image_required?: boolean;
                          companion_image_aspect_ratio?: string;
                          companion_image_max_file_size_kb?: number;
                          brand_name_max_chars?: number;
                      };
                  }
                  | {
                      format_option_id?: string;
                      publisher_domain?: string;
                      display_name?: string;
                      sample_render_url?: string;
                      applies_to_channels?: MediaChannel[];
                      seller_preference?: "accepted"
                      | "preferred"
                      | "discouraged";
                      locale_policy?: { accepted_language_ranges: (...)[] };
                      canonical_formats_only?: boolean;
                      experimental?: boolean;
                      format_shape?: string;
                      v1_format_ref?: {
                          agent_url: ...;
                          id: ...;
                          width?: ...;
                          height?: ...;
                          duration_ms?: ...;
                          pixel_ratio?: ...;
                      }[];
                      format_schema?: { uri: string; digest: string };
                      format_kind: "audio_daast";
                      params: {
                          experimental?: boolean;
                          deprecated?: boolean;
                          v1_translatable?: boolean;
                          since_version?: string;
                          migration_target_version?: string;
                          composition_model?: "deterministic" | "algorithmic";
                          provenance_required?: boolean;
                          platform_extensions?: (...)[];
                          synthesis_nondeterministic?: boolean;
                          slots?: (...)[];
                          required_connections?: (...)[];
                          reference_mutability?:
                              | "immutable_snapshot"
                              | "mutable_requires_reapproval"
                              | "mutable_auto_recheck";
                          production_window_business_days?: number;
                          daast_version?: "1.0"
                          | "1.1";
                          duration_ms_range?: (...)[];
                          duration_ms_exact?: number;
                          linear_required?: boolean;
                          max_wrapper_depth?: number;
                          ssl_required?: boolean;
                          companion_image_required?: boolean;
                      };
                  }
                  | {
                      format_option_id?: string;
                      publisher_domain?: string;
                      display_name?: string;
                      sample_render_url?: string;
                      applies_to_channels?: MediaChannel[];
                      seller_preference?: "accepted"
                      | "preferred"
                      | "discouraged";
                      locale_policy?: { accepted_language_ranges: (...)[] };
                      canonical_formats_only?: boolean;
                      experimental?: boolean;
                      format_shape?: string;
                      v1_format_ref?: {
                          agent_url: ...;
                          id: ...;
                          width?: ...;
                          height?: ...;
                          duration_ms?: ...;
                          pixel_ratio?: ...;
                      }[];
                      format_schema?: { uri: string; digest: string };
                      format_kind: "sponsored_placement";
                      params: {
                          experimental?: boolean;
                          deprecated?: boolean;
                          v1_translatable?: boolean;
                          since_version?: string;
                          migration_target_version?: string;
                          composition_model?: "deterministic" | "algorithmic";
                          provenance_required?: boolean;
                          platform_extensions?: (...)[];
                          synthesis_nondeterministic?: boolean;
                          slots?: (...)[];
                          required_connections?: (...)[];
                          reference_mutability?:
                              | "immutable_snapshot"
                              | "mutable_requires_reapproval"
                              | "mutable_auto_recheck";
                          production_window_business_days?: number;
                          supported_catalog_types?: (...)[];
                          min_items?: number;
                          max_items?: number;
                          fanout_mode?: "per_item" | "multi_item_in_creative" | "single_item";
                          required_catalog_fields?: (...)[];
                          supported_id_types?: (...)[];
                          hero_asset_supported?: boolean;
                          item_production_model?:
                              | "buyer_uploaded"
                              | "seller_pre_rendered_from_brief"
                              | "seller_human_designed"
                              | "agent_synthesized";
                      };
                  }
                  | {
                      format_option_id?: string;
                      publisher_domain?: string;
                      display_name?: string;
                      sample_render_url?: string;
                      applies_to_channels?: MediaChannel[];
                      seller_preference?: "accepted"
                      | "preferred"
                      | "discouraged";
                      locale_policy?: { accepted_language_ranges: (...)[] };
                      canonical_formats_only?: boolean;
                      experimental?: boolean;
                      format_shape?: string;
                      v1_format_ref?: {
                          agent_url: ...;
                          id: ...;
                          width?: ...;
                          height?: ...;
                          duration_ms?: ...;
                          pixel_ratio?: ...;
                      }[];
                      format_schema?: { uri: string; digest: string };
                      format_kind: "native_in_feed";
                      params: {
                          experimental?: boolean;
                          deprecated?: boolean;
                          v1_translatable?: boolean;
                          since_version?: string;
                          migration_target_version?: string;
                          composition_model?: "deterministic" | "algorithmic";
                          provenance_required?: boolean;
                          platform_extensions?: (...)[];
                          synthesis_nondeterministic?: boolean;
                          slots?: (...)[];
                          required_connections?: (...)[];
                          reference_mutability?:
                              | "immutable_snapshot"
                              | "mutable_requires_reapproval"
                              | "mutable_auto_recheck";
                          production_window_business_days?: number;
                          title_max_chars?: number;
                          body_text_max_chars?: number;
                          cta_max_chars?: number;
                          cta_values?: (...)[];
                          main_image_sizes?: (...)[];
                          icon_size?: { width: ...; height: ... };
                          max_image_file_size_kb?: number;
                          image_formats?: (...)[];
                          ssl_required?: boolean;
                          asset_source?:
                              | "buyer_uploaded"
                              | "seller_pre_rendered_from_brief"
                              | "seller_human_designed"
                              | "agent_synthesized"
                              | "publisher_owned_reference";
                          buyer_asset_acceptance?: "rejected"
                          | "accepted";
                      };
                  }
                  | {
                      format_option_id?: string;
                      publisher_domain?: string;
                      display_name?: string;
                      sample_render_url?: string;
                      applies_to_channels?: MediaChannel[];
                      seller_preference?: "accepted"
                      | "preferred"
                      | "discouraged";
                      locale_policy?: { accepted_language_ranges: (...)[] };
                      canonical_formats_only?: boolean;
                      experimental?: boolean;
                      format_shape?: string;
                      v1_format_ref?: {
                          agent_url: ...;
                          id: ...;
                          width?: ...;
                          height?: ...;
                          duration_ms?: ...;
                          pixel_ratio?: ...;
                      }[];
                      format_schema?: { uri: string; digest: string };
                      format_kind: "responsive_creative";
                      params: {
                          experimental?: boolean;
                          deprecated?: boolean;
                          v1_translatable?: boolean;
                          since_version?: string;
                          migration_target_version?: string;
                          composition_model?: "deterministic" | "algorithmic";
                          provenance_required?: boolean;
                          platform_extensions?: (...)[];
                          synthesis_nondeterministic?: boolean;
                          slots?: (...)[];
                          required_connections?: (...)[];
                          reference_mutability?:
                              | "immutable_snapshot"
                              | "mutable_requires_reapproval"
                              | "mutable_auto_recheck";
                          production_window_business_days?: number;
                          headlines_min?: number;
                          headlines_max?: number;
                          headline_max_chars?: number;
                          long_headlines_min?: number;
                          long_headlines_max?: number;
                          long_headline_max_chars?: number;
                          descriptions_min?: number;
                          descriptions_max?: number;
                          description_max_chars?: number;
                          images_landscape_min?: number;
                          images_landscape_max?: number;
                          images_landscape_aspect_ratio?: string;
                          images_square_min?: number;
                          images_square_max?: number;
                          images_vertical_min?: number;
                          images_vertical_max?: number;
                          videos_min?: number;
                          videos_max?: number;
                          video_min_duration_ms?: number;
                          video_max_duration_ms?: number;
                          logo_min?: number;
                          logo_max?: number;
                          logo_aspect_ratios?: (...)[];
                          business_name_max_chars?: number;
                          asset_image_max_file_size_kb?: number;
                          supports_catalog_input?: boolean;
                      };
                  }
                  | {
                      format_option_id?: string;
                      publisher_domain?: string;
                      display_name?: string;
                      sample_render_url?: string;
                      applies_to_channels?: MediaChannel[];
                      seller_preference?: "accepted"
                      | "preferred"
                      | "discouraged";
                      locale_policy?: { accepted_language_ranges: (...)[] };
                      canonical_formats_only?: boolean;
                      experimental?: boolean;
                      format_shape?: string;
                      v1_format_ref?: {
                          agent_url: ...;
                          id: ...;
                          width?: ...;
                          height?: ...;
                          duration_ms?: ...;
                          pixel_ratio?: ...;
                      }[];
                      format_schema?: { uri: string; digest: string };
                      format_kind: "agent_placement";
                      params: {
                          experimental?: boolean;
                          deprecated?: boolean;
                          v1_translatable?: boolean;
                          since_version?: string;
                          migration_target_version?: string;
                          composition_model?: "deterministic" | "algorithmic";
                          provenance_required?: boolean;
                          platform_extensions?: (...)[];
                          synthesis_nondeterministic?: boolean;
                          slots?: (...)[];
                          required_connections?: (...)[];
                          reference_mutability?:
                              | "immutable_snapshot"
                              | "mutable_requires_reapproval"
                              | "mutable_auto_recheck";
                          production_window_business_days?: number;
                          output_modality?: "audio"
                          | "text"
                          | "card";
                          max_mention_length_chars?: number;
                          max_mention_duration_ms?: number;
                          supports_offering_reference?: boolean;
                          supports_landing_page_url?: boolean;
                          tone_constraints?: (...)[];
                          disclosure_required?: boolean;
                      };
                  }
                  | {
                      format_option_id?: string;
                      publisher_domain?: string;
                      display_name?: string;
                      sample_render_url?: string;
                      applies_to_channels?: MediaChannel[];
                      seller_preference?: "accepted"
                      | "preferred"
                      | "discouraged";
                      locale_policy?: { accepted_language_ranges: (...)[] };
                      canonical_formats_only?: boolean;
                      experimental?: boolean;
                      format_shape?: string;
                      v1_format_ref?: {
                          agent_url: ...;
                          id: ...;
                          width?: ...;
                          height?: ...;
                          duration_ms?: ...;
                          pixel_ratio?: ...;
                      }[];
                      format_schema?: { uri: string; digest: string };
                      format_kind: "custom";
                      params: Omit<Omit<(...), (...)>, "authentication"> & {
                          authentication?: unknown;
                      };
                  };
                  operations?: ("preview" | "build" | "validate")[];
              }[];
              preview?: {
                  routes: {
                      capability_id: string;
                      rendering_origin: "platform_native"
                      | "agent_approximation";
                  }[];
              };
              localization?: {
                  max_target_variants?: number;
                  locale_matching: "rfc4647_lookup";
              };
              bills_through_adcp?: boolean;
              canonical_catalog_version?: string;
          }

          Creative protocol capabilities. Only present if creative is in supported_protocols.

          • Optionalsupports_compliance?: boolean

            When true, this creative agent can process briefs with compliance requirements (required_disclosures, prohibited_claims) and will validate that disclosures can be satisfied by the target format.

          • Optionalhas_creative_library?: boolean

            When true, this agent hosts a creative library and supports list_creatives and creative_id references in build_creative. Creative agents with a library should also implement the accounts protocol (sync_accounts / list_accounts) so buyers can establish access.

          • Optionalsupports_generation?: boolean

            When true, this agent can generate creatives from natural language briefs via build_creative. The buyer provides a message with creative direction, and the agent produces a manifest with generated assets. When false, build_creative only supports transformation or library retrieval.

          • Optionalsupports_transformation?: boolean

            When true, this agent can transform or resize existing canonical manifests via build_creative. The buyer supplies a creative_manifest and an advertised target_capability_id.

          • Optionalsupports_transformers?: boolean

            When true, this agent exposes account-scoped creative transformers via list_transformers (the creative analog of media-buy products) and accepts transformer_id + config on build_creative. Buyers SHOULD call list_transformers to discover available transformers, their typed config params (and account-scoped enumerable option values via expand_params), and pricing. When false or absent, the agent does not offer the transformer surface.

          • Optionalsupports_refinement?: boolean

            When true, this agent retains produced build_variant leaves for an agent-defined retention window and can re-build from one via build_creative's refine_from_build_variant_id — applying a natural-language instruction in message plus an optional config delta, returning new lineage-linked variants. A build-time agent capability independent of generation/transformation. When false or absent, refine_from_build_variant_id is rejected with UNSUPPORTED_FEATURE; buyers refine instead via the transform path (creative_manifest + message).

          • Optionalsupports_spend_controls?: boolean

            When true, build_creative honors a per-call max_spend ceiling (producing partial paid results and returning budget_status:"capped" + a BUDGET_CAP_REACHED advisory rather than overspending) AND supports mode:"estimate" dry-runs (a projected cost band, producing/billing nothing). When false or absent, max_spend / mode:estimate are rejected with UNSUPPORTED_FEATURE. Out-of-band billers (bills_through_adcp:false) have no AdCP cost truth to cap against, so this is meaningful only alongside bills_through_adcp:true.

          • Optionalsupports_evaluator?: boolean

            Experimental (x-status: experimental) — agents setting this true MUST also list creative.evaluator in experimental_features; the surface MAY change between 3.x releases with notice (see docs/reference/experimental-status). When true, build_creative accepts an advisory evaluator input (exemplars / account-arranged evaluator_id / agent_url, plus an optional feature_requirement[] gate, a rank_by ordering, and an allowlisted feature_agent pointer). Feature discovery uses this response's governance.creative_features catalog: rank_by, feature_requirement, and eval.features[] all share the same creative-feature vocabulary as get_creative_features. evaluator_id is not discovered from this catalog; it is a pre-provisioned account preset whose emitted feature_ids still come from it. The evaluator populates a per-leaf eval block of creative-feature values (creative-feature-result[], the same shape get_creative_features returns) on BuildCreativeVariantSuccess leaves, which is what the recommended/rank it sets on the best_of_n axis are computed over. The agent runs a gate-then-rank pipeline over its best_of_n exploration: it evaluates each leaf, DROPS leaves failing feature_requirement[] from its recommended survivors, then orders survivors by rank_by. The gate is internal pruning of which leaves the agent recommends/returns from its own exploration — it never blocks an already-produced billable leaf: what is produced and billed is governed by max_variants/max_creatives/max_spend, not the evaluator. When the evaluator names an external agent, it MUST appear in creative_policy.accepted_verifiers[] (off-list → EVALUATOR_AGENT_NOT_ACCEPTED), and the producing agent authenticates the outbound evaluator call on the transport. Evaluator credentials and caller-supplied trust material MUST NOT be passed in the build_creative payload; credential- or trust-material payload keys should be rejected with CREDENTIAL_IN_ARGS. When false or absent, the evaluator input is ignored and no eval block is emitted.

          • Optionalrefinable_retention_seconds?: number

            When supports_refinement is true, the GUARANTEED-MINIMUM window (a floor, not a ceiling) during which a produced build_variant_id remains refinable via refine_from_build_variant_id: a ref within this window from production SHOULD resolve; the agent MAY retain longer. Omit when the retention window is agent-defined and not advertised — buyers then treat refinability as best-effort and handle REFERENCE_NOT_FOUND.

            0

          • Optionalmultiplicity?: {
                supports_catalog_fanout?: boolean;
                max_creatives_limit?: number;
                supports_signal_fanout?: boolean;
                max_signal_conditions_limit?: number;
                supports_variants?: boolean;
                max_variants_limit?: number;
                variant_dimensions?: (
                    "custom"
                    | "voice"
                    | "theme"
                    | "best_of_n"
                    | "transformer_config"
                )[];
                selection_strategies?: CreativeSelectionStrategy[];
            }

            Pre-call discriminators for build_creative fan-out, so a buyer knows BEFORE sending max_creatives / max_variants whether this agent supports them and the ceilings. Over-limit requests are CLAMPED to these ceilings (the agent produces up to the limit and signals the shortfall via items_returned < items_total on BuildCreativeVariantSuccess), not rejected — consistent with item_limit's 'use the lesser' rule. Absent means no fan-out: build_creative produces a single creative and max_creatives/max_variants>1 are not supported.

            • Optionalsupports_catalog_fanout?: boolean

              When true, build_creative accepts max_creatives (one distinct creative per catalog item).

            • Optionalmax_creatives_limit?: number

              Ceiling on max_creatives. Omitted means no advertised ceiling.

              1

            • Optionalsupports_signal_fanout?: boolean

              Experimental (x-status: experimental) — agents setting this true MUST also list creative.signal_fanout in experimental_features; the surface MAY change between 3.x releases with notice (see docs/reference/experimental-status). When true, build_creative accepts signal_conditions[] (one distinct creative group per signal condition, keep-all). Mirrors supports_catalog_fanout.

            • Optionalmax_signal_conditions_limit?: number

              Ceiling on len(signal_conditions). Over-limit requests are CLAMPED (not rejected), like max_creatives_limit. Omitted means no advertised ceiling.

              1

            • Optionalsupports_variants?: boolean

              When true, build_creative accepts max_variants > 1 / variant_axis (alternatives per creative).

            • Optionalmax_variants_limit?: number

              Ceiling on max_variants. Omitted means no advertised ceiling.

              1

            • Optionalvariant_dimensions?: ("custom" | "voice" | "theme" | "best_of_n" | "transformer_config")[]

              Which variant_axis.dimension values this agent supports.

            • Optionalselection_strategies?: CreativeSelectionStrategy[]

              Which selection_strategy values this agent supports when sampling max_creatives < items_total. Sibling to variant_dimensions. Part of the experimental signal-fanout surface (feature id creative.signal_fanout).

          • Optionalsupported_formats?: {
                capability_id?: string;
                format:
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "image";
                        params:
                            | {
                                experimental?: (...)
                                | (...)
                                | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                sizes?: (...) | (...);
                                pixel_ratios?: (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                aspect_ratio?: (...) | (...);
                                max_file_size_kb?: (...) | (...);
                                image_formats?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                                headline_max_chars?: (...) | (...);
                                body_text_max_chars?: (...) | (...);
                                cta_values?: (...) | (...);
                                asset_source?: (...) | (...) | (...) | (...) | (...) | (...) | (...);
                                buyer_asset_acceptance?: (...) | (...) | (...);
                                width: number;
                                height: number;
                            }
                            | {
                                experimental?: (...)
                                | (...)
                                | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                width?: (...) | (...);
                                height?: (...) | (...);
                                pixel_ratios?: (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                aspect_ratio?: (...) | (...);
                                max_file_size_kb?: (...) | (...);
                                image_formats?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                                headline_max_chars?: (...) | (...);
                                body_text_max_chars?: (...) | (...);
                                cta_values?: (...) | (...);
                                asset_source?: (...) | (...) | (...) | (...) | (...) | (...) | (...);
                                buyer_asset_acceptance?: (...) | (...) | (...);
                                sizes: (...)[];
                            }
                            | {
                                experimental?: (...)
                                | (...)
                                | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                width?: (...) | (...);
                                height?: (...) | (...);
                                sizes?: (...) | (...);
                                pixel_ratios?: (...) | (...);
                                aspect_ratio?: (...) | (...);
                                max_file_size_kb?: (...) | (...);
                                image_formats?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                                headline_max_chars?: (...) | (...);
                                body_text_max_chars?: (...) | (...);
                                cta_values?: (...) | (...);
                                asset_source?: (...) | (...) | (...) | (...) | (...) | (...) | (...);
                                buyer_asset_acceptance?: (...) | (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                            }
                            | {
                                experimental?: (...)
                                | (...)
                                | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                width?: (...) | (...);
                                height?: (...) | (...);
                                sizes?: (...) | (...);
                                pixel_ratios?: (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                aspect_ratio?: (...) | (...);
                                max_file_size_kb?: (...) | (...);
                                image_formats?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                                headline_max_chars?: (...) | (...);
                                body_text_max_chars?: (...) | (...);
                                cta_values?: (...) | (...);
                                asset_source?: (...) | (...) | (...) | (...) | (...) | (...) | (...);
                                buyer_asset_acceptance?: (...) | (...) | (...);
                            };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "html5";
                        params:
                            | {
                                width: number;
                                height: number;
                                experimental?: (...)
                                | (...)
                                | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                sizes?: (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                max_initial_load_kb?: (...) | (...);
                                max_polite_load_kb?: (...) | (...);
                                host_initiated_subload?: (...) | (...) | (...);
                                max_animation_duration_ms?: (...) | (...);
                                max_cpu_load_percent?: (...) | (...);
                                mraid_required?: (...) | (...) | (...);
                                mraid_version?: (...) | (...) | (...);
                                om_sdk_required?: (...) | (...) | (...);
                                clicktag_macro?: (...) | (...) | (...);
                                backup_image_required?: (...) | (...) | (...);
                                backup_image_max_size_kb?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                            }
                            | {
                                sizes: (...)[];
                                experimental?: (...) | (...) | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                width?: (...) | (...);
                                height?: (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                max_initial_load_kb?: (...) | (...);
                                max_polite_load_kb?: (...) | (...);
                                host_initiated_subload?: (...) | (...) | (...);
                                max_animation_duration_ms?: (...) | (...);
                                max_cpu_load_percent?: (...) | (...);
                                mraid_required?: (...) | (...) | (...);
                                mraid_version?: (...) | (...) | (...);
                                om_sdk_required?: (...) | (...) | (...);
                                clicktag_macro?: (...) | (...) | (...);
                                backup_image_required?: (...) | (...) | (...);
                                backup_image_max_size_kb?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                            }
                            | {
                                min_width?: (...)
                                | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                experimental?: (...) | (...) | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                width?: (...) | (...);
                                height?: (...) | (...);
                                sizes?: (...) | (...);
                                max_initial_load_kb?: (...) | (...);
                                max_polite_load_kb?: (...) | (...);
                                host_initiated_subload?: (...) | (...) | (...);
                                max_animation_duration_ms?: (...) | (...);
                                max_cpu_load_percent?: (...) | (...);
                                mraid_required?: (...) | (...) | (...);
                                mraid_version?: (...) | (...) | (...);
                                om_sdk_required?: (...) | (...) | (...);
                                clicktag_macro?: (...) | (...) | (...);
                                backup_image_required?: (...) | (...) | (...);
                                backup_image_max_size_kb?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                            }
                            | {
                                experimental?: (...)
                                | (...)
                                | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                width?: (...) | (...);
                                height?: (...) | (...);
                                sizes?: (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                max_initial_load_kb?: (...) | (...);
                                max_polite_load_kb?: (...) | (...);
                                host_initiated_subload?: (...) | (...) | (...);
                                max_animation_duration_ms?: (...) | (...);
                                max_cpu_load_percent?: (...) | (...);
                                mraid_required?: (...) | (...) | (...);
                                mraid_version?: (...) | (...) | (...);
                                om_sdk_required?: (...) | (...) | (...);
                                clicktag_macro?: (...) | (...) | (...);
                                backup_image_required?: (...) | (...) | (...);
                                backup_image_max_size_kb?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                            };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "display_tag";
                        params:
                            | {
                                width: number;
                                height: number;
                                experimental?: (...)
                                | (...)
                                | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                sizes?: (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                supported_tag_types?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                                max_redirect_depth?: (...) | (...);
                                max_response_time_ms?: (...) | (...);
                                backup_image_required?: (...) | (...) | (...);
                                backup_image_max_size_kb?: (...) | (...);
                                om_sdk_required?: (...) | (...) | (...);
                            }
                            | {
                                sizes: (...)[];
                                experimental?: (...) | (...) | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                width?: (...) | (...);
                                height?: (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                supported_tag_types?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                                max_redirect_depth?: (...) | (...);
                                max_response_time_ms?: (...) | (...);
                                backup_image_required?: (...) | (...) | (...);
                                backup_image_max_size_kb?: (...) | (...);
                                om_sdk_required?: (...) | (...) | (...);
                            }
                            | {
                                min_width?: (...)
                                | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                experimental?: (...) | (...) | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                width?: (...) | (...);
                                height?: (...) | (...);
                                sizes?: (...) | (...);
                                supported_tag_types?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                                max_redirect_depth?: (...) | (...);
                                max_response_time_ms?: (...) | (...);
                                backup_image_required?: (...) | (...) | (...);
                                backup_image_max_size_kb?: (...) | (...);
                                om_sdk_required?: (...) | (...) | (...);
                            }
                            | {
                                experimental?: (...)
                                | (...)
                                | (...);
                                deprecated?: (...) | (...) | (...);
                                v1_translatable?: (...) | (...) | (...);
                                since_version?: (...) | (...);
                                migration_target_version?: (...) | (...);
                                composition_model?: (...) | (...) | (...);
                                provenance_required?: (...) | (...) | (...);
                                platform_extensions?: (...) | (...);
                                synthesis_nondeterministic?: (...) | (...) | (...);
                                slots?: (...) | (...);
                                required_connections?: (...) | (...);
                                reference_mutability?: (...) | (...) | (...) | (...);
                                production_window_business_days?: (...) | (...);
                                width?: (...) | (...);
                                height?: (...) | (...);
                                sizes?: (...) | (...);
                                min_width?: (...) | (...);
                                max_width?: (...) | (...);
                                min_height?: (...) | (...);
                                max_height?: (...) | (...);
                                supported_tag_types?: (...) | (...);
                                ssl_required?: (...) | (...) | (...);
                                max_redirect_depth?: (...) | (...);
                                max_response_time_ms?: (...) | (...);
                                backup_image_required?: (...) | (...) | (...);
                                backup_image_max_size_kb?: (...) | (...);
                                om_sdk_required?: (...) | (...) | (...);
                            };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "image_carousel";
                        params: {
                            experimental?: boolean;
                            deprecated?: boolean;
                            v1_translatable?: boolean;
                            since_version?: string;
                            migration_target_version?: string;
                            composition_model?: "deterministic" | "algorithmic";
                            provenance_required?: boolean;
                            platform_extensions?: (...)[];
                            synthesis_nondeterministic?: boolean;
                            slots?: (...)[];
                            required_connections?: (...)[];
                            reference_mutability?:
                                | "immutable_snapshot"
                                | "mutable_requires_reapproval"
                                | "mutable_auto_recheck";
                            production_window_business_days?: number;
                            card_aspect_ratio?: string;
                            min_cards?: number;
                            max_cards?: number;
                            allowed_card_media_asset_types?: (...)[];
                            allowed_card_asset_types?: (...)[];
                            card_image_max_file_size_kb?: number;
                            card_video_max_file_size_kb?: number;
                            card_video_max_duration_ms?: number;
                            primary_text_max_chars?: number;
                            card_headline_max_chars?: number;
                            card_description_max_chars?: number;
                            ssl_required?: boolean;
                        };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "video_hosted";
                        params: {
                            experimental?: boolean;
                            deprecated?: boolean;
                            v1_translatable?: boolean;
                            since_version?: string;
                            migration_target_version?: string;
                            composition_model?: "deterministic" | "algorithmic";
                            provenance_required?: boolean;
                            platform_extensions?: (...)[];
                            synthesis_nondeterministic?: boolean;
                            slots?: (...)[];
                            required_connections?: (...)[];
                            reference_mutability?:
                                | "immutable_snapshot"
                                | "mutable_requires_reapproval"
                                | "mutable_auto_recheck";
                            production_window_business_days?: number;
                            orientation?: "vertical"
                            | "horizontal"
                            | "square";
                            aspect_ratio?: string;
                            min_width?: number;
                            min_height?: number;
                            max_width?: number;
                            max_height?: number;
                            duration_ms_range?: (...)[];
                            duration_ms_exact?: number;
                            video_codecs?: (...)[];
                            audio_codecs?: (...)[];
                            containers?: (...)[];
                            min_bitrate_kbps?: number;
                            max_bitrate_kbps?: number;
                            max_file_size_mb?: number;
                            frame_rates?: (...)[];
                            captions?: "required" | "not_required" | "recommended";
                            om_sdk_required?: boolean;
                            headline_max_chars?: number;
                            primary_text_max_chars?: number;
                            brand_name_max_chars?: number;
                            cta_values?: (...)[];
                            companion_banner_widths?: (...)[];
                            companion_banner_heights?: (...)[];
                            asset_source?:
                                | "buyer_uploaded"
                                | "publisher_host_recorded"
                                | "seller_pre_rendered_from_brief"
                                | "seller_human_designed"
                                | "agent_synthesized"
                                | "publisher_owned_reference";
                            buyer_asset_acceptance?: "rejected"
                            | "accepted";
                        };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "video_vast";
                        params: {
                            experimental?: boolean;
                            deprecated?: boolean;
                            v1_translatable?: boolean;
                            since_version?: string;
                            migration_target_version?: string;
                            composition_model?: "deterministic" | "algorithmic";
                            provenance_required?: boolean;
                            platform_extensions?: (...)[];
                            synthesis_nondeterministic?: boolean;
                            slots?: (...)[];
                            required_connections?: (...)[];
                            reference_mutability?:
                                | "immutable_snapshot"
                                | "mutable_requires_reapproval"
                                | "mutable_auto_recheck";
                            production_window_business_days?: number;
                            orientation?: "vertical"
                            | "horizontal"
                            | "square";
                            aspect_ratio?: string;
                            vast_version?: VASTVersion;
                            vpaid_enabled?: boolean;
                            vpaid_version?: "1.0" | "2.0";
                            simid_supported?: boolean;
                            duration_ms_range?: (...)[];
                            duration_ms_exact?: number;
                            min_width?: number;
                            max_width?: number;
                            min_height?: number;
                            max_height?: number;
                            linear_required?: boolean;
                            skippable_after_ms?: number;
                            max_wrapper_depth?: number;
                            ssl_required?: boolean;
                        };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "audio_hosted";
                        params: {
                            experimental?: boolean;
                            deprecated?: boolean;
                            v1_translatable?: boolean;
                            since_version?: string;
                            migration_target_version?: string;
                            composition_model?: "deterministic" | "algorithmic";
                            provenance_required?: boolean;
                            platform_extensions?: (...)[];
                            synthesis_nondeterministic?: boolean;
                            slots?: (...)[];
                            required_connections?: (...)[];
                            reference_mutability?:
                                | "immutable_snapshot"
                                | "mutable_requires_reapproval"
                                | "mutable_auto_recheck";
                            production_window_business_days?: number;
                            duration_ms_range?: (...)[];
                            duration_ms_exact?: number;
                            audio_codecs?: (...)[];
                            audio_sample_rates?: (...)[];
                            audio_channels?: (...)[];
                            min_bitrate_kbps?: number;
                            max_bitrate_kbps?: number;
                            max_file_size_mb?: number;
                            loudness_lufs?: number;
                            loudness_tolerance_db?: number;
                            true_peak_dbfs?: number;
                            asset_source?:
                                | "buyer_uploaded"
                                | "publisher_host_recorded"
                                | "seller_pre_rendered_from_brief"
                                | "seller_human_designed"
                                | "agent_synthesized"
                                | "publisher_owned_reference";
                            buyer_asset_acceptance?: "rejected"
                            | "accepted";
                            companion_image_required?: boolean;
                            companion_image_aspect_ratio?: string;
                            companion_image_max_file_size_kb?: number;
                            brand_name_max_chars?: number;
                        };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "audio_daast";
                        params: {
                            experimental?: boolean;
                            deprecated?: boolean;
                            v1_translatable?: boolean;
                            since_version?: string;
                            migration_target_version?: string;
                            composition_model?: "deterministic" | "algorithmic";
                            provenance_required?: boolean;
                            platform_extensions?: (...)[];
                            synthesis_nondeterministic?: boolean;
                            slots?: (...)[];
                            required_connections?: (...)[];
                            reference_mutability?:
                                | "immutable_snapshot"
                                | "mutable_requires_reapproval"
                                | "mutable_auto_recheck";
                            production_window_business_days?: number;
                            daast_version?: "1.0"
                            | "1.1";
                            duration_ms_range?: (...)[];
                            duration_ms_exact?: number;
                            linear_required?: boolean;
                            max_wrapper_depth?: number;
                            ssl_required?: boolean;
                            companion_image_required?: boolean;
                        };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "sponsored_placement";
                        params: {
                            experimental?: boolean;
                            deprecated?: boolean;
                            v1_translatable?: boolean;
                            since_version?: string;
                            migration_target_version?: string;
                            composition_model?: "deterministic" | "algorithmic";
                            provenance_required?: boolean;
                            platform_extensions?: (...)[];
                            synthesis_nondeterministic?: boolean;
                            slots?: (...)[];
                            required_connections?: (...)[];
                            reference_mutability?:
                                | "immutable_snapshot"
                                | "mutable_requires_reapproval"
                                | "mutable_auto_recheck";
                            production_window_business_days?: number;
                            supported_catalog_types?: (...)[];
                            min_items?: number;
                            max_items?: number;
                            fanout_mode?: "per_item" | "multi_item_in_creative" | "single_item";
                            required_catalog_fields?: (...)[];
                            supported_id_types?: (...)[];
                            hero_asset_supported?: boolean;
                            item_production_model?:
                                | "buyer_uploaded"
                                | "seller_pre_rendered_from_brief"
                                | "seller_human_designed"
                                | "agent_synthesized";
                        };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "native_in_feed";
                        params: {
                            experimental?: boolean;
                            deprecated?: boolean;
                            v1_translatable?: boolean;
                            since_version?: string;
                            migration_target_version?: string;
                            composition_model?: "deterministic" | "algorithmic";
                            provenance_required?: boolean;
                            platform_extensions?: (...)[];
                            synthesis_nondeterministic?: boolean;
                            slots?: (...)[];
                            required_connections?: (...)[];
                            reference_mutability?:
                                | "immutable_snapshot"
                                | "mutable_requires_reapproval"
                                | "mutable_auto_recheck";
                            production_window_business_days?: number;
                            title_max_chars?: number;
                            body_text_max_chars?: number;
                            cta_max_chars?: number;
                            cta_values?: (...)[];
                            main_image_sizes?: (...)[];
                            icon_size?: { width: ...; height: ... };
                            max_image_file_size_kb?: number;
                            image_formats?: (...)[];
                            ssl_required?: boolean;
                            asset_source?:
                                | "buyer_uploaded"
                                | "seller_pre_rendered_from_brief"
                                | "seller_human_designed"
                                | "agent_synthesized"
                                | "publisher_owned_reference";
                            buyer_asset_acceptance?: "rejected"
                            | "accepted";
                        };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "responsive_creative";
                        params: {
                            experimental?: boolean;
                            deprecated?: boolean;
                            v1_translatable?: boolean;
                            since_version?: string;
                            migration_target_version?: string;
                            composition_model?: "deterministic" | "algorithmic";
                            provenance_required?: boolean;
                            platform_extensions?: (...)[];
                            synthesis_nondeterministic?: boolean;
                            slots?: (...)[];
                            required_connections?: (...)[];
                            reference_mutability?:
                                | "immutable_snapshot"
                                | "mutable_requires_reapproval"
                                | "mutable_auto_recheck";
                            production_window_business_days?: number;
                            headlines_min?: number;
                            headlines_max?: number;
                            headline_max_chars?: number;
                            long_headlines_min?: number;
                            long_headlines_max?: number;
                            long_headline_max_chars?: number;
                            descriptions_min?: number;
                            descriptions_max?: number;
                            description_max_chars?: number;
                            images_landscape_min?: number;
                            images_landscape_max?: number;
                            images_landscape_aspect_ratio?: string;
                            images_square_min?: number;
                            images_square_max?: number;
                            images_vertical_min?: number;
                            images_vertical_max?: number;
                            videos_min?: number;
                            videos_max?: number;
                            video_min_duration_ms?: number;
                            video_max_duration_ms?: number;
                            logo_min?: number;
                            logo_max?: number;
                            logo_aspect_ratios?: (...)[];
                            business_name_max_chars?: number;
                            asset_image_max_file_size_kb?: number;
                            supports_catalog_input?: boolean;
                        };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "agent_placement";
                        params: {
                            experimental?: boolean;
                            deprecated?: boolean;
                            v1_translatable?: boolean;
                            since_version?: string;
                            migration_target_version?: string;
                            composition_model?: "deterministic" | "algorithmic";
                            provenance_required?: boolean;
                            platform_extensions?: (...)[];
                            synthesis_nondeterministic?: boolean;
                            slots?: (...)[];
                            required_connections?: (...)[];
                            reference_mutability?:
                                | "immutable_snapshot"
                                | "mutable_requires_reapproval"
                                | "mutable_auto_recheck";
                            production_window_business_days?: number;
                            output_modality?: "audio"
                            | "text"
                            | "card";
                            max_mention_length_chars?: number;
                            max_mention_duration_ms?: number;
                            supports_offering_reference?: boolean;
                            supports_landing_page_url?: boolean;
                            tone_constraints?: (...)[];
                            disclosure_required?: boolean;
                        };
                    }
                    | {
                        format_option_id?: string;
                        publisher_domain?: string;
                        display_name?: string;
                        sample_render_url?: string;
                        applies_to_channels?: MediaChannel[];
                        seller_preference?: "accepted"
                        | "preferred"
                        | "discouraged";
                        locale_policy?: { accepted_language_ranges: (...)[] };
                        canonical_formats_only?: boolean;
                        experimental?: boolean;
                        format_shape?: string;
                        v1_format_ref?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        format_schema?: { uri: string; digest: string };
                        format_kind: "custom";
                        params: Omit<Omit<(...), (...)>, "authentication"> & {
                            authentication?: unknown;
                        };
                    };
                operations?: ("preview" | "build" | "validate")[];
            }[]

            Canonical-format capability catalog for this creative agent. This is the 3.2 source of truth for discovering which format contracts the agent can build, validate, or preview; it replaces the deprecated list_creative_formats task. Each entry uses the same ProductFormatDeclaration shape as a product's inline format_options[i]. New 3.2 producers MUST publish a stable agent-local capability_id and explicit operations for task routing. Every emitted capability_id MUST be unique within this catalog so a route selects exactly one entry. During the 3.x compatibility window, consumers MUST also accept legacy entries that omit either field; absent operations means ["build"], while an absent capability_id means the entry is discoverable by canonical contract but cannot be selected through a capability-ID route.

            Publisher-specific support. To claim exact support for a publisher declaration, format carries the declaration's {publisher_domain, format_option_id} pair plus its canonical format_kind and narrowed params. Generic creative agents MAY instead advertise a canonical parameter envelope without publisher identity. A generic capability matches a target declaration only when the capability can satisfy every target constraint; matching canonical names alone is insufficient. Registries MAY reverse-index these entries by format.format_kind, format.publisher_domain, and format.format_option_id.

            This catalog describes creative operations, not sales-agent inventory deliverability. Sales agents publish the purchasable closed set on each Product.format_options[]; publisher acceptance lives in adagents.json.formats[].

          • Optionalpreview?: {
                routes: {
                    capability_id: string;
                    rendering_origin: "platform_native" | "agent_approximation";
                }[];
            }

            Per-route preview_creative capability metadata. New 3.2 producers whose supported_formats[] explicitly advertises a routable preview operation MUST emit this block. rendering_origin describes how each route is implemented but is informational and never grants presentation authority: only a matching publisher-origin placement preview_provider delegation can do that. routes[].capability_id MUST equal the set of capability IDs on supported_formats[] entries whose operations contains preview.

            • routes: {
                  capability_id: string;
                  rendering_origin: "platform_native" | "agent_approximation";
              }[]

              Agent-local preview routes and their implementation origin. Authority is resolved from publisher placement delegation, never from this self-description.

          • Optionallocalization?: { max_target_variants?: number; locale_matching: "rfc4647_lookup" }

            Materialized creative-localization support for sync_creatives/list_creatives, including source-only monolingual topology. Presence opts the agent into exact locale-variant round-trip, strict RFC 4647 Lookup, optional buyer-declared language-family fallback rules, explicit final default/unmatched behavior, creative-wide review, transactional replacement, seller product-format locale-policy enforcement, and delivery attribution. This is a coarse structural capability, not a promise that every locale/format/account combination is accepted; sellers publish accepted ranges on product format declarations and validate each write before mutation. Omit this object when localization is unsupported.

            • Optionalmax_target_variants?: number

              Maximum target locale variants accepted on one creative. Zero advertises source-only monolingual locale topology. Omit to inherit the protocol ceiling of 50.

              0

              50

            • locale_matching: "rfc4647_lookup"

              The required deterministic locale-matching algorithm.

          • Optionalbills_through_adcp?: boolean

            When true, this creative agent bills through the AdCP rate-card surface: list_creatives returns pricing_options when include_pricing=true with an authenticated account, build_creative populates pricing_option_id and vendor_cost on the response, and report_usage accepts records against the rate card. When false or absent, the agent bills out of band (flat license, SaaS contract, bundled enterprise agreement) and buyers should skip pricing fields and tolerate report_usage returning accepted: 0 with errors carrying BILLING_OUT_OF_BAND. A pre-call discriminator so buyer agents can route across many creative agents without first establishing an account to probe pricing.

          • Optionalcanonical_catalog_version?: string

            Optional. The AdCP canonical-formats catalog version this agent's runtime is built against (e.g., 3.1, 3.2.0). Lets buyer SDKs detect canonical-catalog skew between their generated types and the seller's actual support. SDKs MAY declare the version they were generated against (typically the AdCP version they ship for); when seller and SDK versions disagree, SDKs SHOULD soft-warn rather than fail (the open-enum semantics on canonical-format-kind.json make unknown canonicals safe to retain, so skew is not a hard error — it just means the older side might not understand newer canonical values). Omitted by sellers who haven't yet generated against a versioned catalog; absence is interpreted as the AdCP version advertised by the broader capabilities response.

            ^\d+.\d+(.\d+)?$

        • Optionaloauth?: { supported: boolean }

          Introduced in AdCP 3.2. OAuth 2.0 protected-resource support for inbound transport authentication. This is a capability claim, not a requirement that every caller use OAuth: supported: true means the agent publishes RFC 9728 protected-resource metadata for its advertised endpoint and RFC 8414 metadata for every referenced authorization server, and opts into the universal oauth_setup conformance storyboard. Agents that use only static Bearer, Basic, mTLS, or RFC 9421 authentication omit this block or declare supported: false. Operator credential acquisition remains separately described by account.authorization_endpoint when applicable.

          • supported: boolean

            Whether this agent accepts OAuth access tokens and publishes the discovery metadata needed to obtain and validate them. A true value is an explicit conformance claim: the RFC 9728 protected-resource document and every RFC 8414 authorization-server document it references MUST be reachable, internally consistent, and safe for clients to follow. False or absent means the OAuth metadata storyboard is not applicable; it does not weaken the universal requirement to implement at least one authentication mechanism.

        • Optionalrequest_signing?: {
              supported: boolean;
              covers_content_digest?: "required" | "forbidden" | "either";
              required_for?: string[];
              warn_for?: string[];
              supported_for?: string[];
              protocol_methods_supported_for?: string[];
              protocol_methods_warn_for?: string[];
              protocol_methods_required_for?: string[];
          }

          RFC 9421 HTTP Signatures support for incoming requests. Signing remains optional through 3.2, but every accepted 3.2 signature on a request with a body MUST cover content-digest. Request signing becomes required for spend-committing operations in 4.0. The full profile is defined in docs/building/by-layer/L1/security.mdx (Signed Requests (Transport Layer)).

          • supported: boolean

            Whether this agent verifies RFC 9421 signatures on incoming requests. When true, signatures present on requests are validated per the AdCP request-signing profile. When false or absent, signatures are ignored (requests are bearer-authenticated only).

          • Optionalcovers_content_digest?: "required" | "forbidden" | "either"

            Policy for content-digest coverage in request signatures. In AdCP 3.2 and later, an agent with request_signing.supported=true MUST explicitly emit 'required': every accepted signature on a request with a body covers content-digest, and a body-unbound signature is rejected with request_signature_components_incomplete. Omission retains the legacy effective default of 'either' only for a 3.0/3.1 response; 3.2 responses require this field explicitly. 'either' and 'forbidden' are deprecated legacy 3.0/3.1 postures retained only for version negotiation with pre-3.2 peers; they MUST NOT be advertised as a 3.2 signing posture and are removed in 4.0. A shared endpoint MUST select the verifier policy from trusted endpoint configuration and negotiated capabilities before dispatch, never from an unbound request-body version field.

          • Optionalrequired_for?: string[]

            AdCP protocol operation names (e.g., 'create_media_buy') for which this agent rejects an unsigned request with request_signature_required unless an independently valid configured fallback authenticator succeeds. Not MCP tool names, A2A skill names, or any transport-specific rename — verifiers MUST NOT accept operation names that are not defined by the AdCP protocol spec. JSON-RPC protocol method names like tasks/cancel belong in protocol_methods_required_for, not here. Empty in 3.0 by default; sellers populate selectively during per-counterparty pilots. In 4.0 this list MUST include all spend-committing operations the agent supports (create_media_buy, acquire_*, etc.). Every operation listed MUST also appear in supported_for; see x-adcp-validation.

          • Optionalwarn_for?: string[]

            AdCP protocol operation names for shadow-mode verification. The verifier records missing signatures and well-formed signatures that fail verification or body binding, but MUST NOT establish verified-signer identity from a failed signature; processing continues only when an independent bearer, API-key, or mTLS authenticator succeeds. A partial or malformed Signature / Signature-Input pair always hard-rejects. Used as a bridge between supported_for and required_for. Precedence: required_for > warn_for > supported_for. An operation MUST NOT appear in both warn_for and required_for; see x-adcp-validation.

          • Optionalsupported_for?: string[]

            AdCP protocol operation names for which this agent verifies signatures when present but does not require them. Under the 3.2 profile, a presented signature on a body-bearing request without content-digest coverage rejects even though an unsigned request may use configured fallback authentication. Typically a superset of required_for and warn_for.

          • Optionalprotocol_methods_supported_for?: string[]

            JSON-RPC protocol method names (e.g., 'tasks/cancel', 'tasks/get') for which this agent verifies signatures when present. Under the 3.2 profile, a presented signature on a body-bearing request without content-digest coverage rejects. Disjoint from supported_for, which carries AdCP tool names only. Items MUST be wire-format JSON-RPC method strings containing /; plain AdCP tool names belong in supported_for.

          • Optionalprotocol_methods_warn_for?: string[]

            Protocol method names for shadow-mode verification, mirroring warn_for in the AdCP-tool namespace. Missing signatures and well-formed signatures that fail verification or body binding are recorded but MUST NOT establish verified-signer identity; processing continues only when an independent authenticator succeeds. A partial or malformed Signature / Signature-Input pair always hard-rejects. An item MUST NOT appear in both protocol_methods_warn_for and protocol_methods_required_for; see x-adcp-validation.

          • Optionalprotocol_methods_required_for?: string[]

            JSON-RPC protocol method names for which this agent rejects an unsigned request with request_signature_required unless an independently valid configured fallback authenticator succeeds. Separate namespace from required_for: this bucket binds against the JSON-RPC method field, not tools/call params.name. Every listed method MUST also appear in protocol_methods_supported_for; see x-adcp-validation.

        • Optionalwebhook_signing?: {
              supported: boolean;
              profile?: "adcp/webhook-signing/v1";
              algorithms?: ("ed25519" | "ecdsa-p256-sha256")[];
              legacy_hmac_fallback?: boolean;
          }

          RFC 9421 webhook-signature support for outbound webhook callbacks (top-level peer of request_signing). Declares which AdCP webhook-signing profile version and algorithms this agent produces on delivery, and whether it supports the legacy HMAC-SHA256 fallback for receivers that have not yet adopted RFC 9421. See docs/building/implementation/webhooks.mdx.

          • supported: boolean

            Whether this agent signs outbound webhooks with the AdCP RFC 9421 webhook profile. When false or absent, webhooks are delivered with legacy Bearer or HMAC-SHA256 auth only and receivers MUST NOT expect a Signature header. When the seller advertises mutating-webhook emission (i.e., media_buy.reporting_delivery_methods includes webhook, media_buy.content_standards.supports_webhook_delivery is true, media_buy.relationship_notifications.supported is true, wholesale_feed_webhooks.supported is true, adcp.capability_changes.notifications.supported is true, or account.notifications.supported is true), this MUST be true — emitting state-changing webhooks unsigned is a downgrade vector that lets an on-path attacker forge delivery callbacks. See x-adcp-validation.

          • Optionalprofile?: "adcp/webhook-signing/v1"

            Identifier of the webhook-signing profile version the agent emits. Value MUST match the tag= parameter emitted in the RFC 9421 Signature-Input header (see docs/building/implementation/webhooks.mdx) so receivers can statically validate the declared profile against the on-wire tag. Closed enum; future profile revisions will extend this enum in a follow-up schema bump.

          • Optionalalgorithms?: ("ed25519" | "ecdsa-p256-sha256")[]

            Signature algorithms this agent uses on outbound webhooks. 3.0 profile permits 'ed25519' and 'ecdsa-p256-sha256' only; other values are reserved for future profile versions and MUST NOT be emitted under adcp/webhook-signing/v1.

          • Optionallegacy_hmac_fallback?: boolean

            Whether this agent will fall back to HMAC-SHA256 on the legacy push_notification_config.authentication, accounts[].notification_configs[].authentication, or sync_agent_notification_configs.notification_configs[].authentication paths for receivers that have not adopted RFC 9421. Deprecated; removed in AdCP 4.0.

        • Optionalidentity?: {
              brand_json_url?: string;
              per_principal_key_isolation?: boolean;
              key_origins?: {
                  governance_signing?: string;
                  request_signing?: string;
                  webhook_signing?: string;
                  tmp_signing?: string;
              };
              compromise_notification?: { emits?: boolean; accepts?: boolean };
          }

          Operator identity posture — trust-root pointer (brand_json_url) plus key-scoping and compromise-response controls the agent operates. brand_json_url is load-bearing for signature verification: when the agent declares any signing posture (request_signing.supported_for/required_for non-empty, webhook_signing.supported === true, or any key_origins subfield), brand_json_url MUST be present (storyboard-enforced in 3.x; schema-required in 4.0). Verifiers use it to bootstrap from the agent URL to the operator's brand.json (and from there to signing keys); see security.mdx §Discovering an agent's signing keys. The remaining fields (per_principal_key_isolation, key_origins, compromise_notification) are advisory and receivers use them to reason about blast radius and revocation latency at onboarding. Empty-object semantics: identity: {} means "posture block present but no posture claimed" — schema-valid but advisory-neutral and receivers MUST treat it as equivalent to omitting the block, except that an agent declaring a signing posture elsewhere in the response with an empty identity MUST be rejected by storyboard runners as missing brand_json_url.

          • Optionalbrand_json_url?: string

            HTTPS URL of the operator's brand.json (typically https://{operator-domain}/.well-known/brand.json). Trust-root pointer for this agent's signing keys. See security.mdx §Discovering an agent's signing keys via brand_json_url for the verifier algorithm and x-adcp-validation for structured constraints. Distinct from sponsored_intelligence.brand_url, which is a rendering pointer for SI agent visuals — verifiers MUST use this field for key discovery and MUST NOT fall back to sponsored_intelligence.brand_url as a trust-root pointer.

            ^https://

          • Optionalper_principal_key_isolation?: boolean

            When true, this multi-principal operator scopes signing keys per-principal so a single principal's key compromise does not silently re-scope across principals served by the same operator. kid values remain opaque to verifiers per RFC 7517; any operator-side naming convention (e.g., {operator}:{principal}:{key_version}) is internal bookkeeping and MUST NOT be parsed by verifiers. See docs/building/understanding/security-model.mdx.

          • Optionalkey_origins?: {
                governance_signing?: string;
                request_signing?: string;
                webhook_signing?: string;
                tmp_signing?: string;
            }

            Map of signing-key surface/purpose → publishing origin, so counterparties can verify origin separation (e.g., governance keys served from a separate origin than transport/webhook keys) at onboarding. Absent means the operator has not declared a separation scheme; receivers SHOULD assume shared-origin. Every entry listed MUST have a corresponding signing posture declared elsewhere — request_signing requires non-empty request_signing.supported_for/required_for/protocol_methods_supported_for/protocol_methods_required_for; webhook_signing requires webhook_signing.supported === true and names the webhook delivery surface, not a required live adcp_use: "webhook-signing" key purpose — otherwise the consistency check at signature-verification time has nothing to anchor against. See x-adcp-validation and docs/building/implementation/security.mdx §Origin separation.

            • Optionalgovernance_signing?: string

              Origin (scheme + host) serving the governance-signing JWKS.

            • Optionalrequest_signing?: string

              Origin (scheme + host) serving the request-signing JWKS.

            • Optionalwebhook_signing?: string

              Origin (scheme + host) serving the JWKS used for webhook delivery. Webhooks are signed with adcp_use: "request-signing" keys; the deprecated adcp_use: "webhook-signing" value remains accepted during the backward-compatibility window.

            • Optionaltmp_signing?: string

              Origin (scheme + host) serving the TMP-signing JWKS, when this operator participates in TMP.

          • Optionalcompromise_notification?: { emits?: boolean; accepts?: boolean }

            Whether this agent emits the identity.compromise_notification webhook event on key revocation due to known or suspected compromise (as opposed to scheduled rotation). Subscribers use this to bound the window between compromise detected and verifiers converging on revocation. See docs/building/implementation/webhooks.mdx §identity.compromise_notification.

            • Optionalemits?: boolean

              Whether this agent emits identity.compromise_notification events.

            • Optionalaccepts?: boolean

              Whether this agent subscribes to identity.compromise_notification events from counterparties it verifies signatures from.

        • Optionalmeasurement_gateway?: {
              delivery_task: "get_media_buy_delivery";
              feedback_task: "provide_performance_feedback";
          }

          Buyer-controlled task gateway between an orchestrator and measurement providers. In the first experimental tier, providers read buyer-approved cross-seller delivery through get_media_buy_delivery and return compact assertions through provide_performance_feedback, without receiving seller credentials. Orchestrators implementing this block MUST include measurement in supported_protocols and measurement.gateway in experimental_features; this gateway role does not claim the media_buy seller protocol.

          • delivery_task: "get_media_buy_delivery"

            Task providers call on the orchestrator gateway to read buyer-approved delivery.

          • feedback_task: "provide_performance_feedback"

            Task providers call on the orchestrator gateway to return one compact assertion.

        • Optionalmeasurement?: {
              produces_performance_feedback?: boolean;
              metrics: {
                  metric_id: string;
                  standard_reference?: string;
                  accreditations?: {
                      accrediting_body: string;
                      certification_id?: string;
                      valid_until?: string;
                      evidence_url?: string;
                  }[];
                  unit?: string;
                  description?: string;
                  methodology_url?: string;
                  methodology_version?: string;
                  ext?: Omit<Omit<{ [key: string]: unknown }, "bank">, "authentication"> & {
                      authentication?: unknown;
                  };
              }[];
          }

          Experimental measurement capability block. Presence indicates this agent computes one or more quantitative metrics about ad delivery, exposure, or effect, and is willing to be discovered as a measurement vendor. Agents implementing this block MUST list measurement.core in experimental_features. Returns metric definitions and whether the provider produces compact performance feedback, not pricing/coverage (negotiated via measurement_terms on create_media_buy) or raw/live datasets. Per-buy vendor values remain on delivery reports; optimizer-ready projections use provide_performance_feedback. AgenticAdvertising.org crawls each measurement agent's metrics[] on a TTL to populate the federated cross-vendor index.

          • Optionalproduces_performance_feedback?: boolean

            Whether this measurement agent produces compact provide_performance_feedback assertions for a buyer-controlled orchestrator gateway. In the first experimental tier the provider reads delivery through the gateway's get_media_buy_delivery task and returns assertions through its provide_performance_feedback task. The gateway decides what to forward to each seller.

          • metrics: {
                metric_id: string;
                standard_reference?: string;
                accreditations?: {
                    accrediting_body: string;
                    certification_id?: string;
                    valid_until?: string;
                    evidence_url?: string;
                }[];
                unit?: string;
                description?: string;
                methodology_url?: string;
                methodology_version?: string;
                ext?: Omit<Omit<{ [key: string]: unknown }, "bank">, "authentication"> & {
                    authentication?: unknown;
                };
            }[]

            Metrics this agent computes. Each entry is identified by metric_id within the vendor's vocabulary; the canonical reference everywhere a measurement value appears (committed_metrics, vendor_metric_values, missing_metrics) is the tuple (vendor.domain, vendor.brand_id, metric_id).

        • Optionalcompliance_testing?: { scenarios: string[] }

          Compliance testing capabilities. The presence of this block declares that the agent supports deterministic testing via comply_test_controller for lifecycle state machine validation. Omit the block entirely if the agent does not support compliance testing. Sellers SHOULD list every canonical controller scenario they implement so buyers and runners can distinguish full deterministic coverage from partial coverage without probing each scenario one by one; the runtime source of truth remains comply_test_controller with scenario: 'list_scenarios'.

          • scenarios: string[]

            Compliance testing scenarios this agent supports. Must be non-empty — at least one scenario. Values SHOULD include every canonical controller scenario the agent implements, excluding list_scenarios because that value is a discovery operation rather than a test capability. Values MAY also include implementation-specific scenarios. Callers can use comply_test_controller with scenario: 'list_scenarios' to discover supported scenarios at runtime.

        • Optionalspecialisms?: AdCPSpecialism[]

          Optional — specialized compliance claims this agent supports. Values MUST be kebab-case enum IDs (e.g., 'creative-generative', 'sales-non-guaranteed'). An agent that implements a specialism's tools but omits its ID from this array will receive 'No applicable tracks found' from the compliance runner — tracks for that specialism are not evaluated even if every tool works. Omitting the field means the agent declares no specialism claims (it still passes the universal + domain-baseline storyboards implied by supported_protocols). Each specialism maps to a storyboard bundle at /compliance/{version}/specialisms/{id}/ that the AAO compliance runner executes to verify the claim. Each specialism rolls up to one of the protocols in supported_protocols — the runner rejects a specialism claim whose parent protocol is missing. Only list specialisms your agent actually implements — the AAO Verified badge enumerates which specialisms were demonstrably passed.

        • Optionalextensions_supported?: string[]

          Extension namespaces this agent supports. Buyers can expect meaningful data in ext.{namespace} fields on responses from this agent. Extension schemas are published in the AdCP extension registry.

        • Optionalexperimental_features?: string[]

          Experimental AdCP surfaces this agent implements. A surface is experimental when its schema carries x-status: experimental and the working group has not yet frozen it. Sellers that implement any experimental surface MUST list its feature id here. Buyers inspect this array before relying on experimental surfaces — a seller that does not list a surface is asserting it does not implement it. Experimental surfaces MAY break between any two 3.x releases with at least 6 weeks notice; the full contract is in docs/reference/experimental-status.

        • Optionalwholesale_feed_versioning?: {
              supported: boolean;
              pricing_version_separate?: boolean;
              cache_scope_account?: boolean;
          }

          Conditional-fetch token capabilities for get_products and get_signals. Independent of wholesale feed webhooks: an agent MAY support cheap version probes via if_wholesale_feed_version without pushing change payloads (and vice versa). When supported is true, the agent returns wholesale_feed_version on every get_products / get_signals response and honors if_wholesale_feed_version on subsequent requests. When absent or supported is false, callers MAY still send if_wholesale_feed_version — pre-3.1 agents that ignore it just return the full payload (correct, just inefficient). Pre-flight declaration here lets buyers fast-path which agents to bother caching versions for. See get_products / get_signals 'Wholesale feed versioning' sections.

          • supported: boolean

            Whether the agent returns wholesale_feed_version on responses and honors if_wholesale_feed_version on requests. When absent, treated as false; buyers MAY still probe (the field-presence detection path) but cannot pre-flight-decide.

          • Optionalpricing_version_separate?: boolean

            Whether the agent tracks pricing_version independently of wholesale_feed_version. When true, the agent returns both tokens and honors if_pricing_version separately — useful for rate-card sweeps that don't change product and signal metadata. When false or absent, the agent collapses both into wholesale_feed_version; callers SHOULD NOT send if_pricing_version (it will be ignored and may produce INVALID_REQUEST when sent without if_wholesale_feed_version per the dependencies rule).

          • Optionalcache_scope_account?: boolean

            Whether the agent ever returns cache_scope: 'account' (i.e., publishes per-account overlays distinct from the public rate card). When true, buyers MUST be prepared to maintain account-overlay caches alongside the public layer. When false or absent, all responses are cache_scope: 'public' regardless of whether account was provided — the agent's rate card is universal. Confidentiality note: declaring true advertises that the agent runs custom-pricing deals (low-grade market-posture signal); agents preferring not to disclose this MAY omit the field and let consumers detect-on-call via cache_scope on response.

        • Optionallast_updated?: string

          ISO 8601 timestamp of when capabilities were last updated. Buyers can use this for cache invalidation.

          date-time

        • Optionalerrors?: {
              code: string;
              message: string;
              field?: string;
              suggestion?: string;
              retry_after?: number;
              issues?: {
                  pointer: string;
                  message: string;
                  keyword: string;
                  schemaPath?: string;
                  schema_id?: string;
                  discriminator?: {
                      property_name: string;
                      value: (...) | (...) | (...) | (...) | (...);
                  }[];
              }[];
              details?: Omit<Omit<{}, "bank">, "authentication"> & {
                  authentication?: unknown;
              };
              recovery?: "transient"
              | "correctable"
              | "terminal";
              source?: "producer" | "sdk";
              sdk_id?: string;
          }[]

          Task-specific errors and warnings

        • Optionalext?: Omit<Omit<{ [key: string]: unknown }, "bank">, "authentication"> & {
              authentication?: unknown;
          }
        • Optionalwholesale_feed_webhooks?: {
              supported: boolean;
              event_types?: (
                  | "product.created"
                  | "product.updated"
                  | "product.priced"
                  | "product.removed"
                  | "signal.created"
                  | "signal.updated"
                  | "signal.priced"
                  | "signal.removed"
                  | "wholesale_feed.bulk_change"
              )[];
          }

          Per-agent wholesale product-feed and wholesale signals-feed webhook capabilities. Consumers register durable sync_accounts notification subscribers and receive actual product., signal., or wholesale_feed.bulk_change payloads without polling. Product mirrors bootstrap and repair through list_products(if_feed_version); signal mirrors use get_signals(if_wholesale_feed_version). Deprecated wholesale get_products remains the 3.x product compatibility path. Webhook emission MUST apply the same caller/account authorization and cache-scope predicate as the corresponding read.

          • supported: boolean

            Whether this agent can push wholesale feed change payloads through account-level sync_accounts.accounts[].notification_configs[]. When false or absent, consumers fall back to wholesale polling, optionally with if_wholesale_feed_version probes.

          • Optionalevent_types?: (
                | "product.created"
                | "product.updated"
                | "product.priced"
                | "product.removed"
                | "signal.created"
                | "signal.updated"
                | "signal.priced"
                | "signal.removed"
                | "wholesale_feed.bulk_change"
            )[]

            Wholesale feed webhook event types this agent can emit. Sales agents emit product.* events and MUST expose list_products or the deprecated 3.x wholesale get_products compatibility path. Signals agents emit signal.* events and MUST support wholesale get_signals. wholesale_feed.bulk_change requires at least one corresponding repair path.

      • Optionalsummary: string

      Returns McpToolResponse

      v6: createAdcpServerFromPlatform constructs wire responses from typed platform returns. Direct use is for v5 raw-handler adopters mid-migration only.