@adcp/client 4.22.1 → 4.23.0

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 (65) hide show
  1. package/dist/lib/index.d.ts +1 -1
  2. package/dist/lib/index.d.ts.map +1 -1
  3. package/dist/lib/index.js.map +1 -1
  4. package/dist/lib/testing/compliance/comply.d.ts +22 -5
  5. package/dist/lib/testing/compliance/comply.d.ts.map +1 -1
  6. package/dist/lib/testing/compliance/comply.js +242 -276
  7. package/dist/lib/testing/compliance/comply.js.map +1 -1
  8. package/dist/lib/testing/compliance/index.d.ts +1 -0
  9. package/dist/lib/testing/compliance/index.d.ts.map +1 -1
  10. package/dist/lib/testing/compliance/index.js +6 -1
  11. package/dist/lib/testing/compliance/index.js.map +1 -1
  12. package/dist/lib/testing/compliance/platform-storyboards.d.ts +44 -0
  13. package/dist/lib/testing/compliance/platform-storyboards.d.ts.map +1 -0
  14. package/dist/lib/testing/compliance/platform-storyboards.js +230 -0
  15. package/dist/lib/testing/compliance/platform-storyboards.js.map +1 -0
  16. package/dist/lib/testing/compliance/storyboard-tracks.d.ts +2 -9
  17. package/dist/lib/testing/compliance/storyboard-tracks.d.ts.map +1 -1
  18. package/dist/lib/testing/compliance/storyboard-tracks.js +4 -44
  19. package/dist/lib/testing/compliance/storyboard-tracks.js.map +1 -1
  20. package/dist/lib/testing/index.d.ts +1 -1
  21. package/dist/lib/testing/index.d.ts.map +1 -1
  22. package/dist/lib/testing/index.js +6 -1
  23. package/dist/lib/testing/index.js.map +1 -1
  24. package/dist/lib/types/core.generated.d.ts +241 -2
  25. package/dist/lib/types/core.generated.d.ts.map +1 -1
  26. package/dist/lib/types/core.generated.js +1 -1
  27. package/dist/lib/types/schemas.generated.d.ts +3380 -3154
  28. package/dist/lib/types/schemas.generated.d.ts.map +1 -1
  29. package/dist/lib/types/schemas.generated.js +220 -115
  30. package/dist/lib/types/schemas.generated.js.map +1 -1
  31. package/dist/lib/types/tools.generated.d.ts +267 -74
  32. package/dist/lib/types/tools.generated.d.ts.map +1 -1
  33. package/dist/lib/version.d.ts +3 -3
  34. package/dist/lib/version.js +3 -3
  35. package/docs/llms.txt +46 -30
  36. package/package.json +1 -1
  37. package/storyboards/audience_sync.yaml +18 -29
  38. package/storyboards/behavioral_analysis.yaml +40 -72
  39. package/storyboards/brand_rights.yaml +172 -75
  40. package/storyboards/campaign_governance_conditions.yaml +187 -0
  41. package/storyboards/campaign_governance_delivery.yaml +231 -0
  42. package/storyboards/campaign_governance_denied.yaml +135 -0
  43. package/storyboards/capability_discovery.yaml +106 -0
  44. package/storyboards/content_standards.yaml +251 -0
  45. package/storyboards/creative_ad_server.yaml +108 -16
  46. package/storyboards/creative_lifecycle.yaml +284 -0
  47. package/storyboards/creative_sales_agent.yaml +2 -6
  48. package/storyboards/creative_template.yaml +1 -5
  49. package/storyboards/error_compliance.yaml +105 -108
  50. package/storyboards/media_buy_catalog_creative.yaml +6 -4
  51. package/storyboards/media_buy_governance_escalation.yaml +9 -5
  52. package/storyboards/media_buy_guaranteed_approval.yaml +9 -7
  53. package/storyboards/media_buy_non_guaranteed.yaml +7 -6
  54. package/storyboards/media_buy_proposal_mode.yaml +9 -8
  55. package/storyboards/media_buy_seller.yaml +153 -165
  56. package/storyboards/media_buy_state_machine.yaml +100 -99
  57. package/storyboards/property_governance.yaml +239 -0
  58. package/storyboards/schema.yaml +2 -2
  59. package/storyboards/schema_validation.yaml +58 -51
  60. package/storyboards/si_session.yaml +99 -317
  61. package/storyboards/signal_marketplace.yaml +6 -5
  62. package/storyboards/signal_owned.yaml +5 -5
  63. package/storyboards/social_platform.yaml +274 -0
  64. package/storyboards/governance_content_standards.yaml +0 -213
  65. package/storyboards/governance_property_lists.yaml +0 -372
@@ -2,383 +2,165 @@ id: si_session
2
2
  version: "1.0.0"
3
3
  title: "Sponsored intelligence session"
4
4
  category: si_session
5
- summary: "SI agent that serves offerings, manages conversational sessions, and handles purchase handoffs."
5
+ summary: "Conversational ad session on an AI platform — discover offerings, initiate a session, exchange messages, and terminate."
6
6
  track: si
7
7
  required_tools:
8
8
  - si_initiate_session
9
9
 
10
10
  narrative: |
11
- You run a sponsored intelligence platform an AI-powered conversational commerce agent
12
- that monetizes through product recommendations and purchase handoffs. A caller connects
13
- to check offering availability, initiate a conversation session, exchange messages, and
14
- optionally hand off to a transaction flow.
11
+ You run an AI platform that supports sponsored intelligence — conversational ad experiences
12
+ embedded in AI-powered search, chat, or assistant products. A buyer agent connects to
13
+ discover what SI offerings are available, initiate a session, send messages within the
14
+ conversation, and cleanly terminate when done.
15
15
 
16
- The caller starts by querying whether an offering is available. If it is, they initiate
17
- a session, send messages to explore products, and eventually terminate the session. When
18
- the user expresses purchase intent, the termination includes a handoff_transaction reason
19
- and the response may contain an acp_handoff structure with checkout details.
16
+ Sponsored intelligence is fundamentally different from display or video advertising. The
17
+ ad experience is conversational the user asks a question, the AI responds, and sponsored
18
+ content is woven into the response in a way that is transparent and relevant.
20
19
 
21
- This storyboard walks through the full SI lifecycle: availability, session management,
22
- and transaction handoff.
20
+ This storyboard covers the SI session lifecycle from the buyer's perspective: discovering
21
+ what the platform offers, starting a conversation, exchanging messages, and ending the
22
+ session.
23
23
 
24
24
  agent:
25
25
  interaction_model: si_platform
26
26
  capabilities:
27
27
  - sponsored_intelligence
28
- - conversational
29
28
  examples:
30
- - "AI shopping assistants"
31
- - "Conversational commerce platforms"
32
- - "Product recommendation engines"
29
+ - "Perplexity"
30
+ - "ChatGPT Search"
31
+ - "Arc Browser"
32
+ - "AI assistants with ad support"
33
33
 
34
34
  caller:
35
35
  role: buyer_agent
36
- example: "AI assistant caller"
36
+ example: "Nova Motors (advertiser)"
37
37
 
38
38
  prerequisites:
39
39
  description: |
40
- The caller needs an offering ID and identity credentials. The test uses
41
- default values (e2e-test-offering, e2e-test-principal) suitable for
42
- validating the SI protocol flow.
40
+ The caller needs brand context and campaign parameters for SI. The test kit provides
41
+ a sample brand (Nova Motors) with signal definitions suitable for conversational
42
+ ad experiences.
43
+ test_kit: "test-kits/nova-motors.yaml"
43
44
 
44
45
  phases:
45
- - id: availability
46
- title: "Offering availability"
46
+ - id: offering_discovery
47
+ title: "Discover SI offerings"
47
48
  narrative: |
48
- The caller checks whether a specific SI offering is available before initiating
49
- a session. The agent returns availability status, an optional offering token for
50
- session initiation, and metadata about the offering's capabilities.
51
-
52
- This phase also validates that the agent handles invalid offering IDs gracefully,
53
- returning unavailable rather than erroring.
49
+ Before initiating any session, the buyer discovers what sponsored intelligence
50
+ offerings the platform has available. This determines what kinds of conversational
51
+ experiences can be sponsored and at what pricing.
54
52
 
55
53
  steps:
56
- - id: get_offering
57
- title: "Check SI offering availability"
58
- requires_tool: si_get_offering
59
- narrative: |
60
- The caller queries a specific offering by ID. The agent checks inventory and
61
- returns whether the offering is available, along with an offering_token the
62
- caller uses in subsequent session initiation.
63
- task: si_get_offering
64
- stateful: false
65
- expected: |
66
- Return the offering status:
67
- - available: true or false
68
- - offering_token: opaque token for session initiation (when available)
69
- - title and description of the offering
70
- - capabilities: what modalities this offering supports
71
- - unavailable_reason: explanation when not available
72
-
73
- sample_request:
74
- offering_id: "e2e-test-offering"
75
- context: "Checking SI offering availability"
76
- identity:
77
- principal: "e2e-test-principal"
78
- device_id: "e2e-test-device"
79
-
80
- validations:
81
- - check: field_present
82
- path: "available"
83
- description: "Response includes availability status"
84
-
85
- context_outputs:
86
- - path: "offering_token"
87
- key: "offering_token"
88
-
89
- - id: get_offering_invalid
90
- title: "Check invalid offering availability"
91
- requires_tool: si_get_offering
54
+ - id: si_get_offering
55
+ title: "Get available SI offerings"
92
56
  narrative: |
93
- The caller queries a nonexistent offering ID. The agent should return
94
- available: false with an unavailable_reason, or reject the request with
95
- an error. Either response is acceptable.
57
+ The buyer calls si_get_offering to learn what conversational ad experiences
58
+ the platform supports. The response describes available offerings with pricing,
59
+ targeting options, and format specifications.
96
60
  task: si_get_offering
61
+ schema_ref: "sponsored-intelligence/si-get-offering-request.json"
62
+ response_schema_ref: "sponsored-intelligence/si-get-offering-response.json"
63
+ doc_ref: "/sponsored-intelligence/tasks/si_get_offering"
64
+ comply_scenario: si_availability
97
65
  stateful: false
98
66
  expected: |
99
- Return available: false for the invalid offering, or return an error.
100
- The agent must not return available: true for an unknown offering ID.
67
+ Return available SI offerings:
68
+ - Offering descriptions with pricing
69
+ - Supported conversation types
70
+ - Targeting and context options
71
+ - Format specifications for sponsored content
101
72
 
102
- sample_request:
103
- offering_id: "INVALID_OFFERING_ID_DOES_NOT_EXIST_12345"
104
- context: "Checking unavailable offering"
105
- identity:
106
- principal: "e2e-test-principal"
73
+ sample_request: {}
107
74
 
108
75
  validations:
109
- - check: field_value
110
- path: "available"
111
- value: false
112
- description: "Invalid offering is reported as unavailable"
76
+ - check: response_schema
77
+ description: "Response matches si-get-offering-response.json schema"
113
78
 
114
79
  - id: session_lifecycle
115
80
  title: "Session lifecycle"
116
81
  narrative: |
