Skip to main content
Task: Activate a signal for use on a specific platform/account. Response Time: Minutes to days (asynchronous with potential human-in-the-loop) Request Schema: https://adcontextprotocol.org/schemas/v3/signals/activate-signal-request.json Response Schema: https://adcontextprotocol.org/schemas/v3/signals/activate-signal-response.json The activate_signal task handles the entire activation lifecycle, including:
  • Initiating the activation request
  • Monitoring activation progress
  • Returning the final deployment status

Request Parameters

Destination Object

Each deployment target uses a type field to discriminate between platform-based and agent-based deployments: *platform is required when type="platform", agent_url is required when type="agent". Activation Keys: If the authenticated caller has access to any of the deployment targets in the request, the signal agent will include activation_key in the response for those deployments. Permission Model: The signal agent determines key inclusion based on the caller’s authentication and authorization. For example:
  • A sales agent receives keys for deployments matching its agent_url
  • A buyer with credentials for multiple DSP platforms receives keys for all those deployments
  • Access is determined by the signal agent’s permission system, not by flags in the request

Response Structure

All AdCP responses include:
  • message: Human-readable summary of the activation status
  • context_id: Session continuity identifier for tracking progress
  • data: Task-specific payload (see Response Data below)
The response structure is identical across protocols, with only the transport wrapper differing:
  • MCP: Returns complete response as flat JSON
  • A2A: Returns as artifacts with message in text part, data in data part
For asynchronous operations like activation, both protocols support:
  • Status tracking: Check completion status via task_id
  • Progress updates: Real-time updates on activation progress

Response Data

Field Descriptions

  • deployments: Array of deployment results for each deployment target
    • platform: Platform identifier for DSPs (either platform or agent_url will be present)
    • agent_url: URL identifying the deployment agent (either platform or agent_url will be present)
    • account: Account identifier if applicable
    • activation_key: The key to use for targeting (see Activation Key below). Only present if the authenticated caller has access to this deployment.
    • estimated_activation_duration_minutes: Estimated completion time for async operations
    • deployed_at: ISO 8601 timestamp when activation completed
  • errors: Optional array of errors and warnings encountered during activation
    • code: Standardized error code for programmatic handling
    • message: Human-readable error description with context
    • field: Field path associated with the error (optional)
    • suggestion: Suggested fix for the error (optional)
    • details: Additional activation-specific error details (optional)

Activation Key Object

The activation key represents how to use the signal on a deployment target. It can be either a segment ID or a key-value pair: Segment ID format (typical for DSP platforms):
Key-Value format (typical for sales agents):

Using Activation Keys

The activation key tells the buyer how to reference the signal on the destination. The execution path depends on the destination type: Platform destinations — The activation_key contains a segment_id, a platform-native identifier. The signal agent pushed segment data to the DSP; the buyer references this key when configuring campaign targeting on that platform. The buyer is responsible for ensuring the activation platform matches where it will run campaigns. Agent destinations — The activation_key confirms the signal is live on the sales agent. The SA records the activation internally and can apply signal-based targeting when fulfilling media buys through create_media_buy. When the seller exposes selectable signals through inline Product.signal_targeting_options or through get_signals for wholesale products that omit inline options, the buyer selects those signals in packages[].targeting_overlay.signal_targeting_groups, carrying the selected signal_ref, pricing_option_id when required, and any separate seller execution handle required by the product option or signal result. The buyer does not need to know which DSP the SA uses — downstream platform coordination is the SA’s responsibility. Choosing a destination type: Use type: "platform" when buying directly on a DSP. Use type: "agent" when buying through a Sales Agent — the SA coordinates its own DSP targeting as an implementation detail.

Protocol-Specific Examples

The AdCP payload is identical across protocols. Only the request/response wrapper differs.

MCP Request - Sales Agent Activation

MCP Response - Synchronous (Key-Value)

Immediate response with activation key:

MCP Request - DSP Platform Activation

MCP Response - Asynchronous (Segment ID)

Initial response:
After polling for completion:

A2A Request

Natural Language Invocation

Explicit Skill Invocation

A2A Response (with streaming)

Initial response:
Then via Server-Sent Events:

Protocol Transport

  • MCP: Returns task_id for polling-based asynchronous operation tracking or webhook-based push notifications
  • A2A: Uses Server-Sent Events for real-time progress updates and completion
  • Data Consistency: Both protocols contain identical AdCP data structures and version information

Webhook Support

For long-running activations (when initial response is submitted), configure a webhook to receive the complete response when activation completes:
When activation completes, you receive the full activate_signal response:
See Webhooks for complete details on webhook configuration and reliability.

Scenarios

Async Activation - Initial Response (Pending)

Message: “I’ve initiated activation of ‘Luxury Automotive Context’ on PubMatic for account brand-456-pm. This typically takes about 60 minutes. I’ll monitor the progress and notify you when it’s ready to use.” Complete Response:

Async Activation - Final Response (Deployed)

Message: “Excellent! The ‘Luxury Automotive Context’ signal is now live on PubMatic. You can start using it immediately with the activation key provided. The activation completed faster than expected - just 52 minutes.” Complete Response:

Sync Activation - Sales Agent (Immediate)

Message: “Signal successfully activated on Wonderstruck sales agent. Use the key-value pair in your targeting configuration.” Complete Response:

Success with Warnings

Message: “Successfully activated ‘Luxury Automotive Context’ on PubMatic, but noted some configuration issues. The signal is live and ready to use, though performance may be sub-optimal until the account settings are updated.” Complete Response:
Warnings about suboptimal configuration are conveyed in the message field. The errors array is reserved for actual failures — the activate_signal response uses a strict success/error discriminated union where deployments and errors are mutually exclusive.

Error Response (Failed)

Message: “I couldn’t activate the signal on PubMatic. Your account ‘brand-456-pm’ doesn’t have permission to use Peer39 data. Please contact your PubMatic account manager to enable Peer39 access, then we can try again.” Complete Response:

Error Codes

Activation Errors

  • REFERENCE_NOT_FOUND: Referenced signal_agent_segment_id doesn’t exist or is not accessible to the calling account (error.field identifies the failing parameter)
  • ACTIVATION_FAILED: Could not activate signal for unspecified reasons
  • ALREADY_ACTIVATED: Signal already active on the specified platform/account
  • DEPLOYMENT_UNAUTHORIZED: Can’t deploy to platform/account due to permissions
  • INVALID_PRICING_MODEL: Requested pricing model not available for this signal

Configuration Warnings

  • SUBOPTIMAL_CONFIGURATION: Signal activated but account settings may impact performance
  • SLOW_ACTIVATION: Activation taking longer than expected but still in progress
  • FREQUENCY_CAP_RESTRICTIVE: Signal activated but account frequency caps may reduce performance

Error Handling Philosophy

Status vs Errors

  • Task Status: Indicates overall activation outcome (deployed, failed, etc.)
  • Errors Array: Contains specific issues, warnings, and remediation steps
  • Partial Success: Signal can be deployed while still having warnings in errors array

Error Types

  • Fatal Errors: Prevent activation (status = failed)
  • Warnings: Signal activates successfully but with caveats (status = deployed + errors)
  • Configuration Issues: Non-blocking problems that affect performance

Usage Notes

  1. Account-Specific: Include the account parameter for account-specific activations
  2. Platform-Wide: Omit the account parameter for platform-wide activations
  3. Async Operation: This is a long-running task that provides status updates
  4. Monitoring: Use task ID to monitor progress via polling or SSE
  5. Idempotent: Safe to retry if activation fails

Implementation Guide

Generating Activation Messages

The message field should provide clear status updates and actionable information: