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

    Function legacyGetSignalsResponse

    • Parameters

      • data: {
            context?: Omit<Omit<{}, "bank">, "authentication"> & {
                authentication?: unknown;
            };
            governance_context?: string;
            signals?: {
                restricted_attributes?: RestrictedAttribute[];
                demographic_predicate?: {
                    age: { min?: number; max?: number; include_unknown: boolean };
                };
                policy_categories?: string[];
                taxonomy?: {
                    ref: string;
                    version?: string;
                    segtax?: number;
                    etag?: string;
                    values: { id: string; path?: string; modifiers?: string[] }[];
                    value_mappings?: {
                        value: string;
                        taxonomy_value_id: string;
                        path?: string;
                        modifiers?: (...)[];
                    }[];
                    parent_match_behavior?: | "unknown"
                    | "exact_only"
                    | "descendants_supported";
                };
                segmentation_criteria?: string;
                criteria_url?: string;
                data_sources?: (
                    | "email"
                    | "app_behavior"
                    | "app_usage"
                    | "web_usage"
                    | "geo_location"
                    | "tv_ott_or_stb_device"
                    | "panel"
                    | "online_ecommerce"
                    | "credit_data"
                    | "loyalty_card"
                    | "transaction"
                    | "online_survey"
                    | "offline_survey"
                    | "public_record_census"
                    | "public_record_voter_file"
                    | "public_record_other"
                    | "offline_transaction"
                )[];
                methodology?: "declared"
                | "inferred"
                | "modeled"
                | "observed"
                | "derived";
                audience_expansion?: boolean;
                device_expansion?: boolean;
                refresh_cadence?:
                    | "daily"
                    | "weekly"
                    | "monthly"
                    | "quarterly"
                    | "intra_day"
                    | "bi_monthly"
                    | "bi_annually"
                    | "annually";
                lookback_window?: | "daily"
                | "weekly"
                | "monthly"
                | "quarterly"
                | "intra_day"
                | "bi_monthly"
                | "bi_annually"
                | "annually";
                onboarder?: {
                    match_keys: (
                        | "email"
                        | "name"
                        | "address"
                        | "postal"
                        | "lat_long"
                        | "mobile_id"
                        | "cookie_id"
                        | "ip"
                        | "customer_id"
                        | "phone"
                    )[];
                    pre_onboarding_audience_expansion?: boolean;
                    pre_onboarding_device_expansion?: boolean;
                    pre_onboarding_precision_level?: | "individual"
                    | "household"
                    | "business"
                    | "geography";
                };
                countries?: string[];
                consent_basis?: ConsentBasis[];
                art9_basis?: | "explicit_consent"
                | "manifestly_made_public"
                | "substantial_public_interest"
                | "vital_interests";
                modeling?: {
                    method: "lookalike"
                    | "supervised"
                    | "embedding"
                    | "rules";
                    seed_source: {
                        type:
                            | "panel"
                            | "first_party_crm"
                            | "declared_survey"
                            | "transactional"
                            | "behavioral";
                        provider_signed: boolean;
                    };
                    training_data_jurisdictions: string[];
                    ai_act_risk_class: "limited"
                    | "minimal"
                    | "high_risk";
                    disclosure?: {
                        required: boolean;
                        jurisdictions?: ((...) | (...))[];
                        notes?: string;
                    };
                };
                data_subject_rights?: {
                    upstream_source_domain?: string;
                    channels: {
                        rights: (
                            "access"
                            | "rectification"
                            | "erasure"
                            | "portability"
                            | "objection"
                        )[];
                        url?: string;
                        email?: string;
                        languages?: string[];
                        countries?: string[];
                    }[];
                    response_sla_days?: number;
                    ccpa_opt_out_url?: string;
                };
                last_updated?: string;
                dts_compliant_version?: string;
                signal_ref?: | { scope: "product"; signal_id: string }
                | {
                    scope: "data_provider";
                    data_provider_domain: string;
                    signal_id: string;
                }
                | { scope: "signal_source"; signal_source_url: string; signal_id: string };
                signal_id?:
                    | { source: "catalog"; data_provider_domain: string; id: string }
                    | { source: "agent"; agent_url: string; id: string };
                name: string;
                description: string;
                methodology_url?: string;
                value_type?: SignalValueType;
                categories?: string[];
                range?: { min: number; max: number };
                signal_agent_segment_id: string;
                signal_type: SignalAvailabilityType;
                data_provider?: string;
                coverage_percentage?: number;
                coverage_forecast?: {
                    points: (
                        | {
                            label?: string;
                            budget?: number;
                            product_id?: string;
                            dimensions: ((...) | (...) | (...) | (...) | (...) | (...) | (...))[];
                            availability_status?: AvailabilityStatus;
                            metrics: {
                                audience_size?: (...) | (...);
                                reach?: (...) | (...);
                                frequency?: (...) | (...);
                                impressions?: (...) | (...);
                                clicks?: (...) | (...);
                                spend?: (...) | (...);
                                views?: (...) | (...);
                                completed_views?: (...) | (...);
                                grps?: (...) | (...);
                                engagements?: (...) | (...);
                                follows?: (...) | (...);
                                saves?: (...) | (...);
                                profile_visits?: (...) | (...);
                                measured_impressions?: (...) | (...);
                                downloads?: (...) | (...);
                                plays?: (...) | (...);
                                coverage_rate?: (...) | (...);
                                [key: string]: (...) | (...);
                            };
                            viewability?: {
                                vendor?: ...;
                                measurable_impressions?: ...;
                                viewable_impressions?: ...;
                                viewable_rate?: ...;
                                viewed_seconds?: ...;
                                standard?: ...;
                            };
                            vendor_metric_values?: (...)[];
                        }
                        | {
                            label?: string;
                            budget?: number;
                            product_id?: string;
                            dimensions: ((...) | (...) | (...) | (...) | (...) | (...) | (...))[];
                            availability_status?: AvailabilityStatus;
                            metrics: {
                                audience_size?: (...) | (...);
                                reach?: (...) | (...);
                                frequency?: (...) | (...);
                                impressions?: (...) | (...);
                                clicks?: (...) | (...);
                                spend?: (...) | (...);
                                views?: (...) | (...);
                                completed_views?: (...) | (...);
                                grps?: (...) | (...);
                                engagements?: (...) | (...);
                                follows?: (...) | (...);
                                saves?: (...) | (...);
                                profile_visits?: (...) | (...);
                                measured_impressions?: (...) | (...);
                                downloads?: (...) | (...);
                                plays?: (...) | (...);
                                coverage_rate?: (...) | (...);
                                [key: string]: (...) | (...);
                            };
                            viewability?: {
                                vendor?: ...;
                                measurable_impressions?: ...;
                                viewable_impressions?: ...;
                                viewable_rate?: ...;
                                viewed_seconds?: ...;
                                standard?: ...;
                            };
                            vendor_metric_values?: (...)[];
                        }
                    )[];
                    forecast_range_unit: "availability";
                    method: ForecastMethod;
                    scope: {
                        kind: "product"
                        | "inventory"
                        | "custom"
                        | "account";
                        label: string;
                        product_id?: string;
                        countries?: string[];
                        line_item_types?: string[];
                        date_range?: { start: string; end: string };
                    };
                    bucket_semantics: "exclusive"
                    | "overlapping";
                    bucket_completeness: "complete" | "partial";
                    generated_at?: string;
                    valid_until?: string;
                    ext?: Omit<Omit<{ [key: ...]: ... }, "bank">, "authentication"> & {
                        authentication?: unknown;
                    };
                };
                deployments: (
                    | {
                        type: "platform";
                        platform: string;
                        account?: string;
                        is_live: boolean;
                        activation_key?: | { type: "segment_id"; segment_id: string }
                        | { type: "key_value"; key: string; value: string };
                        estimated_activation_duration_minutes?: number;
                        deployed_at?: string;
                    }
                    | {
                        type: "agent";
                        agent_url: string;
                        account?: string;
                        is_live: boolean;
                        activation_key?: | { type: "segment_id"; segment_id: string }
                        | { type: "key_value"; key: string; value: string };
                        estimated_activation_duration_minutes?: number;
                        deployed_at?: string;
                    }
                )[];
                pricing_options?: (
                    | {
                        pricing_option_id: string;
                        applies_to_output_format_ids?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        applies_to_output_capability_ids?: string[];
                        model: "cpm";
                        cpm: number;
                        currency: string;
                        ext?: Omit<(...), (...)> & { authentication?: ... };
                    }
                    | {
                        pricing_option_id: string;
                        applies_to_output_format_ids?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        applies_to_output_capability_ids?: string[];
                        model: "percent_of_media";
                        percent: number;
                        max_cpm?: number;
                        currency: string;
                        ext?: Omit<(...), (...)> & { authentication?: ... };
                    }
                    | {
                        pricing_option_id: string;
                        applies_to_output_format_ids?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        applies_to_output_capability_ids?: string[];
                        model: "flat_fee";
                        amount: number;
                        period: "monthly"
                        | "campaign"
                        | "quarterly"
                        | "annual";
                        currency: string;
                        ext?: Omit<(...), (...)> & { authentication?: ... };
                    }
                    | {
                        pricing_option_id: string;
                        applies_to_output_format_ids?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        applies_to_output_capability_ids?: string[];
                        model: "per_unit";
                        unit: string;
                        unit_price: number;
                        currency: string;
                        ext?: Omit<(...), (...)> & { authentication?: ... };
                    }
                    | {
                        pricing_option_id: string;
                        applies_to_output_format_ids?: {
                            agent_url: ...;
                            id: ...;
                            width?: ...;
                            height?: ...;
                            duration_ms?: ...;
                            pixel_ratio?: ...;
                        }[];
                        applies_to_output_capability_ids?: string[];
                        model: "custom";
                        description: string;
                        metadata: { summary_for_operator?: string };
                        currency?: string;
                        ext?: Omit<(...), (...)> & { authentication?: ... };
                    }
                )[];
            }[];
            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;
            }[];
            incomplete?: {
                scope: "signals"
                | "pricing"
                | "wholesale_feed";
                description: string;
                estimated_wait?: {
                    interval: number;
                    unit: "campaign" | "seconds" | "minutes" | "hours" | "days";
                };
            }[];
            wholesale_feed_version?: string;
            pricing_version?: string;
            cache_scope?: "account"
            | "public";
            unchanged?: true;
            pagination?: { has_more: boolean; cursor?: string; total_count?: number };
            sandbox?: boolean;
            ext?: Omit<Omit<{ [key: string]: unknown }, "bank">, "authentication"> & {
                authentication?: unknown;
            };
        }
        • 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.

        • Optionalsignals?: {
              restricted_attributes?: RestrictedAttribute[];
              demographic_predicate?: {
                  age: { min?: number; max?: number; include_unknown: boolean };
              };
              policy_categories?: string[];
              taxonomy?: {
                  ref: string;
                  version?: string;
                  segtax?: number;
                  etag?: string;
                  values: { id: string; path?: string; modifiers?: string[] }[];
                  value_mappings?: {
                      value: string;
                      taxonomy_value_id: string;
                      path?: string;
                      modifiers?: (...)[];
                  }[];
                  parent_match_behavior?: "unknown"
                  | "exact_only"
                  | "descendants_supported";
              };
              segmentation_criteria?: string;
              criteria_url?: string;
              data_sources?: (
                  | "email"
                  | "app_behavior"
                  | "app_usage"
                  | "web_usage"
                  | "geo_location"
                  | "tv_ott_or_stb_device"
                  | "panel"
                  | "online_ecommerce"
                  | "credit_data"
                  | "loyalty_card"
                  | "transaction"
                  | "online_survey"
                  | "offline_survey"
                  | "public_record_census"
                  | "public_record_voter_file"
                  | "public_record_other"
                  | "offline_transaction"
              )[];
              methodology?: "declared"
              | "inferred"
              | "modeled"
              | "observed"
              | "derived";
              audience_expansion?: boolean;
              device_expansion?: boolean;
              refresh_cadence?:
                  | "daily"
                  | "weekly"
                  | "monthly"
                  | "quarterly"
                  | "intra_day"
                  | "bi_monthly"
                  | "bi_annually"
                  | "annually";
              lookback_window?: | "daily"
              | "weekly"
              | "monthly"
              | "quarterly"
              | "intra_day"
              | "bi_monthly"
              | "bi_annually"
              | "annually";
              onboarder?: {
                  match_keys: (
                      | "email"
                      | "name"
                      | "address"
                      | "postal"
                      | "lat_long"
                      | "mobile_id"
                      | "cookie_id"
                      | "ip"
                      | "customer_id"
                      | "phone"
                  )[];
                  pre_onboarding_audience_expansion?: boolean;
                  pre_onboarding_device_expansion?: boolean;
                  pre_onboarding_precision_level?: | "individual"
                  | "household"
                  | "business"
                  | "geography";
              };
              countries?: string[];
              consent_basis?: ConsentBasis[];
              art9_basis?: | "explicit_consent"
              | "manifestly_made_public"
              | "substantial_public_interest"
              | "vital_interests";
              modeling?: {
                  method: "lookalike"
                  | "supervised"
                  | "embedding"
                  | "rules";
                  seed_source: {
                      type:
                          | "panel"
                          | "first_party_crm"
                          | "declared_survey"
                          | "transactional"
                          | "behavioral";
                      provider_signed: boolean;
                  };
                  training_data_jurisdictions: string[];
                  ai_act_risk_class: "limited"
                  | "minimal"
                  | "high_risk";
                  disclosure?: {
                      required: boolean;
                      jurisdictions?: ((...) | (...))[];
                      notes?: string;
                  };
              };
              data_subject_rights?: {
                  upstream_source_domain?: string;
                  channels: {
                      rights: (
                          "access"
                          | "rectification"
                          | "erasure"
                          | "portability"
                          | "objection"
                      )[];
                      url?: string;
                      email?: string;
                      languages?: string[];
                      countries?: string[];
                  }[];
                  response_sla_days?: number;
                  ccpa_opt_out_url?: string;
              };
              last_updated?: string;
              dts_compliant_version?: string;
              signal_ref?: | { scope: "product"; signal_id: string }
              | {
                  scope: "data_provider";
                  data_provider_domain: string;
                  signal_id: string;
              }
              | { scope: "signal_source"; signal_source_url: string; signal_id: string };
              signal_id?:
                  | { source: "catalog"; data_provider_domain: string; id: string }
                  | { source: "agent"; agent_url: string; id: string };
              name: string;
              description: string;
              methodology_url?: string;
              value_type?: SignalValueType;
              categories?: string[];
              range?: { min: number; max: number };
              signal_agent_segment_id: string;
              signal_type: SignalAvailabilityType;
              data_provider?: string;
              coverage_percentage?: number;
              coverage_forecast?: {
                  points: (
                      | {
                          label?: string;
                          budget?: number;
                          product_id?: string;
                          dimensions: ((...) | (...) | (...) | (...) | (...) | (...) | (...))[];
                          availability_status?: AvailabilityStatus;
                          metrics: {
                              audience_size?: (...) | (...);
                              reach?: (...) | (...);
                              frequency?: (...) | (...);
                              impressions?: (...) | (...);
                              clicks?: (...) | (...);
                              spend?: (...) | (...);
                              views?: (...) | (...);
                              completed_views?: (...) | (...);
                              grps?: (...) | (...);
                              engagements?: (...) | (...);
                              follows?: (...) | (...);
                              saves?: (...) | (...);
                              profile_visits?: (...) | (...);
                              measured_impressions?: (...) | (...);
                              downloads?: (...) | (...);
                              plays?: (...) | (...);
                              coverage_rate?: (...) | (...);
                              [key: string]: (...) | (...);
                          };
                          viewability?: {
                              vendor?: ...;
                              measurable_impressions?: ...;
                              viewable_impressions?: ...;
                              viewable_rate?: ...;
                              viewed_seconds?: ...;
                              standard?: ...;
                          };
                          vendor_metric_values?: (...)[];
                      }
                      | {
                          label?: string;
                          budget?: number;
                          product_id?: string;
                          dimensions: ((...) | (...) | (...) | (...) | (...) | (...) | (...))[];
                          availability_status?: AvailabilityStatus;
                          metrics: {
                              audience_size?: (...) | (...);
                              reach?: (...) | (...);
                              frequency?: (...) | (...);
                              impressions?: (...) | (...);
                              clicks?: (...) | (...);
                              spend?: (...) | (...);
                              views?: (...) | (...);
                              completed_views?: (...) | (...);
                              grps?: (...) | (...);
                              engagements?: (...) | (...);
                              follows?: (...) | (...);
                              saves?: (...) | (...);
                              profile_visits?: (...) | (...);
                              measured_impressions?: (...) | (...);
                              downloads?: (...) | (...);
                              plays?: (...) | (...);
                              coverage_rate?: (...) | (...);
                              [key: string]: (...) | (...);
                          };
                          viewability?: {
                              vendor?: ...;
                              measurable_impressions?: ...;
                              viewable_impressions?: ...;
                              viewable_rate?: ...;
                              viewed_seconds?: ...;
                              standard?: ...;
                          };
                          vendor_metric_values?: (...)[];
                      }
                  )[];
                  forecast_range_unit: "availability";
                  method: ForecastMethod;
                  scope: {
                      kind: "product"
                      | "inventory"
                      | "custom"
                      | "account";
                      label: string;
                      product_id?: string;
                      countries?: string[];
                      line_item_types?: string[];
                      date_range?: { start: string; end: string };
                  };
                  bucket_semantics: "exclusive"
                  | "overlapping";
                  bucket_completeness: "complete" | "partial";
                  generated_at?: string;
                  valid_until?: string;
                  ext?: Omit<Omit<{ [key: ...]: ... }, "bank">, "authentication"> & {
                      authentication?: unknown;
                  };
              };
              deployments: (
                  | {
                      type: "platform";
                      platform: string;
                      account?: string;
                      is_live: boolean;
                      activation_key?: | { type: "segment_id"; segment_id: string }
                      | { type: "key_value"; key: string; value: string };
                      estimated_activation_duration_minutes?: number;
                      deployed_at?: string;
                  }
                  | {
                      type: "agent";
                      agent_url: string;
                      account?: string;
                      is_live: boolean;
                      activation_key?: | { type: "segment_id"; segment_id: string }
                      | { type: "key_value"; key: string; value: string };
                      estimated_activation_duration_minutes?: number;
                      deployed_at?: string;
                  }
              )[];
              pricing_options?: (
                  | {
                      pricing_option_id: string;
                      applies_to_output_format_ids?: {
                          agent_url: ...;
                          id: ...;
                          width?: ...;
                          height?: ...;
                          duration_ms?: ...;
                          pixel_ratio?: ...;
                      }[];
                      applies_to_output_capability_ids?: string[];
                      model: "cpm";
                      cpm: number;
                      currency: string;
                      ext?: Omit<(...), (...)> & { authentication?: ... };
                  }
                  | {
                      pricing_option_id: string;
                      applies_to_output_format_ids?: {
                          agent_url: ...;
                          id: ...;
                          width?: ...;
                          height?: ...;
                          duration_ms?: ...;
                          pixel_ratio?: ...;
                      }[];
                      applies_to_output_capability_ids?: string[];
                      model: "percent_of_media";
                      percent: number;
                      max_cpm?: number;
                      currency: string;
                      ext?: Omit<(...), (...)> & { authentication?: ... };
                  }
                  | {
                      pricing_option_id: string;
                      applies_to_output_format_ids?: {
                          agent_url: ...;
                          id: ...;
                          width?: ...;
                          height?: ...;
                          duration_ms?: ...;
                          pixel_ratio?: ...;
                      }[];
                      applies_to_output_capability_ids?: string[];
                      model: "flat_fee";
                      amount: number;
                      period: "monthly"
                      | "campaign"
                      | "quarterly"
                      | "annual";
                      currency: string;
                      ext?: Omit<(...), (...)> & { authentication?: ... };
                  }
                  | {
                      pricing_option_id: string;
                      applies_to_output_format_ids?: {
                          agent_url: ...;
                          id: ...;
                          width?: ...;
                          height?: ...;
                          duration_ms?: ...;
                          pixel_ratio?: ...;
                      }[];
                      applies_to_output_capability_ids?: string[];
                      model: "per_unit";
                      unit: string;
                      unit_price: number;
                      currency: string;
                      ext?: Omit<(...), (...)> & { authentication?: ... };
                  }
                  | {
                      pricing_option_id: string;
                      applies_to_output_format_ids?: {
                          agent_url: ...;
                          id: ...;
                          width?: ...;
                          height?: ...;
                          duration_ms?: ...;
                          pixel_ratio?: ...;
                      }[];
                      applies_to_output_capability_ids?: string[];
                      model: "custom";
                      description: string;
                      metadata: { summary_for_operator?: string };
                      currency?: string;
                      ext?: Omit<(...), (...)> & { authentication?: ... };
                  }
              )[];
          }[]

          Array of matching signals

        • 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 (e.g., signal discovery or pricing issues)

        • Optionalincomplete?: {
              scope: "signals" | "pricing" | "wholesale_feed";
              description: string;
              estimated_wait?: {
                  interval: number;
                  unit: "campaign" | "seconds" | "minutes" | "hours" | "days";
              };
          }[]

          Declares what the agent could not finish within the caller's time_budget or due to internal limits. Each entry identifies a scope that is missing or partial. Absent when the response is fully complete.

        • Optionalwholesale_feed_version?: string

          Opaque token representing the version of the wholesale signals feed state used to compose this response. Agents that implement conditional-fetch (if_wholesale_feed_version) MUST return this on every wholesale-mode response so callers can cache and probe later. Callers MUST treat the value as opaque — no format, no ordering, no inspection. The token is scope-keyed: it describes a version for the cache_scope declared on this response, NOT a global agent version. A caller caches (cache_scope, wholesale_feed_version) pairs and presents the matching token on the next request. Scoping dimensions: (agent, discovery_mode, filters, destinations, countries) for cache_scope: 'public'; that tuple plus account_id for cache_scope: 'account'. pagination.cursor is NOT part of the scoping tuple. See specs/wholesale-feed-webhooks.md for the full cache layering model.

        • Optionalpricing_version?: string

          Opaque token representing the version of the pricing layer. When the agent supports independent pricing versioning, pricing_version changes when prices move but wholesale_feed_version changes only when structure/metadata moves. Same cache_scope keying as wholesale_feed_version. Agents not separating these MAY omit pricing_version and use wholesale_feed_version for both.

        • Optionalcache_scope?: "account" | "public"

          Declares whether the wholesale_feed_version and pricing_version on this response describe a universal layer or an account-specific overlay. REQUIRED on every 3.1+ response (the 3.1 schema enforces this — the safety property of the two-layer cache model depends on it). 'public': this response describes the agent's published rate card; the caller MAY dedupe under (agent, discovery_mode, filters, destinations, countries) without scoping by account. 'account': this response includes account-specific overrides; the caller MUST cache the version under that tuple plus account_id. When the request did NOT include account, the agent MUST return cache_scope: 'public'. When the request included account, the agent MUST return either 'public' (this account prices off the public rate card — caller dedupes) or 'account' (account-specific overrides exist — caller caches under the account key). Agents MAY return 'public' on an account-scoped request that previously had overrides — callers SHOULD interpret this as a downgrade. Without schema-required cache_scope, an agent silently omitting the field on an account-scoped response would cause callers to mis-key the cache and serve account-overlay payloads to other accounts — the canonical safety invariant of the entire cache layering model. Backward-compatibility note for 3.1 validators: SDKs validating strictly against the 3.1 schema MUST select the validator based on the server-declared adcp_version. For responses with adcp_version starting 3.0, the 3.1 cache_scope-required constraint MUST be relaxed — pre-3.1 agents correctly emit no cache_scope and remain conformant to their declared version. This is a tightening within 3.1, not a 3.0 break.

        • Optionalunchanged?: true

          Present and true ONLY on wholesale-mode responses when the request carried if_wholesale_feed_version (and/or if_pricing_version) matching the agent's current version for the caller's cache_scope, in which case signals[] MUST be omitted; wholesale_feed_version (echoed), cache_scope (echoed), and pricing_version (echoed when used) MUST still be present. Callers receiving unchanged: true MUST NOT mutate their local wholesale signals mirror. One shape per state: agents MUST NOT emit unchanged: false — the absence of the field IS the signal that the response carries signals. Cross-scope isolation: the comparator that decides unchanged MUST be keyed on (cache_scope, wholesale_feed_version), not on the token value alone. An agent MUST NOT emit unchanged: true when it resolves the request to a different cache_scope than the one whose token the caller echoed in if_wholesale_feed_version (and/or if_pricing_version): because the token is scope-keyed, a value minted for cache_scope: 'public' cannot match the agent's current token for cache_scope: 'account' (or vice-versa), so such a request MUST return the full feed for the resolved scope with that scope's own token.

        • Optionalpagination?: { has_more: boolean; cursor?: string; total_count?: number }
          • has_more: boolean

            Whether more results are available beyond this page

          • Optionalcursor?: string

            Opaque cursor to pass in the next request to fetch the next page. Only present when has_more is true.

          • Optionaltotal_count?: number

            Total number of items matching the query across all pages. Optional because not all backends can efficiently compute this.

        • Optionalsandbox?: boolean

          When true, this response contains simulated data from sandbox mode.

        • Optionalext?: Omit<Omit<{ [key: string]: unknown }, "bank">, "authentication"> & {
              authentication?: unknown;
          }
      • Optionalsummary: string

      Returns McpToolResponse

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