117
- The caller initiates a conversational session, exchanges messages, and
118
- terminates the session. This tests the core SI protocol flow: create a
119
- session, send messages within it, and cleanly shut it down.
120
-
121
- After termination, the caller verifies the session is no longer active
122
- by attempting to send a message to the terminated session.
123
-
124
- steps:
125
- - id: initiate_session
126
- title: "Initiate SI session"
127
- narrative: |
128
- The caller starts a new conversational session with an offering. The agent
129
- provisions the session and returns a session_id, an initial response message,
130
- and negotiated capabilities describing what the session supports.
131
- task: si_initiate_session
132
- stateful: true
133
- expected: |
134
- Return the session with:
135
- - session_id: unique identifier for this session
136
- - response: initial message and optional ui_elements
137
- - negotiated_capabilities: what modalities were agreed upon
138
-
139
- sample_request:
140
- offering_id: "e2e-test-offering"
141
- offering_token: "$context.offering_token"
142
- identity:
143
- principal: "e2e-test-principal"
144
- device_id: "e2e-test-device"
145
- context: "Initiating conversation about products"
146
- placement: "e2e-test-placement"
147
- supported_capabilities:
148
- modalities:
149
- conversational: true
150
- rich_media: true
151
-
152
- context_inputs:
153
- - key: "offering_token"
154
- inject_at: "offering_token"
155
-
156
- validations:
157
- - check: field_present
158
- path: "session_id"
159
- description: "Response includes a session_id"
160
-
161
- context_outputs:
162
- - path: "session_id"
163
- key: "session_id"
164
-
165
- - id: send_message_1
166
- title: "Send message: product inquiry"
167
- requires_tool: si_send_message
168
- narrative: |
169
- The caller sends a product inquiry message within the active session.
170
- The agent responds with product information and optional UI elements
171
- such as product cards or carousels.
172
- task: si_send_message
173
- stateful: true
174
- expected: |
175
- Return the message response:
176
- - session_id: matches the active session
177
- - session_status: active
178
- - response: message text and optional ui_elements
179
-
180
- sample_request:
181
- session_id: "$context.session_id"
182
- message: "What products do you have available?"
183
- metadata:
184
- test_iteration: 1
185
-
186
- context_inputs:
187
- - key: "session_id"
188
- inject_at: "session_id"
189
-
190
- validations:
191
- - check: field_present
192
- path: "session_id"
193
- description: "Response includes the session_id"
194
-
195
- - id: send_message_2
196
- title: "Send message: product details"
197
- requires_tool: si_send_message
198
- narrative: |
199
- The caller asks a follow-up question about a specific product.
200
- The agent should maintain conversational context from the previous
201
- message and respond with more detailed information.
202
- task: si_send_message
203
- stateful: true
204
- expected: |
205
- Return a contextual response continuing the conversation:
206
- - session_status: active
207
- - response: detailed product information
208
-
209
- sample_request:
210
- session_id: "$context.session_id"
211
- message: "Can you tell me more about your best seller?"
212
- metadata:
213
- test_iteration: 2
214
-
215
- context_inputs:
216
- - key: "session_id"
217
- inject_at: "session_id"
218
-
219
- validations:
220
- - check: field_present
221
- path: "session_id"
222
- description: "Response includes the session_id"
223
-
224
- - id: terminate_session
225
- title: "Terminate SI session"
226
- requires_tool: si_terminate_session
227
- narrative: |
228
- The caller ends the session with a user_exit reason. The agent
229
- confirms termination and cleans up session state.
230
- task: si_terminate_session
231
- stateful: true
232
- expected: |
233
- Confirm session termination:
234
- - session_id: matches the terminated session
235
- - terminated: true
236
-
237
- sample_request:
238
- session_id: "$context.session_id"
239
- reason: "user_exit"
240
- termination_context:
241
- summary: "Session completed successfully"
242
-
243
- context_inputs:
244
- - key: "session_id"
245
- inject_at: "session_id"
246
-
247
- validations:
248
- - check: field_present
249
- path: "terminated"
250
- description: "Response confirms termination"
251
-
252
- - id: send_to_terminated
253
- title: "Send message to terminated session (error expected)"
254
- requires_tool: si_send_message
255
- expect_error: true
256
- narrative: |
257
- The caller attempts to send a message to the terminated session.
258
- The agent should reject the message or return a terminated session
259
- status. This validates that session cleanup is enforced.
260
- task: si_send_message
261
- stateful: true
262
- expected: |
263
- Reject the message or return session_status of "terminated" or "complete".
264
- The agent must not accept new messages on a terminated session.
265
-
266
- sample_request:
267
- session_id: "$context.session_id"
268
- message: "This should fail"
269
-
270
- context_inputs:
271
- - key: "session_id"
272
- inject_at: "session_id"
273
-
274
- validations: []
275
-
276
- - id: handoff
277
- title: "Transaction handoff"
278
- narrative: |
279
- The caller initiates a session, sends a purchase-intent message, and then
280
- terminates with reason handoff_transaction. The agent may include an
281
- acp_handoff structure in the termination response containing checkout URLs,
282
- tokens, and transaction metadata.
283
-
284
- This tests the commerce integration path where conversational AI transitions
285
- to a purchase flow.
82
+ The buyer initiates a session, exchanges messages within it, and terminates
83
+ cleanly. Each session represents a single conversational ad experience the
84
+ buyer provides context and the platform weaves sponsored content into the
85
+ conversation.
286
86
 
287
87
  steps:
288
- - id: initiate_handoff_session
289
- title: "Initiate SI session (handoff flow)"
88
+ - id: si_initiate_session
89
+ title: "Start a conversation session"
290
90
  narrative: |
291
- The caller starts a new session specifically for testing the handoff flow.
292
- This is a separate session from the lifecycle phase.
91
+ The buyer initiates a new SI session with campaign context. The platform
92
+ creates a session and returns a session ID that the buyer uses for subsequent
93
+ messages.
293
94
  task: si_initiate_session
95
+ schema_ref: "sponsored-intelligence/si-initiate-session-request.json"
96
+ response_schema_ref: "sponsored-intelligence/si-initiate-session-response.json"
97
+ doc_ref: "/sponsored-intelligence/tasks/si_initiate_session"
98
+ comply_scenario: si_session_lifecycle
294
99
  stateful: true
295
100
  expected: |
296
- Return a new session with a session_id for the handoff test.
101
+ Return a new session:
102
+ - session_id: platform-assigned session identifier
103
+ - status: active
104
+ - Initial context acknowledgment
105
+ - Available interaction modes
297
106
 
298
107
  sample_request:
299
- offering_id: "e2e-test-offering"
300
- offering_token: "$context.offering_token"
301
- identity:
302
- principal: "e2e-test-principal"
303
- device_id: "e2e-test-device"
304
- context: "Initiating session for handoff test"
305
- placement: "e2e-test-placement"
306
- supported_capabilities:
307
- modalities:
308
- conversational: true
309
-
310
- context_inputs:
311
- - key: "offering_token"
312
- inject_at: "offering_token"
108
+ brand:
109
+ domain: "novamotors.example.com"
110
+ campaign_context: "Nova EV launch — targeting environmentally conscious drivers interested in electric vehicles"
313
111
 
314
112
  validations:
315
- - check: field_present
316
- path: "session_id"
317
- description: "Response includes a session_id"
113
+ - check: response_schema
114
+ description: "Response matches si-initiate-session-response.json schema"
318
115
 
319
- context_outputs:
320
- - path: "session_id"
321
- key: "handoff_session_id"
322
-
323
- - id: send_purchase_intent
324
- title: "Send purchase intent message"
325
- requires_tool: si_send_message
116
+ - id: si_send_message
117
+ title: "Exchange messages"
326
118
  narrative: |
327
- The caller sends a message expressing purchase intent. This primes the
328
- agent for a transaction handoff in the next step.
119
+ The buyer sends a message within the active session. The platform processes
120
+ the message and returns a response that may include sponsored content woven
121
+ into the conversational experience.
329
122
  task: si_send_message
123
+ schema_ref: "sponsored-intelligence/si-send-message-request.json"
124
+ response_schema_ref: "sponsored-intelligence/si-send-message-response.json"
125
+ doc_ref: "/sponsored-intelligence/tasks/si_send_message"
126
+ comply_scenario: si_session_lifecycle
330
127
  stateful: true
331
128
  expected: |
