Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.adcontextprotocol.org/llms.txt

Use this file to discover all available pages before exploring further.

Browse and filter creatives in a creative library. Supports filtering by format, status, concept, tags, date range, and dynamic variables, with pagination and optional field enrichment. Implemented by any agent that hosts a creative library — creative agents (ad servers, creative management platforms) and sales agents that manage creatives. Response time: ~1 second (simple database lookup)

Overview

Key features:
  • Filter by format, status, tags, dates, assignments, concepts, and variables
  • Sort by creation date, update date, name, status, or assignment count
  • Cursor-based pagination for large libraries
  • Optionally include assignments, delivery snapshots, items, and dynamic creative optimization (DCO) variables
  • Return only specific fields to reduce response size
  • Filter by creative concept (groups of related creatives across sizes/formats)
  • Find DCO creatives and inspect their dynamic content slots

Request parameters

Schema: creative/list-creatives-request.json

Core parameters

ParameterTypeRequiredDescription
filtersobjectNoFilter criteria — see filtering options below
sortobjectNoSorting parameters
paginationobjectNoPagination controls

Data inclusion options

ParameterTypeRequiredDescription
include_assignmentsbooleanNoInclude package assignment information (default: true)
include_snapshotbooleanNoInclude a lightweight delivery snapshot — lifetime impressions and last-served date (default: false). For detailed analytics, use get_creative_delivery.
include_itemsbooleanNoInclude items for multi-asset formats like carousels and native ads (default: false)
include_variablesbooleanNoInclude dynamic content variable definitions (default: false)
include_pricingbooleanNoInclude pricing_options on each creative (default: false). Requires account.
accountAccountRefNoAccount reference for pricing. When provided with include_pricing, the agent returns pricing_options from this account’s rate card on each creative.
fieldsarrayNoSpecific fields to return (omit for all fields). Includes "pricing_options" for sparse selection.

Filtering options

The filters object supports these optional, composable filters:
FilterTypeDescription
accountsAccountRef[]Filter by owning accounts
format_idsFormatID[]Filter by structured format IDs
statusesCreativeStatus[]Filter by approval status
tagsstring[]Filter by tags (all must match)
tags_anystring[]Filter by tags (any must match)
name_containsstringCase-insensitive name search
creative_idsstring[]Filter by specific creative IDs (max 100)
concept_idsstring[]Filter by concept groupings
has_variablesbooleanFilter for DCO creatives with dynamic variables
created_after / created_beforedate-timeFilter by creation date range
updated_after / updated_beforedate-timeFilter by last-modified date range
assigned_to_packagesstring[]Filter by package assignments *
media_buy_idsstring[]Filter by media buy assignments *
unassignedbooleanFilter for unassigned creatives *
has_servedbooleanFilter for creatives that have served at least one impression *
* Assignment-related filters are specific to sales agents. Standalone creative agents ignore these.
Archived creatives are excluded by default. To include archived creatives in results, explicitly include "archived" in the statuses array.

Sorting options

Sort results by various fields with ascending or descending order:
{
  "sort": {
    "field": "created_date",
    "direction": "desc"
  }
}
Available sort fields:
  • created_date - When the creative was created (default)
  • updated_date - When creative was last modified
  • name - Creative name (alphabetical)
  • status - Approval status
  • assignment_count - Number of package assignments

Pagination

Control result set size with cursor-based pagination:
{
  "pagination": {
    "max_results": 50,
    "cursor": "eyJjcmVhdGVkX2RhdGUiOi4uLn0"
  }
}

Response format

Schema: creative/list-creatives-response.json The response provides creative data with optional enrichment:
{
  "query_summary": {
    "total_matching": 1,
    "returned": 1,
    "filters_applied": ["status=approved"]
  },
  "pagination": {
    "has_more": false,
    "total_count": 1
  },
  "creatives": [
    {
      "creative_id": "ft_88201",
      "name": "Holiday Sale - Medium Rectangle",
      "format_id": {
        "agent_url": "https://creative.example.com",
        "id": "display_static",
        "width": 300,
        "height": 250
      },
      "status": "approved",
      "created_date": "2026-01-15T10:30:00Z",
      "updated_date": "2026-01-15T14:20:00Z",
      "concept_id": "concept_holiday_2026",
      "concept_name": "Holiday 2026 Campaign",
      "variables": [
        {
          "variable_id": "headline_text",
          "name": "Headline",
          "variable_type": "text",
          "default_value": "Holiday Sale - 50% Off",
          "required": true
        }
      ]
    }
  ],
  "format_summary": {
    "display_static_300x250": 1
  },
  "status_summary": {
    "approved": 1
  }
}

Per-creative fields

FieldTypeDescription
creative_idstringUnique creative identifier
namestringHuman-readable name
format_idobjectStructured format reference
statusstringApproval status
created_datestringCreation timestamp
updated_datestringLast modified timestamp
assetsobjectCreative assets (images, text, URLs, etc.)
tagsstring[]Tags for categorization
concept_idstringCreative concept ID
concept_namestringHuman-readable concept name
variablesarrayDCO variable definitions (when include_variables=true)
assignmentsobjectPackage assignments (when include_assignments=true)
snapshotobjectDelivery snapshot (when include_snapshot=true)
snapshot_unavailable_reasonstringWhy snapshot is missing — SNAPSHOT_UNSUPPORTED, SNAPSHOT_TEMPORARILY_UNAVAILABLE, or SNAPSHOT_PERMISSION_DENIED
itemsarrayItems for multi-asset formats (when include_items=true)
pricing_optionsVendorPricingOption[]Pricing options for this creative (when include_pricing=true and account provided). Vendors may offer multiple options (volume tiers, context-specific rates, different models per product line). Same pattern as get_signals and list_content_standards.

Pricing

When include_pricing=true and account is provided, each creative includes pricing_options from the account’s rate card:
{
  "pricing_options": [
    {
      "pricing_option_id": "po_video_cpm",
      "model": "cpm",
      "cpm": 0.50,
      "currency": "USD"
    }
  ]
}
The buyer passes the applied pricing_option_id (from the build_creative response) in report_usage for billing verification. Vendors may offer multiple options — volume/commitment tiers, context-specific rates (premium vs. standard placements), or entirely different pricing models for different product lines. This is the same pattern used by signals and content standards.

Delivery snapshot

When include_snapshot=true, each creative includes a lightweight delivery snapshot for operational questions like “is this creative active?” or “when did it last serve?” This is not analytics — for detailed performance data, use get_creative_delivery.
{
  "snapshot": {
    "as_of": "2026-03-08T14:30:00Z",
    "staleness_seconds": 3600,
    "impressions": 145200,
    "last_served": "2026-03-07T22:15:00Z"
  }
}
FieldTypeRequiredDescription
as_ofdate-timeYesWhen this snapshot was captured
staleness_secondsintegerYesMaximum age of data in seconds
impressionsintegerYesLifetime impressions (not scoped to any date range)
last_serveddate-timeNoLast time this creative served. Absent when it has never served.

Account requirements

Creative agents that host a library should implement the accounts protocol (sync_accounts / list_accounts) so buyers can establish access before querying creatives. This is the same accounts protocol used by sales agents for media buys — there is no separate version. Sales agents that already implement the accounts protocol for media buys do not need to do anything additional.

Examples

Concept-scoped query with variables

List all approved creatives in a specific concept, including DCO variable definitions:
{
  "filters": {
    "concept_ids": ["concept_holiday_2026"],
    "statuses": ["approved"]
  },
  "include_variables": true,
  "sort": {
    "field": "created_date",
    "direction": "desc"
  }
}

Format-specific query

Find creatives matching specific format IDs across concepts:
{
  "filters": {
    "format_ids": [
      {
        "agent_url": "https://creative.example.com",
        "id": "display_static",
        "width": 300,
        "height": 250
      },
      {
        "agent_url": "https://creative.example.com",
        "id": "display_static",
        "width": 728,
        "height": 90
      }
    ],
    "statuses": ["approved"]
  }
}

Find DCO creatives

Find creatives with dynamic content variables for personalized campaigns:
{
  "filters": {
    "has_variables": true,
    "statuses": ["approved"]
  },
  "include_variables": true
}

Field-limited query

Get minimal creative data for a selection dropdown:
{
  "fields": ["creative_id", "name", "format_id", "status"],
  "include_assignments": false,
  "filters": {
    "statuses": ["approved"]
  },
  "sort": {
    "field": "name",
    "direction": "asc"
  }
}

Library health check

Find active creatives with delivery snapshots to identify stale or dormant assets:
{
  "filters": {
    "media_buy_ids": ["mb_summer_2026", "mb_spring_2026"],
    "statuses": ["approved"]
  },
  "include_assignments": true,
  "include_snapshot": true,
  "sort": {
    "field": "updated_date",
    "direction": "desc"
  }
}