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

# Refresh agent snapshot

> Re-probe the agent and update its registry health (online, tools_count, response_time_ms), capability snapshot (inferred type, discovered tools), and compliance verdict (storyboard pass/fail counts). Use after fixing your agent so the registry shows fresh data without waiting for the periodic heartbeat (~1h).

**Compliance re-run:** when the caller owns the agent or is an AAO admin and the capability probe succeeds, the full storyboard suite can run for several minutes on capability-rich agents with a fresh test session, and `agent_storyboard_status` is updated. Owner-triggered runs use `triggered_by: 'owner_test'`; admin-triggered support runs use `triggered_by: 'manual'`. Badge fan-out reissues verification badges off the new run. If the compliance call fails (timeout, OAuth wall, internal error), the capability/health portion still returns successfully — `compliance.ran` is `false` with an `error` string.

**Auth:** owner of the agent, AAO admin, or static `ADMIN_API_KEY`.

**Rate limits:** 60 seconds per agent URL, 30 requests per user per hour.



## OpenAPI

````yaml https://raw.githubusercontent.com/adcontextprotocol/adcp/v3.2.0-beta.10/static/openapi/registry.yaml post /api/registry/agents/{encodedUrl}/refresh
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: >-
      Propose, review, 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/agents/{encodedUrl}/refresh:
    post:
      tags:
        - Agent Compliance
      summary: Refresh agent snapshot
      description: >-
        Re-probe the agent and update its registry health (online, tools_count,
        response_time_ms), capability snapshot (inferred type, discovered
        tools), and compliance verdict (storyboard pass/fail counts). Use after
        fixing your agent so the registry shows fresh data without waiting for
        the periodic heartbeat (~1h).


        **Compliance re-run:** when the caller owns the agent or is an AAO admin
        and the capability probe succeeds, the full storyboard suite can run for
        several minutes on capability-rich agents with a fresh test session, and
        `agent_storyboard_status` is updated. Owner-triggered runs use
        `triggered_by: 'owner_test'`; admin-triggered support runs use
        `triggered_by: 'manual'`. Badge fan-out reissues verification badges off
        the new run. If the compliance call fails (timeout, OAuth wall, internal
        error), the capability/health portion still returns successfully —
        `compliance.ran` is `false` with an `error` string.


        **Auth:** owner of the agent, AAO admin, or static `ADMIN_API_KEY`.


        **Rate limits:** 60 seconds per agent URL, 30 requests per user per
        hour.
      operationId: refreshAgent
      parameters:
        - schema:
            type: string
            description: URL-encoded agent URL
            example: https%3A%2F%2Fvastlint.org%2Fmcp
          required: true
          description: URL-encoded agent URL
          name: encodedUrl
          in: path
        - schema:
            type: string
            enum:
              - respond-async
            description: >-
              Return the durable refresh operation immediately instead of
              waiting up to 90 seconds for a legacy synchronous result.
          required: false
          description: >-
            Return the durable refresh operation immediately instead of waiting
            up to 90 seconds for a legacy synchronous result.
          name: Prefer
          in: header
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                organization_id:
                  type: string
                  description: >-
                    Selected organization ID. The caller must own the agent in
                    this organization before its credentials are used.
      responses:
        '200':
          description: Snapshot refreshed inside the bounded 90-second compatibility window
          content:
            application/json:
              schema:
                type: object
                properties:
                  online:
                    type: boolean
                  tools_count:
                    type:
                      - integer
                      - 'null'
                  response_time_ms:
                    type:
                      - integer
                      - 'null'
                  inferred_type:
                    type: string
                    description: >-
                      Type inferred from discovered tools (sales, creative,
                      signals, governance, etc.) or 'unknown'
                  type_promoted:
                    type: boolean
                    description: >-
                      True when registry type was upgraded from unknown to
                      inferred_type
                  oauth_required:
                    type: boolean
                  checked_at:
                    type: string
                  error:
                    type: string
                  refresh_operation_id:
                    type: string
                    format: uuid
                    description: >-
                      Present when this response recovered a recently completed
                      operation.
                  test_session_id:
                    type: string
                    description: >-
                      Stable test-session identity, present on recovered
                      responses.
                  status_url:
                    type: string
                    description: Durable operation URL, present on recovered responses.
                  coalesced:
                    type: boolean
                  compliance:
                    type: object
                    properties:
                      ran:
                        type: boolean
                        description: >-
                          True if the full storyboard suite ran and
                          agent_storyboard_status was updated. False when
                          ownership couldn't be resolved, the agent reported
                          auth_required, or the compliance call itself failed.
                      run_id:
                        type: string
                        description: >-
                          Compliance run id written by this refresh. Use with
                          /compliance/diagnostics?run_id=... to inspect
                          failing-step wire evidence.
                      test_session_id:
                        type: string
                        description: >-
                          Fresh test session id used for the compliance run.
                          Useful when matching seller-side logs to the refresh.
                      requested_compliance_target:
                        type: string
                        description: >-
                          Requested compliance target before alias resolution,
                          e.g. 3.1, 3.0, 3.1-rc, or 3.1-beta. Present when `ran`
                          is true.
                      adcp_version:
                        type: string
                        description: >-
                          Concrete AdCP compliance bundle version used for the
                          run, e.g. 3.0.12 or 3.1.0-beta.7. Present when `ran`
                          is true.
                      badge_eligible:
                        type: boolean
                        description: True when this run can update public badge state.
                      badge_eligible_adcp_versions:
                        type: array
                        items:
                          type: string
                        description: >-
                          Public badge versions this run can issue, e.g.
                          ['3.0'].
                      overall_status:
                        type: string
                        description: >-
                          Aggregate verdict from the run (passing / failing /
                          partial / unknown). Only present when `ran` is true.
                      storyboards_passing:
                        type: integer
                        description: Number of storyboards passing on this run.
                      storyboards_total:
                        type: integer
                        description: Number of storyboards evaluated on this run.
                      observations_count:
                        type: integer
                        description: Number of advisory observations emitted by this run.
                      notices_count:
                        type: integer
                        description: Number of run-summary notices emitted by this run.
                      auth_available:
                        type: boolean
                        description: >-
                          True when the verifier resolved saved credentials for
                          the compliance run.
                      error:
                        type: string
                        description: Reason compliance didn't run when `ran` is false.
                    required:
                      - ran
                      - auth_available
                    description: >-
                      Compliance re-run summary. The capability/health portion
                      of the response is independent of this block — a failed
                      compliance run still returns the rest of the snapshot.
                required:
                  - online
                  - tools_count
                  - response_time_ms
                  - inferred_type
                  - type_promoted
                  - oauth_required
                  - checked_at
                  - compliance
        '202':
          description: Refresh accepted and observable through the durable status resource
          headers:
            Location:
              schema:
                type: string
                description: Relative URL of the durable refresh operation
              required: true
              description: Relative URL of the durable refresh operation
            Retry-After:
              schema:
                type: string
                description: Recommended polling interval in seconds
              required: true
              description: Recommended polling interval in seconds
            Preference-Applied:
              schema:
                type: string
                description: Present as respond-async when requested
              required: false
              description: Present as respond-async when requested
          content:
            application/json:
              schema:
                type: object
                properties:
                  refresh_operation_id:
                    type: string
                    format: uuid
                  test_session_id:
                    type: string
                  status:
                    type: string
                    enum:
                      - queued
                      - running
                  coalesced:
                    type: boolean
                    description: >-
                      True when the same credential context already had an
                      active refresh.
                  status_url:
                    type: string
                  requested_at:
                    type: string
                    format: date-time
                required:
                  - refresh_operation_id
                  - test_session_id
                  - status
                  - coalesced
                  - status_url
                  - requested_at
        '400':
          description: Invalid agent URL
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Authentication required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '403':
          description: Not authorized — must be owner or AAO admin
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: >-
            Monitoring paused, or another credential context is already
            refreshing this agent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '429':
          description: Rate limit exceeded
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                  retry_after:
                    type: integer
                    description: Seconds to wait before retrying
                required:
                  - error
                  - retry_after
        '500':
          description: Refresh failed after durable execution
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '502':
          description: Probe failed (timeout, DNS, OAuth wall, etc.)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '503':
          description: Durable refresh queue unavailable or at capacity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearerAuth: []
        - oauth2: []
components:
  schemas:
    Error:
      type: object
      properties:
        error:
          type: string
      required:
        - error
  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

````