332
- Accept the purchase intent message. The agent may begin preparing
333
- transaction details in anticipation of a handoff.
129
+ Process the message and return a response:
130
+ - Message acknowledgment
131
+ - Response content (may include sponsored elements)
132
+ - Session state (active, waiting, etc.)
334
133
 
335
134
  sample_request:
336
- session_id: "$context.handoff_session_id"
337
- message: "I'd like to purchase this product. Can you set up a transaction?"
338
-
339
- context_inputs:
340
- - key: "handoff_session_id"
341
- inject_at: "session_id"
135
+ session_id: "si_nova_ev_001"
136
+ message: "What are the best electric vehicles for long road trips?"
342
137
 
343
138
  validations:
344
- - check: field_present
345
- path: "session_id"
346
- description: "Response includes the session_id"
139
+ - check: response_schema
140
+ description: "Response matches si-send-message-response.json schema"
347
141
 
348
- - id: terminate_with_handoff
349
- title: "Terminate with handoff_transaction"
350
- requires_tool: si_terminate_session
142
+ - id: si_terminate_session
143
+ title: "End the session"
351
144
  narrative: |
352
- The caller terminates the session with reason handoff_transaction and
353
- includes transaction intent metadata. The agent confirms termination and
354
- may return an acp_handoff structure with checkout details.
145
+ The buyer terminates the SI session. The platform records session metrics
146
+ and returns a summary of the conversation including any sponsored content
147
+ that was delivered.
355
148
  task: si_terminate_session
149
+ schema_ref: "sponsored-intelligence/si-terminate-session-request.json"
150
+ response_schema_ref: "sponsored-intelligence/si-terminate-session-response.json"
151
+ doc_ref: "/sponsored-intelligence/tasks/si_terminate_session"
152
+ comply_scenario: si_handoff
356
153
  stateful: true
357
154
  expected: |
358
- Confirm termination and optionally return an acp_handoff object:
359
- - terminated: true
360
- - acp_handoff (optional):
361
- - checkout_url: URL for the purchase flow
362
- - checkout_token: opaque token for the transaction
363
- - payload: additional transaction data
364
- - expires_at: when the handoff expires
365
-
366
- If the agent does not support transaction handoff, terminated: true
367
- without acp_handoff is acceptable.
155
+ Terminate the session and return a summary:
156
+ - session_id: confirms which session was terminated
157
+ - status: terminated
158
+ - Session metrics (duration, messages exchanged)
159
+ - Sponsored content delivery summary
368
160
 
369
161
  sample_request:
370
- session_id: "$context.handoff_session_id"
371
- reason: "handoff_transaction"
372
- termination_context:
373
- summary: "Terminating for handoff validation"
374
- transaction_intent:
375
- intent: "purchase"
376
-
377
- context_inputs:
378
- - key: "handoff_session_id"
379
- inject_at: "session_id"
162
+ session_id: "si_nova_ev_001"
380
163
 
381
164
  validations:
382
- - check: field_present
383
- path: "terminated"
384
- description: "Response confirms termination"
165
+ - check: response_schema
166
+ description: "Response matches si-terminate-session-response.json schema"
@@ -3,14 +3,10 @@ version: "1.0.0"
3
3
  title: "Marketplace signal agent"
4
4
  category: signal_marketplace
5
5
  summary: "Signal agent that resells third-party data provider signals with verifiable catalog provenance."
6
- platform_types:
7
- - pmax_platform
8
- - ai_ad_network
9
- - ai_platform
10
-
11
6
  track: signals
12
7
  required_tools:
13
8
  - get_signals
9
+
14
10
  narrative: |
15
11
  You operate a signal marketplace — an intermediary that aggregates audience data from
16
12
  multiple third-party providers and makes it available to buyers through a single interface.
@@ -72,6 +68,7 @@ phases:
72
68
  schema_ref: "signals/get-signals-request.json"
73
69
  response_schema_ref: "signals/get-signals-response.json"
74
70
  doc_ref: "/signals/tasks/get_signals"
