> ## 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.

# Registry change feed

> Poll a cursor-based feed of registry changes. Events are ordered by UUID v7 event_id for monotonic cursor progression. The feed retains events for 90 days. The `freshness` object reports when the response was generated, the newest matching event currently visible to the feed, and the resulting feed lag.

Type filtering supports glob patterns: `property.*` matches `property.created`, `property.updated`, etc.



## OpenAPI

````yaml /static/openapi/registry.yaml get /api/registry/feed
openapi: 3.1.0
info:
  title: AgenticAdvertising.org Registry API
  description: >-
    REST API for the AgenticAdvertising.org registry. Resolve brands,

    discover properties, look up agents, and validate authorization in the

    AdCP ecosystem.


    Most endpoints are public and require no authentication. Endpoints marked

    with a lock icon accept either an organization API key or a user JWT

    obtained via the OAuth 2.1 flow — see
    [Authentication](https://agenticadvertising.org/docs/registry/index#authentication).


    **Base URL:** `https://agenticadvertising.org`
  version: 1.0.0
  contact:
    name: AgenticAdvertising.org
    url: https://agenticadvertising.org
servers:
  - url: https://agenticadvertising.org
    description: Production
security: []
tags:
  - name: Onboarding
    description: >-
      Explicitly bootstrap a third-party integration into the AAO registry. Most
      callers don't need this tag — `POST /api/me/agents` auto-creates the org
      (for fresh users) and the member profile (for first-time agent
      registration) without a separate round trip. Use `POST /api/organizations`
      only when you need to override the auto-derived org name / company_type /
      revenue_tier. Tier transitions happen via the billing flow only; the
      Stripe webhook is the sole writer of `organizations.membership_tier`.
  - name: Member Agents
    description: >-
      Register, list, update, and remove agents on the caller's organization
      member profile. Authenticated programmatic surface for CI / scripts that
      don't want to round-trip the full member profile.
  - name: Brand Resolution
    description: Resolve advertiser domains to canonical brand identities.
  - name: Property Resolution
    description: >-
      Resolve publisher domains to their property configurations and authorized
      agents.
  - name: Agent Discovery
    description: >-
      Browse the federated agent network, search agent inventory profiles,
      publisher index, and registry statistics.
  - name: Change Feed
    description: Poll cursor-based registry change events for local sync.
  - name: Lookups & Authorization
    description: >-
      Look up agents by domain or property, and validate ad-serving
      authorization.
  - name: Validation Tools
    description: >-
      Validate publisher adagents.json files and generate compliant
      configurations.
  - name: Community Mirrors
    description: >-
      Publish, fetch, list, and retire catalog-only adagents.json mirrors for
      platforms that have not adopted AdCP.
  - name: Search
    description: Cross-entity search across brands, publishers, agents, and properties.
  - name: Agent Probing
    description: >-
      Connect to live agents and inspect their capabilities, formats, and
      inventory.
  - name: Brand Discovery
    description: Discover and crawl brand.json files across domains.
  - name: Agent Compliance
    description: Agent compliance status, storyboard test results, and compliance history.
  - name: Policy Registry
    description: >-
      Browse, resolve, and contribute governance policies for campaign
      compliance.
  - name: Property Catalog
    description: >-
      Contribute facts to the property fact-graph: resolve identifiers to stable
      property_rids (which also contributes them, with provenance) and dispute
      catalog claims.
paths:
  /api/registry/feed:
    get:
      tags:
        - Change Feed
      summary: Registry change feed
      description: >-
        Poll a cursor-based feed of registry changes. Events are ordered by UUID
        v7 event_id for monotonic cursor progression. The feed retains events
        for 90 days. The `freshness` object reports when the response was
        generated, the newest matching event currently visible to the feed, and
        the resulting feed lag.


        Type filtering supports glob patterns: `property.*` matches
        `property.created`, `property.updated`, etc.
      operationId: getRegistryFeed
      parameters:
        - schema:
            type: string
            format: uuid
            description: Resume after this event ID
          required: false
          description: Resume after this event ID
          name: cursor
          in: query
        - schema:
            type: string
            description: >-
              Comma-separated event type filters with glob support (e.g.
              property.*)
            example: property.*,agent.*
          required: false
          description: >-
            Comma-separated event type filters with glob support (e.g.
            property.*)
          name: types
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 10000
            description: Max events per page (default 100, max 10,000)
          required: false
          description: Max events per page (default 100, max 10,000)
          name: limit
          in: query
      responses:
        '200':
          description: Feed page
          content:
            application/json:
              schema:
                type: object
                properties:
                  events:
                    type: array
                    items:
                      $ref: '#/components/schemas/RegistryFeedEvent'
                  cursor:
                    type:
                      - string
                      - 'null'
                    format: uuid
                    description: Pass as cursor in the next request to continue polling
                  has_more:
                    type: boolean
                  freshness:
                    type: object
                    properties:
                      generated_at:
                        type: string
                        format: date-time
                        description: Server timestamp when this feed page was generated.
                      latest_event_created_at:
                        type:
                          - string
                          - 'null'
                        format: date-time
                        description: >-
                          Newest event creation timestamp currently visible in
                          the feed for the requested type filter. Null when no
                          matching event exists inside retention.
                      lag_seconds:
                        type:
                          - integer
                          - 'null'
                        minimum: 0
                        description: >-
                          Seconds between generated_at and
                          latest_event_created_at. Null when no matching event
                          exists.
                      retention_days:
                        type: integer
                        exclusiveMinimum: 0
                        description: >-
                          Number of days the registry retains feed cursors and
                          events.
                    required:
                      - generated_at
                      - latest_event_created_at
                      - lag_seconds
                      - retention_days
                required:
                  - events
                  - cursor
                  - has_more
                  - freshness
        '400':
          description: Invalid cursor format or type filter
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '410':
          description: Cursor expired (older than 90-day retention window)
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    enum:
                      - cursor_expired
                  message:
                    type: string
                required:
                  - error
                  - message
      security:
        - bearerAuth: []
        - oauth2: []
components:
  schemas:
    RegistryFeedEvent:
      oneOf:
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - agent.discovered
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/AgentEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - agent.removed
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/AgentEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - agent.profile_updated
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/AgentEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - agent.compliance_changed
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/AgentEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - agent.verification_earned
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/AgentEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - agent.verification_lost
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/AgentEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - property.created
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/PropertyEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - property.updated
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/PropertyEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - property.merged
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/PropertyEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - property.stale
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/PropertyEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - property.reactivated
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/PropertyEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - collection.created
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/CollectionEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - collection.updated
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/CollectionEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - collection.merged
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/CollectionEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - collection.removed
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/CollectionEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - authorization.granted
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/AuthorizationEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - authorization.revoked
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/AuthorizationEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - authorization.modified
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/AuthorizationEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - publisher.adagents_changed
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/PublisherEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
        - type: object
          properties:
            event_id:
              type: string
              format: uuid
            event_type:
              type: string
              enum:
                - publisher.adagents_discovered
            entity_type:
              type: string
            entity_id:
              type: string
            payload:
              $ref: '#/components/schemas/PublisherEventPayload'
            actor:
              type: string
            created_at:
              type: string
              format: date-time
          required:
            - event_id
            - event_type
            - entity_type
            - entity_id
            - payload
            - actor
            - created_at
    Error:
      type: object
      properties:
        error:
          type: string
      required:
        - error
    AgentEventPayload:
      type: object
      properties:
        agent_url:
          type: string
          description: >-
            Canonical agent URL; the routing key for agent.* events (agents span
            many publishers).
        name:
          type: string
        type:
          type: string
        channels:
          type: array
          items:
            type: string
        property_types:
          type: array
          items:
            type: string
        markets:
          type: array
          items:
            type: string
        categories:
          type: array
          items:
            type: string
        category_taxonomy:
          type:
            - string
            - 'null'
        tags:
          type: array
          items:
            type: string
        delivery_types:
          type: array
          items:
            type: string
        format_ids:
          type: array
          items:
            type: string
        property_count:
          type: integer
        publisher_count:
          type: integer
        has_tmp:
          type: boolean
        updated_at:
          type: string
        changed_fields:
          type: array
          items:
            type: string
          minItems: 1
        inventory_profile:
          type: object
          additionalProperties: {}
          description: 'On agent.profile_updated: the agent''s refreshed inventory profile.'
        compliance_summary:
          type: object
          additionalProperties: {}
        previous_status:
          type: string
          description: 'On agent.compliance_changed: prior compliance/verification status.'
        current_status:
          type: string
          description: 'On agent.compliance_changed: new compliance/verification status.'
        headline:
          type:
            - string
            - 'null'
          description: >-
            On agent.compliance_changed: human-readable summary of the
            compliance transition.
        tracks:
          type: object
          additionalProperties:
            type: string
            enum:
              - pass
              - fail
              - partial
              - skip
              - silent
              - warning
              - unknown
              - skipped
          description: >-
            On agent.compliance_changed: map of compliance track id to track
            status.
        storyboards_passing:
          type: integer
          minimum: 0
        storyboards_total:
          type: integer
          minimum: 0
        storyboards:
          type: array
          items:
            type: object
            properties:
              storyboard_id:
                type: string
              status:
                type: string
              steps_passed:
                type: integer
                minimum: 0
              steps_total:
                type: integer
                minimum: 0
            required:
              - storyboard_id
              - status
            additionalProperties: {}
        role:
          type: string
          description: >-
            On agent.verification_earned/lost: verified role affected by the
            badge transition.
        verified_specialisms:
          type: array
          items:
            type: string
          description: >-
            On agent.verification_earned: specialisms covered by the earned
            badge.
        reason:
          type: string
          description: 'On agent.verification_lost: reason the badge was revoked.'
        adcp_version:
          type: string
          description: >-
            On agent.verification_earned/lost: AdCP version the badge applies
            to, when known.
      required:
        - agent_url
      additionalProperties: {}
    PropertyEventPayload:
      type: object
      properties:
        property_rid:
          type: string
        publisher_domain:
          type: string
          description: >-
            Publisher domain that owns the property; the routing key for
            property.* events.
        identifiers:
          type: array
          items:
            $ref: '#/components/schemas/PropertyIdentifier'
        classification:
          type: string
        source:
          type: string
          enum:
            - authoritative
            - enriched
            - contributed
        property:
          type: object
          additionalProperties: {}
          description: Optional full post-change property object when available.
        changed_fields:
          type: array
          items:
            type: string
          minItems: 1
        last_resolved_at:
          type: string
          description: 'On property.stale: last successful resolution timestamp.'
        reactivated_at:
          type: string
          description: 'On property.reactivated: reactivation timestamp when available.'
        reason:
          type: string
          description: >-
            On property.stale: reason the property aged out of active
            resolution.
        alias_rid:
          type: string
          description: 'On property.merged: the RID merged away.'
        canonical_rid:
          type: string
          description: 'On property.merged: the surviving RID.'
        evidence:
          type: string
      additionalProperties: {}
    CollectionEventPayload:
      type: object
      properties:
        collection_rid:
          type: string
        publisher_domain:
          type: string
          description: >-
            Publisher domain that owns the collection; the routing key for
            collection.* events.
        collection_id:
          type:
            - string
            - 'null'
        name:
          type:
            - string
            - 'null'
        kind:
          type:
            - string
            - 'null'
        source:
          type: string
        status:
          type: string
        identifiers:
          type: array
          items:
            type: object
            properties:
              publisher_domain:
                type: string
              type:
                type: string
              value:
                type: string
            required:
              - publisher_domain
              - type
              - value
          description: >-
            Distribution identifiers; the per-identifier publisher_domain (e.g.
            youtube.com) is the distribution surface, distinct from the owning
            publisher_domain above.
        collection:
          type: object
          additionalProperties: {}
        changed_fields:
          type: array
          items:
            type: string
          minItems: 1
        alias_rid:
          type: string
          description: 'On collection.merged: the RID merged away.'
        canonical_rid:
          type: string
          description: 'On collection.merged: the surviving RID.'
        evidence:
          type: string
      additionalProperties: {}
    AuthorizationEventPayload:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: >-
            Registry authorization row id when the event is backed by a
            materialized effective authorization row.
        agent_url:
          type: string
        agent_url_canonical:
          type: string
          description: Registry-canonicalized form of agent_url for equality checks.
        publisher_domain:
          type: string
          description: >-
            Publisher domain the authorization applies to; the routing key for
            authorization.* events.
        authorization_type:
          type: string
          description: >-
            Present on authorization.granted; authorization.revoked carries only
            agent_url + publisher_domain.
        authorized_for:
          type:
            - string
            - 'null'
        property_ids:
          type: array
          items:
            type: string
        property_tags:
          type: array
          items:
            type: string
        properties:
          type: array
          items:
            type: object
            additionalProperties: {}
        publisher_properties:
          type: array
          items:
            type: object
            additionalProperties: {}
        property_rid:
          type:
            - string
            - 'null'
          description: >-
            Catalog property_rid for materialized per-property authorization
            rows. Null for publisher-wide rows.
        property_id_slug:
          type:
            - string
            - 'null'
          description: >-
            Publisher-local property id for materialized per-property
            authorization rows.
        placement_ids:
          type: array
          items:
            type: string
        placement_tags:
          type: array
          items:
            type: string
        collections:
          type: array
          items:
            type: object
            properties:
              publisher_domain:
                type: string
              collection_ids:
                type: array
                items:
                  type: string
                minItems: 1
            required:
              - publisher_domain
              - collection_ids
            additionalProperties: {}
        countries:
          type: array
          items:
            type: string
        delegation_type:
          type: string
        exclusive:
          type: boolean
        effective_from:
          type: string
        effective_until:
          type: string
        signing_keys:
          type: array
          items:
            type: object
            additionalProperties: {}
        evidence:
          type: string
        disputed:
          type: boolean
        created_by:
          type:
            - string
            - 'null'
        expires_at:
          type:
            - string
            - 'null'
        created_at:
          type:
            - string
            - 'null'
        updated_at:
          type:
            - string
            - 'null'
        override_applied:
          type: boolean
        override_reason:
          type:
            - string
            - 'null'
      required:
        - agent_url
        - publisher_domain
      additionalProperties: {}
    PublisherEventPayload:
      type: object
      properties:
        publisher_domain:
          type: string
          description: >-
            Publisher domain whose adagents.json was discovered/changed; the
            routing key for publisher.* events.
        domain:
          type: string
          description: Legacy alias for publisher_domain retained for early feed examples.
        properties_added:
          type: integer
          minimum: 0
        properties_removed:
          type: integer
          minimum: 0
        agents_added:
          type: array
          items:
            type: string
        agents_removed:
          type: array
          items:
            type: string
        agent_count:
          type: integer
        property_count:
          type: integer
        collection_count:
          type: integer
        discovery_method:
          type: string
        manager_domain:
          type:
            - string
            - 'null'
        source:
          type: string
      additionalProperties: {}
    PropertyIdentifier:
      type: object
      properties:
        type:
          type: string
          example: domain
        value:
          type: string
          example: examplepub.com
      required:
        - type
        - value
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        Bearer token in the `Authorization` header. Two token types are
        accepted:


        - **Organization API key** (`sk_...`) issued via the dashboard.
        Org-scoped, long-lived, for server-to-server use.

        - **User JWT** obtained via the OAuth 2.1 authorization code flow with
        PKCE. User-scoped, short-lived. Discover the authorization server at
        `/.well-known/oauth-authorization-server` and the protected-resource
        metadata at `/.well-known/oauth-protected-resource/api`.
    oauth2:
      type: oauth2
      description: >-
        OAuth 2.1 authorization code flow with PKCE. Users authenticate via
        AuthKit and clients receive a Bearer JWT that authorizes both the MCP
        endpoint and this REST API. Dynamic client registration is supported at
        `/register`.
      flows:
        authorizationCode:
          authorizationUrl: https://agenticadvertising.org/authorize
          tokenUrl: https://agenticadvertising.org/token
          refreshUrl: https://agenticadvertising.org/token
          scopes:
            openid: User identifier
            profile: User profile information
            email: User email address

````