adcp 3.1.0__tar.gz → 3.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (341) hide show
  1. {adcp-3.1.0/src/adcp.egg-info → adcp-3.2.0}/PKG-INFO +10 -5
  2. {adcp-3.1.0 → adcp-3.2.0}/README.md +9 -4
  3. {adcp-3.1.0 → adcp-3.2.0}/pyproject.toml +1 -1
  4. adcp-3.2.0/src/adcp/ADCP_VERSION +1 -0
  5. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/__init__.py +5 -5
  6. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/__main__.py +4 -4
  7. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/adagents.py +5 -9
  8. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/client.py +14 -12
  9. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/protocols/a2a.py +3 -3
  10. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/protocols/base.py +2 -2
  11. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/protocols/mcp.py +3 -3
  12. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/server/base.py +6 -10
  13. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/server/content_standards.py +17 -49
  14. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/server/governance.py +20 -59
  15. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/server/mcp_tools.py +8 -4
  16. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/server/proposal.py +1 -3
  17. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/server/sponsored_intelligence.py +10 -28
  18. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/simple.py +10 -10
  19. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/__init__.py +10 -6
  20. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/_generated.py +44 -27
  21. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/base.py +7 -7
  22. adcp-3.2.0/src/adcp/types/generated_poc/a2ui/__init__.py +3 -0
  23. adcp-3.2.0/src/adcp/types/generated_poc/a2ui/component.py +24 -0
  24. adcp-3.2.0/src/adcp/types/generated_poc/a2ui/surface.py +33 -0
  25. adcp-3.2.0/src/adcp/types/generated_poc/account/__init__.py +3 -0
  26. adcp-3.2.0/src/adcp/types/generated_poc/account/list_accounts_request.py +30 -0
  27. adcp-3.2.0/src/adcp/types/generated_poc/account/list_accounts_response.py +30 -0
  28. adcp-3.2.0/src/adcp/types/generated_poc/adagents.py +501 -0
  29. adcp-3.2.0/src/adcp/types/generated_poc/content_standards/artifact.py +208 -0
  30. adcp-3.2.0/src/adcp/types/generated_poc/content_standards/artifact_webhook_payload.py +64 -0
  31. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/content_standards/calibrate_content_request.py +2 -2
  32. adcp-3.2.0/src/adcp/types/generated_poc/content_standards/calibrate_content_response.py +74 -0
  33. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/content_standards/content_standards.py +8 -8
  34. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/content_standards/create_content_standards_request.py +13 -13
  35. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/content_standards/create_content_standards_response.py +6 -6
  36. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/content_standards/get_content_standards_request.py +1 -1
  37. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/content_standards/get_content_standards_response.py +4 -4
  38. adcp-3.2.0/src/adcp/types/generated_poc/content_standards/get_media_buy_artifacts_request.py +64 -0
  39. adcp-3.2.0/src/adcp/types/generated_poc/content_standards/get_media_buy_artifacts_response.py +117 -0
  40. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/content_standards/list_content_standards_request.py +4 -4
  41. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/content_standards/list_content_standards_response.py +5 -5
  42. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/content_standards/update_content_standards_request.py +14 -14
  43. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/content_standards/update_content_standards_response.py +4 -4
  44. adcp-3.2.0/src/adcp/types/generated_poc/content_standards/validate_content_delivery_request.py +59 -0
  45. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/content_standards/validate_content_delivery_response.py +16 -16
  46. adcp-3.2.0/src/adcp/types/generated_poc/core/account.py +54 -0
  47. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/activation_key.py +8 -8
  48. adcp-3.2.0/src/adcp/types/generated_poc/core/assets/audio_asset.py +55 -0
  49. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/assets/css_asset.py +2 -2
  50. adcp-3.2.0/src/adcp/types/generated_poc/core/assets/daast_asset.py +71 -0
  51. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/assets/html_asset.py +2 -2
  52. adcp-3.2.0/src/adcp/types/generated_poc/core/assets/image_asset.py +23 -0
  53. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/assets/javascript_asset.py +3 -3
  54. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/assets/text_asset.py +2 -2
  55. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/assets/url_asset.py +3 -3
  56. adcp-3.2.0/src/adcp/types/generated_poc/core/assets/vast_asset.py +73 -0
  57. adcp-3.2.0/src/adcp/types/generated_poc/core/assets/video_asset.py +144 -0
  58. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/assets/webhook_asset.py +9 -9
  59. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/async_response_data.py +2 -2
  60. adcp-3.2.0/src/adcp/types/generated_poc/core/brand_manifest.py +264 -0
  61. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/brand_manifest_ref.py +9 -9
  62. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/context.py +1 -1
  63. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/creative_asset.py +12 -12
  64. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/creative_assignment.py +3 -3
  65. adcp-3.2.0/src/adcp/types/generated_poc/core/creative_filters.py +82 -0
  66. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/creative_manifest.py +4 -4
  67. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/creative_policy.py +4 -4
  68. adcp-3.2.0/src/adcp/types/generated_poc/core/delivery_metrics.py +111 -0
  69. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/deployment.py +20 -20
  70. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/destination.py +11 -11
  71. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/error.py +6 -6
  72. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/ext.py +1 -1
  73. adcp-3.2.0/src/adcp/types/generated_poc/core/format.py +273 -0
  74. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/format_id.py +5 -5
  75. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/frequency_cap.py +2 -2
  76. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/identifier.py +2 -2
  77. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/mcp_webhook_payload.py +10 -10
  78. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/measurement.py +8 -8
  79. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/media_buy.py +12 -8
  80. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/media_buy_features.py +3 -3
  81. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/offering.py +9 -9
  82. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/package.py +8 -8
  83. adcp-3.2.0/src/adcp/types/generated_poc/core/performance_feedback.py +78 -0
  84. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/placement.py +4 -4
  85. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/pricing_option.py +1 -1
  86. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/product.py +27 -21
  87. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/product_allocation.py +5 -5
  88. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/product_filters.py +27 -27
  89. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/promoted_offerings.py +18 -18
  90. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/promoted_products.py +2 -2
  91. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/property.py +10 -10
  92. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/property_id.py +4 -4
  93. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/property_list_ref.py +4 -4
  94. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/property_tag.py +4 -4
  95. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/proposal.py +13 -13
  96. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/protocol_envelope.py +8 -8
  97. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/publisher_property_selector.py +13 -13
  98. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/push_notification_config.py +5 -5
  99. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/reporting_capabilities.py +8 -8
  100. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/reporting_webhook.py +10 -10
  101. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/response.py +4 -4
  102. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/signal_filters.py +5 -5
  103. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/start_timing.py +3 -3
  104. adcp-3.2.0/src/adcp/types/generated_poc/core/sub_asset.py +65 -0
  105. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/targeting.py +17 -10
  106. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/creative/list_creative_formats_request.py +20 -20
  107. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/creative/list_creative_formats_response.py +5 -5
  108. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/creative/preview_creative_request.py +24 -24
  109. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/creative/preview_creative_response.py +28 -28
  110. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/creative/preview_render.py +25 -25
  111. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/adcp_domain.py +4 -4
  112. adcp-3.2.0/src/adcp/types/generated_poc/enums/asset_content_type.py +23 -0
  113. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/auth_scheme.py +2 -2
  114. adcp-3.2.0/src/adcp/types/generated_poc/enums/available_metric.py +19 -0
  115. adcp-3.2.0/src/adcp/types/generated_poc/enums/channels.py +29 -0
  116. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/co_branding_requirement.py +3 -3
  117. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/creative_action.py +5 -5
  118. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/creative_agent_capability.py +4 -4
  119. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/creative_sort_field.py +6 -6
  120. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/creative_status.py +5 -5
  121. adcp-3.2.0/src/adcp/types/generated_poc/enums/daast_tracking_event.py +21 -0
  122. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/daast_version.py +2 -2
  123. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/delivery_type.py +2 -2
  124. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/dimension_unit.py +4 -4
  125. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/feed_format.py +3 -3
  126. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/feedback_source.py +4 -4
  127. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/format_category.py +7 -7
  128. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/format_id_parameter.py +2 -2
  129. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/frequency_cap_scope.py +3 -3
  130. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/geo_level.py +4 -4
  131. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/history_entry_type.py +2 -2
  132. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/http_method.py +2 -2
  133. adcp-3.2.0/src/adcp/types/generated_poc/enums/identifier_types.py +29 -0
  134. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/javascript_module_type.py +3 -3
  135. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/landing_page_requirement.py +3 -3
  136. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/markdown_flavor.py +2 -2
  137. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/media_buy_status.py +4 -4
  138. adcp-3.2.0/src/adcp/types/generated_poc/enums/metric_type.py +18 -0
  139. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/metro_system.py +5 -5
  140. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/notification_type.py +4 -4
  141. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/pacing.py +3 -3
  142. adcp-3.2.0/src/adcp/types/generated_poc/enums/postal_system.py +19 -0
  143. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/preview_output_format.py +2 -2
  144. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/pricing_model.py +7 -7
  145. adcp-3.2.0/src/adcp/types/generated_poc/enums/property_type.py +18 -0
  146. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/publisher_identifier_types.py +5 -5
  147. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/reporting_frequency.py +3 -3
  148. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/signal_catalog_type.py +3 -3
  149. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/sort_direction.py +2 -2
  150. adcp-3.2.0/src/adcp/types/generated_poc/enums/task_status.py +19 -0
  151. adcp-3.2.0/src/adcp/types/generated_poc/enums/task_type.py +20 -0
  152. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/update_frequency.py +4 -4
  153. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/url_asset_type.py +3 -3
  154. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/validation_mode.py +2 -2
  155. adcp-3.2.0/src/adcp/types/generated_poc/enums/vast_tracking_event.py +26 -0
  156. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/vast_version.py +5 -5
  157. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/webhook_response_type.py +4 -4
  158. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/webhook_security_method.py +3 -3
  159. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/extensions/extension_meta.py +14 -14
  160. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/build_creative_request.py +4 -4
  161. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/build_creative_response.py +6 -6
  162. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/create_media_buy_async_response_input_required.py +5 -5
  163. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/create_media_buy_async_response_submitted.py +1 -1
  164. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/create_media_buy_async_response_working.py +5 -5
  165. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/create_media_buy_request.py +27 -21
  166. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/create_media_buy_response.py +15 -8
  167. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/get_media_buy_delivery_request.py +8 -8
  168. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/get_media_buy_delivery_response.py +51 -51
  169. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/get_products_async_response_input_required.py +6 -6
  170. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/get_products_async_response_submitted.py +2 -2
  171. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/get_products_async_response_working.py +4 -4
  172. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/get_products_request.py +11 -5
  173. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/get_products_response.py +5 -5
  174. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/list_creative_formats_request.py +9 -9
  175. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/list_creative_formats_response.py +5 -5
  176. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/list_creatives_request.py +23 -23
  177. adcp-3.2.0/src/adcp/types/generated_poc/media_buy/list_creatives_response.py +213 -0
  178. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/package_request.py +8 -8
  179. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/package_update.py +16 -16
  180. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/provide_performance_feedback_request.py +19 -19
  181. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/provide_performance_feedback_response.py +6 -6
  182. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/sync_creatives_async_response_input_required.py +5 -5
  183. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/sync_creatives_async_response_submitted.py +1 -1
  184. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/sync_creatives_async_response_working.py +7 -7
  185. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/sync_creatives_request.py +14 -8
  186. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/sync_creatives_response.py +33 -29
  187. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/update_media_buy_async_response_input_required.py +4 -4
  188. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/update_media_buy_async_response_submitted.py +1 -1
  189. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/update_media_buy_async_response_working.py +5 -5
  190. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/update_media_buy_request.py +14 -14
  191. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/update_media_buy_response.py +7 -7
  192. adcp-3.2.0/src/adcp/types/generated_poc/pricing_options/cpc_option.py +55 -0
  193. adcp-3.2.0/src/adcp/types/generated_poc/pricing_options/cpcv_option.py +57 -0
  194. adcp-3.2.0/src/adcp/types/generated_poc/pricing_options/cpm_option.py +55 -0
  195. adcp-3.2.0/src/adcp/types/generated_poc/pricing_options/cpp_option.py +74 -0
  196. adcp-3.2.0/src/adcp/types/generated_poc/pricing_options/cpv_option.py +83 -0
  197. adcp-3.2.0/src/adcp/types/generated_poc/pricing_options/flat_rate_option.py +86 -0
  198. adcp-3.2.0/src/adcp/types/generated_poc/pricing_options/price_guidance.py +26 -0
  199. adcp-3.2.0/src/adcp/types/generated_poc/pricing_options/vcpm_option.py +57 -0
  200. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/property/base_property_source.py +15 -15
  201. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/property/create_property_list_request.py +4 -4
  202. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/property/create_property_list_response.py +3 -3
  203. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/property/delete_property_list_request.py +2 -2
  204. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/property/delete_property_list_response.py +3 -3
  205. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/property/feature_requirement.py +8 -8
  206. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/property/get_property_list_request.py +5 -5
  207. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/property/get_property_list_response.py +11 -11
  208. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/property/list_property_lists_request.py +5 -5
  209. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/property/list_property_lists_response.py +8 -8
  210. adcp-3.2.0/src/adcp/types/generated_poc/property/property_error.py +33 -0
  211. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/property/property_feature.py +4 -4
  212. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/property/property_feature_definition.py +18 -18
  213. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/property/property_list.py +11 -11
  214. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/property/property_list_changed_webhook.py +11 -11
  215. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/property/property_list_filters.py +7 -7
  216. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/property/update_property_list_request.py +8 -8
  217. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/property/update_property_list_response.py +2 -2
  218. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/protocol/get_adcp_capabilities_request.py +8 -6
  219. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/protocol/get_adcp_capabilities_response.py +59 -58
  220. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/signals/activate_signal_request.py +3 -3
  221. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/signals/activate_signal_response.py +6 -6
  222. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/signals/get_signals_request.py +8 -8
  223. adcp-3.2.0/src/adcp/types/generated_poc/signals/get_signals_response.py +58 -0
  224. adcp-3.2.0/src/adcp/types/generated_poc/sponsored_intelligence/si_capabilities.py +117 -0
  225. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/sponsored_intelligence/si_get_offering_request.py +4 -4
  226. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/sponsored_intelligence/si_get_offering_response.py +23 -23
  227. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/sponsored_intelligence/si_identity.py +16 -16
  228. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/sponsored_intelligence/si_initiate_session_request.py +5 -5
  229. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/sponsored_intelligence/si_initiate_session_response.py +7 -7
  230. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/sponsored_intelligence/si_send_message_request.py +11 -11
  231. adcp-3.2.0/src/adcp/types/generated_poc/sponsored_intelligence/si_send_message_response.py +115 -0
  232. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/sponsored_intelligence/si_terminate_session_request.py +17 -17
  233. adcp-3.2.0/src/adcp/types/generated_poc/sponsored_intelligence/si_terminate_session_response.py +54 -0
  234. adcp-3.2.0/src/adcp/types/generated_poc/sponsored_intelligence/si_ui_element.py +30 -0
  235. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/utils/format_assets.py +32 -32
  236. {adcp-3.1.0 → adcp-3.2.0/src/adcp.egg-info}/PKG-INFO +10 -5
  237. {adcp-3.1.0 → adcp-3.2.0}/src/adcp.egg-info/SOURCES.txt +8 -4
  238. {adcp-3.1.0 → adcp-3.2.0}/tests/test_cli.py +11 -28
  239. {adcp-3.1.0 → adcp-3.2.0}/tests/test_client.py +2 -2
  240. {adcp-3.1.0 → adcp-3.2.0}/tests/test_format_assets.py +47 -59
  241. {adcp-3.1.0 → adcp-3.2.0}/tests/test_preview_html.py +27 -17
  242. {adcp-3.1.0 → adcp-3.2.0}/tests/test_public_api.py +1 -1
  243. {adcp-3.1.0 → adcp-3.2.0}/tests/test_response_str.py +12 -14
  244. {adcp-3.1.0 → adcp-3.2.0}/tests/test_server_framework.py +5 -9
  245. {adcp-3.1.0 → adcp-3.2.0}/tests/test_simple_api.py +1 -1
  246. {adcp-3.1.0 → adcp-3.2.0}/tests/test_version_interop.py +11 -4
  247. adcp-3.1.0/src/adcp/ADCP_VERSION +0 -1
  248. adcp-3.1.0/src/adcp/types/generated_poc/adagents.py +0 -504
  249. adcp-3.1.0/src/adcp/types/generated_poc/content_standards/artifact.py +0 -208
  250. adcp-3.1.0/src/adcp/types/generated_poc/content_standards/artifact_webhook_payload.py +0 -64
  251. adcp-3.1.0/src/adcp/types/generated_poc/content_standards/calibrate_content_response.py +0 -74
  252. adcp-3.1.0/src/adcp/types/generated_poc/content_standards/get_media_buy_artifacts_request.py +0 -64
  253. adcp-3.1.0/src/adcp/types/generated_poc/content_standards/get_media_buy_artifacts_response.py +0 -117
  254. adcp-3.1.0/src/adcp/types/generated_poc/content_standards/validate_content_delivery_request.py +0 -59
  255. adcp-3.1.0/src/adcp/types/generated_poc/core/assets/audio_asset.py +0 -26
  256. adcp-3.1.0/src/adcp/types/generated_poc/core/assets/daast_asset.py +0 -71
  257. adcp-3.1.0/src/adcp/types/generated_poc/core/assets/image_asset.py +0 -23
  258. adcp-3.1.0/src/adcp/types/generated_poc/core/assets/vast_asset.py +0 -73
  259. adcp-3.1.0/src/adcp/types/generated_poc/core/assets/video_asset.py +0 -28
  260. adcp-3.1.0/src/adcp/types/generated_poc/core/brand_manifest.py +0 -264
  261. adcp-3.1.0/src/adcp/types/generated_poc/core/creative_filters.py +0 -76
  262. adcp-3.1.0/src/adcp/types/generated_poc/core/delivery_metrics.py +0 -111
  263. adcp-3.1.0/src/adcp/types/generated_poc/core/format.py +0 -348
  264. adcp-3.1.0/src/adcp/types/generated_poc/core/performance_feedback.py +0 -78
  265. adcp-3.1.0/src/adcp/types/generated_poc/core/sub_asset.py +0 -65
  266. adcp-3.1.0/src/adcp/types/generated_poc/enums/asset_content_type.py +0 -23
  267. adcp-3.1.0/src/adcp/types/generated_poc/enums/available_metric.py +0 -19
  268. adcp-3.1.0/src/adcp/types/generated_poc/enums/channels.py +0 -29
  269. adcp-3.1.0/src/adcp/types/generated_poc/enums/daast_tracking_event.py +0 -21
  270. adcp-3.1.0/src/adcp/types/generated_poc/enums/identifier_types.py +0 -29
  271. adcp-3.1.0/src/adcp/types/generated_poc/enums/metric_type.py +0 -18
  272. adcp-3.1.0/src/adcp/types/generated_poc/enums/postal_system.py +0 -19
  273. adcp-3.1.0/src/adcp/types/generated_poc/enums/property_type.py +0 -18
  274. adcp-3.1.0/src/adcp/types/generated_poc/enums/task_status.py +0 -19
  275. adcp-3.1.0/src/adcp/types/generated_poc/enums/task_type.py +0 -21
  276. adcp-3.1.0/src/adcp/types/generated_poc/enums/vast_tracking_event.py +0 -26
  277. adcp-3.1.0/src/adcp/types/generated_poc/media_buy/list_authorized_properties_request.py +0 -38
  278. adcp-3.1.0/src/adcp/types/generated_poc/media_buy/list_authorized_properties_response.py +0 -84
  279. adcp-3.1.0/src/adcp/types/generated_poc/media_buy/list_creatives_response.py +0 -209
  280. adcp-3.1.0/src/adcp/types/generated_poc/pricing_options/cpc_option.py +0 -68
  281. adcp-3.1.0/src/adcp/types/generated_poc/pricing_options/cpcv_option.py +0 -70
  282. adcp-3.1.0/src/adcp/types/generated_poc/pricing_options/cpm_option.py +0 -62
  283. adcp-3.1.0/src/adcp/types/generated_poc/pricing_options/cpp_option.py +0 -87
  284. adcp-3.1.0/src/adcp/types/generated_poc/pricing_options/cpv_option.py +0 -96
  285. adcp-3.1.0/src/adcp/types/generated_poc/pricing_options/flat_rate_option.py +0 -99
  286. adcp-3.1.0/src/adcp/types/generated_poc/pricing_options/vcpm_option.py +0 -70
  287. adcp-3.1.0/src/adcp/types/generated_poc/property/property_error.py +0 -33
  288. adcp-3.1.0/src/adcp/types/generated_poc/protocols/__init__.py +0 -3
  289. adcp-3.1.0/src/adcp/types/generated_poc/protocols/adcp_extension.py +0 -50
  290. adcp-3.1.0/src/adcp/types/generated_poc/signals/get_signals_response.py +0 -58
  291. adcp-3.1.0/src/adcp/types/generated_poc/sponsored_intelligence/si_capabilities.py +0 -102
  292. adcp-3.1.0/src/adcp/types/generated_poc/sponsored_intelligence/si_send_message_response.py +0 -101
  293. adcp-3.1.0/src/adcp/types/generated_poc/sponsored_intelligence/si_terminate_session_response.py +0 -54
  294. adcp-3.1.0/src/adcp/types/generated_poc/sponsored_intelligence/si_ui_element.py +0 -30
  295. {adcp-3.1.0 → adcp-3.2.0}/LICENSE +0 -0
  296. {adcp-3.1.0 → adcp-3.2.0}/MANIFEST.in +0 -0
  297. {adcp-3.1.0 → adcp-3.2.0}/setup.cfg +0 -0
  298. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/config.py +0 -0
  299. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/exceptions.py +0 -0
  300. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/protocols/__init__.py +0 -0
  301. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/py.typed +0 -0
  302. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/server/__init__.py +0 -0
  303. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/testing/__init__.py +0 -0
  304. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/testing/test_helpers.py +0 -0
  305. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/_ergonomic.py +0 -0
  306. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/aliases.py +0 -0
  307. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/coercion.py +0 -0
  308. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/core.py +0 -0
  309. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/__init__.py +0 -0
  310. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/content_standards/__init__.py +0 -0
  311. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/__init__.py +0 -0
  312. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/core/assets/__init__.py +0 -0
  313. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/creative/__init__.py +0 -0
  314. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/enums/__init__.py +0 -0
  315. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/extensions/__init__.py +0 -0
  316. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/media_buy/__init__.py +0 -0
  317. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/pricing_options/__init__.py +0 -0
  318. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/property/__init__.py +0 -0
  319. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/protocol/__init__.py +0 -0
  320. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/signals/__init__.py +0 -0
  321. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/types/generated_poc/sponsored_intelligence/__init__.py +0 -0
  322. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/utils/__init__.py +0 -0
  323. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/utils/operation_id.py +0 -0
  324. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/utils/preview_cache.py +0 -0
  325. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/utils/response_parser.py +0 -0
  326. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/validation.py +0 -0
  327. {adcp-3.1.0 → adcp-3.2.0}/src/adcp/webhooks.py +0 -0
  328. {adcp-3.1.0 → adcp-3.2.0}/src/adcp.egg-info/dependency_links.txt +0 -0
  329. {adcp-3.1.0 → adcp-3.2.0}/src/adcp.egg-info/entry_points.txt +0 -0
  330. {adcp-3.1.0 → adcp-3.2.0}/src/adcp.egg-info/requires.txt +0 -0
  331. {adcp-3.1.0 → adcp-3.2.0}/src/adcp.egg-info/top_level.txt +0 -0
  332. {adcp-3.1.0 → adcp-3.2.0}/tests/test_adagents.py +0 -0
  333. {adcp-3.1.0 → adcp-3.2.0}/tests/test_code_generation.py +0 -0
  334. {adcp-3.1.0 → adcp-3.2.0}/tests/test_discriminated_unions.py +0 -0
  335. {adcp-3.1.0 → adcp-3.2.0}/tests/test_format_id_validation.py +0 -0
  336. {adcp-3.1.0 → adcp-3.2.0}/tests/test_helpers.py +0 -0
  337. {adcp-3.1.0 → adcp-3.2.0}/tests/test_protocols.py +0 -0
  338. {adcp-3.1.0 → adcp-3.2.0}/tests/test_response_parser.py +0 -0
  339. {adcp-3.1.0 → adcp-3.2.0}/tests/test_type_aliases.py +0 -0
  340. {adcp-3.1.0 → adcp-3.2.0}/tests/test_type_coercion.py +0 -0
  341. {adcp-3.1.0 → adcp-3.2.0}/tests/test_webhook_handling.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: adcp
3
- Version: 3.1.0
3
+ Version: 3.2.0
4
4
  Summary: Official Python client for the Ad Context Protocol (AdCP)
5
5
  Author-email: AdCP Community <maintainers@adcontextprotocol.org>
6
6
  License: Apache-2.0
@@ -511,8 +511,11 @@ All AdCP tools with full type safety:
511
511
  - `preview_creative()` - Preview creative before building
512
512
  - `build_creative()` - Generate production-ready creative assets
513
513
 
514
+ **Discovery & Accounts:**
515
+ - `get_adcp_capabilities()` - Discover agent capabilities and authorized publishers
516
+ - `list_accounts()` - List billing accounts
517
+
514
518
  **Audience & Targeting:**
515
- - `list_authorized_properties()` - Get authorized properties
516
519
  - `get_signals()` - Get audience signals
517
520
  - `activate_signal()` - Activate audience signals
518
521
  - `provide_performance_feedback()` - Send performance feedback
@@ -760,12 +763,14 @@ Discover which publishers have authorized your agent using two approaches:
760
763
 
761
764
  **1. "Push" Approach** - Ask the agent (recommended, fastest):
762
765
  ```python
763
- from adcp import ADCPClient
766
+ from adcp import ADCPClient, GetAdcpCapabilitiesRequest
764
767
 
765
768
  async with ADCPClient(agent_config) as client:
766
769
  # Single API call to agent
767
- response = await client.simple.list_authorized_properties()
768
- print(f"Authorized for: {response.publisher_domains}")
770
+ result = await client.get_adcp_capabilities(GetAdcpCapabilitiesRequest())
771
+ if result.success and result.data.media_buy:
772
+ portfolio = result.data.media_buy.portfolio
773
+ print(f"Authorized for: {portfolio.publisher_domains}")
769
774
  ```
770
775
 
771
776
  **2. "Pull" Approach** - Check publisher adagents.json files (when you need property details):
@@ -470,8 +470,11 @@ All AdCP tools with full type safety:
470
470
  - `preview_creative()` - Preview creative before building
471
471
  - `build_creative()` - Generate production-ready creative assets
472
472
 
473
+ **Discovery & Accounts:**
474
+ - `get_adcp_capabilities()` - Discover agent capabilities and authorized publishers
475
+ - `list_accounts()` - List billing accounts
476
+
473
477
  **Audience & Targeting:**
474
- - `list_authorized_properties()` - Get authorized properties
475
478
  - `get_signals()` - Get audience signals
476
479
  - `activate_signal()` - Activate audience signals
477
480
  - `provide_performance_feedback()` - Send performance feedback
@@ -719,12 +722,14 @@ Discover which publishers have authorized your agent using two approaches:
719
722
 
720
723
  **1. "Push" Approach** - Ask the agent (recommended, fastest):
721
724
  ```python
722
- from adcp import ADCPClient
725
+ from adcp import ADCPClient, GetAdcpCapabilitiesRequest
723
726
 
724
727
  async with ADCPClient(agent_config) as client:
725
728
  # Single API call to agent
726
- response = await client.simple.list_authorized_properties()
727
- print(f"Authorized for: {response.publisher_domains}")
729
+ result = await client.get_adcp_capabilities(GetAdcpCapabilitiesRequest())
730
+ if result.success and result.data.media_buy:
731
+ portfolio = result.data.media_buy.portfolio
732
+ print(f"Authorized for: {portfolio.publisher_domains}")
728
733
  ```
729
734
 
730
735
  **2. "Pull" Approach** - Check publisher adagents.json files (when you need property details):
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "adcp"
7
- version = "3.1.0"
7
+ version = "3.2.0"
8
8
  description = "Official Python client for the Ad Context Protocol (AdCP)"
9
9
  authors = [
10
10
  {name = "AdCP Community", email = "maintainers@adcontextprotocol.org"}
@@ -0,0 +1 @@
1
+ 3.0.0-beta.2
@@ -94,8 +94,8 @@ from adcp.types import (
94
94
  GetProductsResponse,
95
95
  GetSignalsRequest,
96
96
  GetSignalsResponse,
97
- ListAuthorizedPropertiesRequest,
98
- ListAuthorizedPropertiesResponse,
97
+ ListAccountsRequest,
98
+ ListAccountsResponse,
99
99
  ListCreativeFormatsRequest,
100
100
  ListCreativeFormatsResponse,
101
101
  ListCreativesRequest,
@@ -197,7 +197,7 @@ from adcp.webhooks import (
197
197
  get_adcp_signed_headers_for_webhook,
198
198
  )
199
199
 
200
- __version__ = "3.1.0"
200
+ __version__ = "3.2.0"
201
201
 
202
202
 
203
203
  def get_adcp_version() -> str:
@@ -263,8 +263,8 @@ __all__ = [
263
263
  "GetSignalsRequest",
264
264
  "GetSignalsResponse",
265
265
  "SignalFilters",
266
- "ListAuthorizedPropertiesRequest",
267
- "ListAuthorizedPropertiesResponse",
266
+ "ListAccountsRequest",
267
+ "ListAccountsResponse",
268
268
  "ProvidePerformanceFeedbackRequest",
269
269
  "ProvidePerformanceFeedbackResponse",
270
270
  "Error",
@@ -193,9 +193,9 @@ def _get_dispatch_table() -> dict[str, tuple[str, type | None]]:
193
193
  "create_media_buy": ("create_media_buy", gen.CreateMediaBuyRequest),
194
194
  "update_media_buy": ("update_media_buy", gen.UpdateMediaBuyRequest),
195
195
  "get_media_buy_delivery": ("get_media_buy_delivery", gen.GetMediaBuyDeliveryRequest),
196
- "list_authorized_properties": (
197
- "list_authorized_properties",
198
- gen.ListAuthorizedPropertiesRequest,
196
+ "list_accounts": (
197
+ "list_accounts",
198
+ gen.ListAccountsRequest,
199
199
  ),
200
200
  # Signals
201
201
  "get_signals": ("get_signals", gen.GetSignalsRequest),
@@ -491,7 +491,7 @@ def main() -> None:
491
491
  print(" adcp https://agent.example.com list_tools")
492
492
  print("\nV3 Protocol Examples:")
493
493
  print(" adcp myagent get_adcp_capabilities")
494
- print(" adcp cs-agent calibrate_content '{\"content_standards_id\":\"cs-123\"}'")
494
+ print(' adcp cs-agent calibrate_content \'{"content_standards_id":"cs-123"}\'')
495
495
  print(" adcp si-agent si_get_offering")
496
496
  print(" adcp gov-agent list_property_lists")
497
497
  sys.exit(0)
@@ -330,9 +330,7 @@ async def fetch_adagents(
330
330
  for depth in range(MAX_REDIRECT_DEPTH + 1):
331
331
  # Check for redirect loop
332
332
  if url in visited_urls:
333
- raise AdagentsValidationError(
334
- f"Circular redirect detected: {url} already visited"
335
- )
333
+ raise AdagentsValidationError(f"Circular redirect detected: {url} already visited")
336
334
  visited_urls.add(url)
337
335
 
338
336
  data = await _fetch_adagents_url(url, timeout, user_agent, client)
@@ -427,9 +425,7 @@ async def _fetch_adagents_url(
427
425
  try:
428
426
  validate_adagents(data)
429
427
  except ValidationError as e:
430
- raise AdagentsValidationError(
431
- f"Invalid adagents.json structure: {e}"
432
- ) from e
428
+ raise AdagentsValidationError(f"Invalid adagents.json structure: {e}") from e
433
429
  elif "authoritative_location" not in data:
434
430
  # Neither authorized_agents nor authoritative_location
435
431
  raise AdagentsValidationError(
@@ -693,8 +689,8 @@ async def fetch_agent_authorizations(
693
689
  properties your agent can access.
694
690
 
695
691
  This is the "pull" approach - you query publishers to see if they've authorized you.
696
- For the "push" approach where the agent tells you what it's authorized for,
697
- use the agent's list_authorized_properties endpoint via ADCPClient.
692
+ For the "push" approach where the agent tells you what billing accounts you can use,
693
+ use the agent's list_accounts endpoint via ADCPClient.
698
694
 
699
695
  Args:
700
696
  agent_url: URL of your sales agent
@@ -718,7 +714,7 @@ async def fetch_agent_authorizations(
718
714
  ... print(f" Tags: {ctx.property_tags}")
719
715
 
720
716
  See Also:
721
- ADCPClient.list_authorized_properties: "Push" approach using the agent's API
717
+ ADCPClient.list_accounts: "Push" approach using the agent's API to list billing accounts
722
718
 
723
719
  Notes:
724
720
  - Silently skips domains where adagents.json is not found or invalid
@@ -32,8 +32,8 @@ from adcp.types import (
32
32
  GetProductsResponse,
33
33
  GetSignalsRequest,
34
34
  GetSignalsResponse,
35
- ListAuthorizedPropertiesRequest,
36
- ListAuthorizedPropertiesResponse,
35
+ ListAccountsRequest,
36
+ ListAccountsResponse,
37
37
  ListCreativeFormatsRequest,
38
38
  ListCreativeFormatsResponse,
39
39
  ListCreativesRequest,
@@ -525,18 +525,20 @@ class ADCPClient:
525
525
 
526
526
  return self.adapter._parse_response(raw_result, GetMediaBuyDeliveryResponse)
527
527
 
528
- async def list_authorized_properties(
528
+ async def list_accounts(
529
529
  self,
530
- request: ListAuthorizedPropertiesRequest,
531
- ) -> TaskResult[ListAuthorizedPropertiesResponse]:
530
+ request: ListAccountsRequest,
531
+ ) -> TaskResult[ListAccountsResponse]:
532
532
  """
533
- List Authorized Properties.
533
+ List Accounts.
534
+
535
+ Lists billing accounts accessible to the authenticated agent.
534
536
 
535
537
  Args:
536
538
  request: Request parameters
537
539
 
538
540
  Returns:
539
- TaskResult containing ListAuthorizedPropertiesResponse
541
+ TaskResult containing ListAccountsResponse
540
542
  """
541
543
  operation_id = create_operation_id()
542
544
  params = request.model_dump(exclude_none=True)
@@ -546,25 +548,25 @@ class ADCPClient:
546
548
  type=ActivityType.PROTOCOL_REQUEST,
547
549
  operation_id=operation_id,
548
550
  agent_id=self.agent_config.id,
549
- task_type="list_authorized_properties",
551
+ task_type="list_accounts",
550
552
  timestamp=datetime.now(timezone.utc).isoformat(),
551
553
  )
552
554
  )
553
555
 
554
- raw_result = await self.adapter.list_authorized_properties(params)
556
+ raw_result = await self.adapter.list_accounts(params)
555
557
 
556
558
  self._emit_activity(
557
559
  Activity(
558
560
  type=ActivityType.PROTOCOL_RESPONSE,
559
561
  operation_id=operation_id,
560
562
  agent_id=self.agent_config.id,
561
- task_type="list_authorized_properties",
563
+ task_type="list_accounts",
562
564
  status=raw_result.status,
563
565
  timestamp=datetime.now(timezone.utc).isoformat(),
564
566
  )
565
567
  )
566
568
 
567
- return self.adapter._parse_response(raw_result, ListAuthorizedPropertiesResponse)
569
+ return self.adapter._parse_response(raw_result, ListAccountsResponse)
568
570
 
569
571
  async def get_signals(
570
572
  self,
@@ -1759,7 +1761,7 @@ class ADCPClient:
1759
1761
  "sync_creatives": SyncCreativesResponse, # Union type
1760
1762
  "list_creatives": ListCreativesResponse,
1761
1763
  "get_media_buy_delivery": GetMediaBuyDeliveryResponse,
1762
- "list_authorized_properties": ListAuthorizedPropertiesResponse,
1764
+ "list_accounts": ListAccountsResponse,
1763
1765
  "get_signals": GetSignalsResponse,
1764
1766
  "activate_signal": ActivateSignalResponse, # Union type
1765
1767
  "provide_performance_feedback": ProvidePerformanceFeedbackResponse,
@@ -437,9 +437,9 @@ class A2AAdapter(ProtocolAdapter):
437
437
  """Get media buy delivery."""
438
438
  return await self._call_a2a_tool("get_media_buy_delivery", params)
439
439
 
440
- async def list_authorized_properties(self, params: dict[str, Any]) -> TaskResult[Any]:
441
- """List authorized properties."""
442
- return await self._call_a2a_tool("list_authorized_properties", params)
440
+ async def list_accounts(self, params: dict[str, Any]) -> TaskResult[Any]:
441
+ """List billing accounts accessible to the authenticated agent."""
442
+ return await self._call_a2a_tool("list_accounts", params)
443
443
 
444
444
  async def get_signals(self, params: dict[str, Any]) -> TaskResult[Any]:
445
445
  """Get signals."""
@@ -120,8 +120,8 @@ class ProtocolAdapter(ABC):
120
120
  pass
121
121
 
122
122
  @abstractmethod
123
- async def list_authorized_properties(self, params: dict[str, Any]) -> TaskResult[Any]:
124
- """List authorized properties."""
123
+ async def list_accounts(self, params: dict[str, Any]) -> TaskResult[Any]:
124
+ """List billing accounts accessible to the authenticated agent."""
125
125
  pass
126
126
 
127
127
  @abstractmethod
@@ -432,9 +432,9 @@ class MCPAdapter(ProtocolAdapter):
432
432
  """Get media buy delivery."""
433
433
  return await self._call_mcp_tool("get_media_buy_delivery", params)
434
434
 
435
- async def list_authorized_properties(self, params: dict[str, Any]) -> TaskResult[Any]:
436
- """List authorized properties."""
437
- return await self._call_mcp_tool("list_authorized_properties", params)
435
+ async def list_accounts(self, params: dict[str, Any]) -> TaskResult[Any]:
436
+ """List billing accounts accessible to the authenticated agent."""
437
+ return await self._call_mcp_tool("list_accounts", params)
438
438
 
439
439
  async def get_signals(self, params: dict[str, Any]) -> TaskResult[Any]:
440
440
  """Get signals."""
@@ -74,9 +74,7 @@ class ADCPHandler(ABC):
74
74
  # Core Catalog Operations
75
75
  # ========================================================================
76
76
 
77
- async def get_products(
78
- self, params: dict[str, Any], context: ToolContext | None = None
79
- ) -> Any:
77
+ async def get_products(self, params: dict[str, Any], context: ToolContext | None = None) -> Any:
80
78
  """Get advertising products.
81
79
 
82
80
  Override this to provide product catalog functionality.
@@ -92,14 +90,14 @@ class ADCPHandler(ABC):
92
90
  """
93
91
  return not_supported("list_creative_formats is not implemented by this agent")
94
92
 
95
- async def list_authorized_properties(
93
+ async def list_accounts(
96
94
  self, params: dict[str, Any], context: ToolContext | None = None
97
95
  ) -> Any:
98
- """List authorized properties.
96
+ """List billing accounts accessible to the authenticated agent.
99
97
 
100
- Override this to provide property authorization information.
98
+ Override this to provide account information.
101
99
  """
102
- return not_supported("list_authorized_properties is not implemented by this agent")
100
+ return not_supported("list_accounts is not implemented by this agent")
103
101
 
104
102
  # ========================================================================
105
103
  # Creative Operations
@@ -167,9 +165,7 @@ class ADCPHandler(ABC):
167
165
  # Signal Operations
168
166
  # ========================================================================
169
167
 
170
- async def get_signals(
171
- self, params: dict[str, Any], context: ToolContext | None = None
172
- ) -> Any:
168
+ async def get_signals(self, params: dict[str, Any], context: ToolContext | None = None) -> Any:
173
169
  """Get available signals.
174
170
 
175
171
  Override this to provide signal catalog.
@@ -393,41 +393,31 @@ class ContentStandardsHandler(ADCPHandler):
393
393
  self, params: dict[str, Any], context: ToolContext | None = None
394
394
  ) -> NotImplementedResponse:
395
395
  """Not supported by Content Standards agents."""
396
- return not_supported(
397
- "list_creative_formats is not supported by Content Standards agents."
398
- )
396
+ return not_supported("list_creative_formats is not supported by Content Standards agents.")
399
397
 
400
- async def list_authorized_properties(
398
+ async def list_accounts(
401
399
  self, params: dict[str, Any], context: ToolContext | None = None
402
400
  ) -> NotImplementedResponse:
403
401
  """Not supported by Content Standards agents."""
404
- return not_supported(
405
- "list_authorized_properties is not supported by Content Standards agents."
406
- )
402
+ return not_supported("list_accounts is not supported by Content Standards agents.")
407
403
 
408
404
  async def sync_creatives(
409
405
  self, params: dict[str, Any], context: ToolContext | None = None
410
406
  ) -> NotImplementedResponse:
411
407
  """Not supported by Content Standards agents."""
412
- return not_supported(
413
- "sync_creatives is not supported by Content Standards agents."
414
- )
408
+ return not_supported("sync_creatives is not supported by Content Standards agents.")
415
409
 
416
410
  async def list_creatives(
417
411
  self, params: dict[str, Any], context: ToolContext | None = None
418
412
  ) -> NotImplementedResponse:
419
413
  """Not supported by Content Standards agents."""
420
- return not_supported(
421
- "list_creatives is not supported by Content Standards agents."
422
- )
414
+ return not_supported("list_creatives is not supported by Content Standards agents.")
423
415
 
424
416
  async def build_creative(
425
417
  self, params: dict[str, Any], context: ToolContext | None = None
426
418
  ) -> NotImplementedResponse:
427
419
  """Not supported by Content Standards agents."""
428
- return not_supported(
429
- "build_creative is not supported by Content Standards agents."
430
- )
420
+ return not_supported("build_creative is not supported by Content Standards agents.")
431
421
 
432
422
  async def create_media_buy(
433
423
  self, params: dict[str, Any], context: ToolContext | None = None
@@ -442,33 +432,25 @@ class ContentStandardsHandler(ADCPHandler):
442
432
  self, params: dict[str, Any], context: ToolContext | None = None
443
433
  ) -> NotImplementedResponse:
444
434
  """Not supported by Content Standards agents."""
445
- return not_supported(
446
- "update_media_buy is not supported by Content Standards agents."
447
- )
435
+ return not_supported("update_media_buy is not supported by Content Standards agents.")
448
436
 
449
437
  async def get_media_buy_delivery(
450
438
  self, params: dict[str, Any], context: ToolContext | None = None
451
439
  ) -> NotImplementedResponse:
452
440
  """Not supported by Content Standards agents."""
453
- return not_supported(
454
- "get_media_buy_delivery is not supported by Content Standards agents."
455
- )
441
+ return not_supported("get_media_buy_delivery is not supported by Content Standards agents.")
456
442
 
457
443
  async def get_signals(
458
444
  self, params: dict[str, Any], context: ToolContext | None = None
459
445
  ) -> NotImplementedResponse:
460
446
  """Not supported by Content Standards agents."""
461
- return not_supported(
462
- "get_signals is not supported by Content Standards agents."
463
- )
447
+ return not_supported("get_signals is not supported by Content Standards agents.")
464
448
 
465
449
  async def activate_signal(
466
450
  self, params: dict[str, Any], context: ToolContext | None = None
467
451
  ) -> NotImplementedResponse:
468
452
  """Not supported by Content Standards agents."""
469
- return not_supported(
470
- "activate_signal is not supported by Content Standards agents."
471
- )
453
+ return not_supported("activate_signal is not supported by Content Standards agents.")
472
454
 
473
455
  async def provide_performance_feedback(
474
456
  self, params: dict[str, Any], context: ToolContext | None = None
@@ -495,25 +477,19 @@ class ContentStandardsHandler(ADCPHandler):
495
477
  self, params: dict[str, Any], context: ToolContext | None = None
496
478
  ) -> NotImplementedResponse:
497
479
  """Not supported by Content Standards agents."""
498
- return not_supported(
499
- "si_initiate_session is not supported by Content Standards agents."
500
- )
480
+ return not_supported("si_initiate_session is not supported by Content Standards agents.")
501
481
 
502
482
  async def si_send_message(
503
483
  self, params: dict[str, Any], context: ToolContext | None = None
504
484
  ) -> NotImplementedResponse:
505
485
  """Not supported by Content Standards agents."""
506
- return not_supported(
507
- "si_send_message is not supported by Content Standards agents."
508
- )
486
+ return not_supported("si_send_message is not supported by Content Standards agents.")
509
487
 
510
488
  async def si_terminate_session(
511
489
  self, params: dict[str, Any], context: ToolContext | None = None
512
490
  ) -> NotImplementedResponse:
513
491
  """Not supported by Content Standards agents."""
514
- return not_supported(
515
- "si_terminate_session is not supported by Content Standards agents."
516
- )
492
+ return not_supported("si_terminate_session is not supported by Content Standards agents.")
517
493
 
518
494
  # ========================================================================
519
495
  # V3 Governance (Property Lists) - Not supported
@@ -532,30 +508,22 @@ class ContentStandardsHandler(ADCPHandler):
532
508
  self, params: dict[str, Any], context: ToolContext | None = None
533
509
  ) -> NotImplementedResponse:
534
510
  """Not supported by Content Standards agents."""
535
- return not_supported(
536
- "get_property_list is not supported by Content Standards agents."
537
- )
511
+ return not_supported("get_property_list is not supported by Content Standards agents.")
538
512
 
539
513
  async def list_property_lists(
540
514
  self, params: dict[str, Any], context: ToolContext | None = None
541
515
  ) -> NotImplementedResponse:
542
516
  """Not supported by Content Standards agents."""
543
- return not_supported(
544
- "list_property_lists is not supported by Content Standards agents."
545
- )
517
+ return not_supported("list_property_lists is not supported by Content Standards agents.")
546
518
 
547
519
  async def update_property_list(
548
520
  self, params: dict[str, Any], context: ToolContext | None = None
549
521
  ) -> NotImplementedResponse:
550
522
  """Not supported by Content Standards agents."""
551
- return not_supported(
552
- "update_property_list is not supported by Content Standards agents."
553
- )
523
+ return not_supported("update_property_list is not supported by Content Standards agents.")
554
524
 
555
525
  async def delete_property_list(
556
526
  self, params: dict[str, Any], context: ToolContext | None = None
557
527
  ) -> NotImplementedResponse:
558
528
  """Not supported by Content Standards agents."""
559
- return not_supported(
560
- "delete_property_list is not supported by Content Standards agents."
561
- )
529
+ return not_supported("delete_property_list is not supported by Content Standards agents.")