71
+ comply_scenario: signals_flow
75
72
  stateful: false
76
73
  expected: |
77
74
  Return matching signals from multiple data providers. Each signal must include:
@@ -111,6 +108,7 @@ phases:
111
108
  schema_ref: "signals/get-signals-request.json"
112
109
  response_schema_ref: "signals/get-signals-response.json"
113
110
  doc_ref: "/signals/tasks/get_signals"
111
+ comply_scenario: signals_flow
114
112
  stateful: false
115
113
  expected: |
116
114
  Return the exact signals requested, with full metadata and pricing.
@@ -157,6 +155,7 @@ phases:
157
155
  schema_ref: "signals/get-signals-request.json"
158
156
  response_schema_ref: "signals/get-signals-response.json"
159
157
  doc_ref: "/signals/data-providers"
158
+ comply_scenario: signals_flow
160
159
  stateful: false
161
160
  expected: |
162
161
  Return the requested signal with verifiable provenance metadata:
@@ -201,6 +200,7 @@ phases:
201
200
  schema_ref: "signals/activate-signal-request.json"
202
201
  response_schema_ref: "signals/activate-signal-response.json"
203
202
  doc_ref: "/signals/tasks/activate_signal"
203
+ comply_scenario: signals_flow
204
204
  stateful: true
205
205
  expected: |
206
206
  Return a deployment with:
@@ -252,6 +252,7 @@ phases:
252
252
  schema_ref: "signals/activate-signal-request.json"
253
253
  response_schema_ref: "signals/activate-signal-response.json"
254
254
  doc_ref: "/signals/tasks/activate_signal"
255
+ comply_scenario: signals_flow
255
256
  stateful: true
256
257
  expected: |
257
258
  Return a deployment with:
@@ -3,14 +3,10 @@ version: "1.0.0"
3
3
  title: "Owned signal agent"
4
4
  category: signal_owned
5
5
  summary: "Signal agent serving first-party or proprietary audience data without external catalog verification."
6
- platform_types:
7
- - retail_media
8
- - social_platform
9
- - pmax_platform
10
-
11
6
  track: signals
12
7
  required_tools:
13
8
  - get_signals
9
+
14
10
  narrative: |
15
11
  You operate a first-party data platform — a retailer CDP, publisher contextual data
16
12
  provider, or proprietary audience platform. Your signals are agent-native: they come
@@ -69,6 +65,7 @@ phases:
69
65
  schema_ref: "signals/get-signals-request.json"
70
66
  response_schema_ref: "signals/get-signals-response.json"
71
67
  doc_ref: "/signals/tasks/get_signals"
68
+ comply_scenario: signals_flow
72
69
  stateful: false
73
70
  expected: |
74
71
  Return matching signals from your proprietary data. Each signal must include:
@@ -105,6 +102,7 @@ phases:
105
102
  schema_ref: "signals/get-signals-request.json"
106
103
  response_schema_ref: "signals/get-signals-response.json"
107
104
  doc_ref: "/signals/tasks/get_signals"
105
+ comply_scenario: signals_flow
108
106
  stateful: false
109
107
  expected: |
110
108
  Return only signals matching the filter criteria. If no signals match,
@@ -141,6 +139,7 @@ phases:
141
139
  schema_ref: "signals/activate-signal-request.json"
142
140
  response_schema_ref: "signals/activate-signal-response.json"
143
141
  doc_ref: "/signals/tasks/activate_signal"
142
+ comply_scenario: signals_flow
144
143
  stateful: true
145
144
  expected: |
146
145
  Return a deployment with:
@@ -184,6 +183,7 @@ phases:
184
183
  schema_ref: "signals/activate-signal-request.json"
185
184
  response_schema_ref: "signals/activate-signal-response.json"
186
185
  doc_ref: "/signals/tasks/activate_signal"
186
+ comply_scenario: signals_flow
187
187
  stateful: true
188
188
  expected: |
189
189
  Return a deployment with: