Skip to content

Standardize pagination across all list operations #992

Description

@bokelley

Problem

List operations have inconsistent pagination support:

Operation Pagination Style
list_creatives Yes Offset-based (limit/offset, has_more, total_pages)
list_property_lists Yes Cursor-based (max_results/cursor, has_more)
list_accounts None Simple array
get_products None Simple array

Two operations lack pagination entirely, and the two that have it use different patterns (offset vs cursor).

Proposal

  1. Add pagination to get_products and list_accounts — both can return unbounded result sets from platforms with many products or retailer accounts.

  2. Standardize on one pagination pattern. Cursor-based is generally better for large or frequently-changing datasets (which ad platforms tend to be), and avoids the consistency issues of offset-based pagination.

    Suggested standard pattern for requests:

    {
      "pagination": {
        "max_results": 50,
        "cursor": "optional_cursor_string"
      }
    }

    Suggested standard pattern for responses:

    {
      "pagination": {
        "total_count": 142,
        "returned_count": 50,
        "has_more": true,
        "cursor": "next_page_cursor"
      }
    }
  3. Migrate list_creatives from offset-based to cursor-based for consistency (breaking change, would need a major version bump or deprecation period).

Related

Adapter implementation issue: adcontextprotocol/adcp-client#222

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions