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

# AAO directory inverse-lookup

> Given a percent-encoded `agent_url`, returns the publishers whose adagents.json authorizes that agent, with provenance (`discovery_method`, `manager_domain`), per-publisher property counts (`properties_authorized`, `properties_total`, scoped to this publisher only — never network-wide), signing-key pin status, and lifecycle state (`authorized` / `revoked`).

Spec: [docs/aao/directory-api.mdx](/docs/aao/directory-api) (adcp#4823). This endpoint is the spec-compliant richer-shape replacement for the legacy `/api/registry/lookup/agent/{agentUrl}/domains`, which returns domain strings only.



## OpenAPI

````yaml /static/openapi/registry.yaml get /api/v1/agents/{encodedUrl}/publishers
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/v1/agents/{encodedUrl}/publishers:
    get:
      tags:
        - Authorization Lookups
      summary: AAO directory inverse-lookup
      description: >-
        Given a percent-encoded `agent_url`, returns the publishers whose
        adagents.json authorizes that agent, with provenance
        (`discovery_method`, `manager_domain`), per-publisher property counts
        (`properties_authorized`, `properties_total`, scoped to this publisher
        only — never network-wide), signing-key pin status, and lifecycle state
        (`authorized` / `revoked`).


        Spec: [docs/aao/directory-api.mdx](/docs/aao/directory-api) (adcp#4823).
        This endpoint is the spec-compliant richer-shape replacement for the
        legacy `/api/registry/lookup/agent/{agentUrl}/domains`, which returns
        domain strings only.
      operationId: getPublishersForAgentLegacyApiPrefix
      parameters:
        - schema:
            type: string
            description: Percent-encoded agent_url
          required: true
          description: Percent-encoded agent_url
          name: encodedUrl
          in: path
        - schema:
            type: string
            format: date-time
            description: ISO 8601 — return only publishers with last_verified_at ≥ since
          required: false
          description: ISO 8601 — return only publishers with last_verified_at ≥ since
          name: since
          in: query
        - schema:
            type: string
            description: Opaque pagination cursor returned by a prior response
          required: false
          description: Opaque pagination cursor returned by a prior response
          name: cursor
          in: query
        - schema:
            type: array
            items:
              type: string
              enum:
                - authorized
                - revoked
            description: >-
              Lifecycle status filter — repeat the key once per value
              (?status=authorized&status=revoked). Default: authorized. The
              comma-separated single-value form is rejected with 400.
          required: false
          description: >-
            Lifecycle status filter — repeat the key once per value
            (?status=authorized&status=revoked). Default: authorized. The
            comma-separated single-value form is rejected with 400.
          name: status
          in: query
        - schema:
            type: array
            items:
              type: string
              enum:
                - properties
            description: >-
              Opt into expanded per-row fields — repeat the key once per value.
              v1: `properties` adds `property_ids[]` to each PublisherEntry so
              consumers can run full set-diff against a federated fetch
              (count-equality is not set-equality). Unknown values return 400.
              The comma-separated form is rejected with 400.
          required: false
          description: >-
            Opt into expanded per-row fields — repeat the key once per value.
            v1: `properties` adds `property_ids[]` to each PublisherEntry so
            consumers can run full set-diff against a federated fetch
            (count-equality is not set-equality). Unknown values return 400. The
            comma-separated form is rejected with 400.
          name: include
          in: query
        - schema:
            type: integer
            minimum: 1
            maximum: 1000
            description: Page size, default 200, max 1000
          required: false
          description: Page size, default 200, max 1000
          name: limit
          in: query
      responses:
        '200':
          description: Publishers authorizing the agent
          content:
            application/json:
              schema:
                type: object
                properties:
                  agent_url:
                    type: string
                  directory_indexed_at:
                    type:
                      - string
                      - 'null'
                    format: date-time
                    description: >-
                      Most recent per-publisher refresh in this page. Null on
                      empty pages (no anchor).
                  publishers:
                    type: array
                    items:
                      type: object
                      properties:
                        publisher_domain:
                          type: string
                        discovery_method:
                          type: string
                          enum:
                            - direct
                            - authoritative_location
                            - ads_txt_managerdomain
                            - adagents_authoritative
                            - community_catalog
                        manager_domain:
                          type:
                            - string
                            - 'null'
                        properties_authorized:
                          type: integer
                          minimum: 0
                        properties_total:
                          type: integer
                          minimum: 0
                        property_ids:
                          type: array
                          items:
                            type: string
                          description: >-
                            Canonical list of property_id strings the agent is
                            authorized for under this publisher. Present iff the
                            request included `?include=properties`. Same
                            population as `properties_authorized` but surfaced
                            as IDs for set-diff comparison.
                        signing_keys_pinned:
                          type: boolean
                        status:
                          type: string
                          enum:
                            - authorized
                            - revoked
                        last_verified_at:
                          type: string
                          format: date-time
                      required:
                        - publisher_domain
                        - discovery_method
                        - manager_domain
                        - properties_authorized
                        - properties_total
                        - signing_keys_pinned
                        - status
                        - last_verified_at
                  next_cursor:
                    type:
                      - string
                      - 'null'
                required:
                  - agent_url
                  - directory_indexed_at
                  - publishers
                  - next_cursor
        '304':
          description: Not modified (If-None-Match matched)
        '400':
          description: Invalid agent_url, cursor, since, or status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: >-
            Directory has never indexed any publisher referencing this
            agent_url. Distinct from 200 + empty.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
      required:
        - error

````