Skip to main content
The AdCP registry catalog (/api/registry/agents, /api/registry/publishers) contains only AAO-attested, member-enrolled agents. To appear in the catalog, an AAO member must explicitly enroll the agent on their member profile.

How agents end up in the registry

There is one path: an AAO member adds the agent to their member profile via the dashboard or PUT /api/me/member-profile. End-to-end via the dashboard: under five minutes.
  1. Sign in or sign up. Go to agenticadvertising.org/auth/login. New here? Use Sign up to create your account, then accept your AAO organization invite (or start a membership if your org isn’t on AAO yet).
  2. Open the agents dashboard. Once signed in, go to agenticadvertising.org/dashboard/agents. The URL auto-resolves your org context.
  3. Click + Register agent in the top-right of the page. (On a brand-new org with no agents yet, the empty-state CTA reads Register your first agent and triggers the same flow.)
  4. Talk to Addie. The button drops you into chat with Addie pre-loaded with the prompt “Help me register my agent.” Addie will walk you through:
    • Agent URL — e.g. https://agent.yourcompany.com/mcp
    • Display name (optional)
    • Agent type — declare what your agent does: brand, rights, measurement, governance, creative, sales, buying, or signals. Addie asks the owner rather than guessing from the name or URL.
    • Auth method — pick one: None · Static bearer · Static basic · OAuth client credentials. (Interactive OAuth user authorization is configured separately — register with None here, then click Authorize on the agent card to sign in.)
    • Secure credential entry — enter tokens and client secrets on the dashboard after Addie saves the registration; keep them out of chat.
    • Protocol — defaults to MCP; Addie asks only if your URL is ambiguous
  5. Save the registration. Addie calls save_agent. On success, your agent lands in the registry catalog with visibility: "members_only" (visible to other paying AgenticAdvertising.org members — Professional, Builder, Member, or Leader; not publicly listed). If credentials will be entered on the dashboard, Addie uses configure_auth_in_dashboard: true without credential fields and returns a link to the selected organization’s agents dashboard. Existing credentials are preserved.
  6. Configure authentication, if required. On your agent’s card, click Connect agent (or Update auth). For machine-to-machine OAuth, choose OAuth client credentials (machine-to-machine), enter the token endpoint, client ID, and client secret, then click Save credentials. Bearer/basic credentials use the same form. Do not click Register agent again — that opens Addie’s registration chat. Saving a registration alone does not verify authentication or compliance.
  7. Optional — go public. Back on /dashboard/agents, change the agent’s visibility from Members only to Public. Public visibility requires a paid AAO tier (Professional, Builder, Member, or Leader) and a primary brand domain on your member profile so the agent can be added to your brand.json.
Type is declared by the owner. Addie requires your declared type when saving. Capability probes establish verified capabilities separately; a saved declaration alone is not evidence that the agent has been probed or verified. What this path records: the organization explicitly enrolls the agent and declares its identity. Authentication, capability checks, and compliance results are separate from registration. Visibility can be public, members_only, or private — see Visibility below. There is no auto-population from crawled adagents.json files. Agents listed in third-party adagents.json files populate the publisher-authorization graph used by the Operator lookup endpoint (GET /api/registry/operator?domain=X), /api/registry/lookup/domain, and hasValidAdagents, but they do not create catalog entries.

Programmatic registration (for CI, scripts, agents)

To register agents from CI, a deploy hook, or your own agent — without the dashboard or Addie — use the per-agent REST endpoints under /api/me/agents. They share the same visibility gate, server-side type resolution, and audit log as the dashboard path, so the members_only default, the tier_required check on public, and the type smuggle-protection all apply identically. Authenticate with a WorkOS API key (Authorization: Bearer sk_…) or an OAuth user JWT. Mint an API key under agenticadvertising.org/dashboard/api-keys. The path parameter on PATCH and DELETE is the agent’s url, URL-encoded (e.g. https%3A%2F%2Fagent.example.com%2Fmcp). POST is idempotent on url: new entries return 201; re-posting the same url updates the existing entry and returns 200. Each successful write returns { agent, warnings? } — warnings lists any tier-driven visibility downgrades (e.g. an Explorer-tier caller asking for public is stored as members_only with a visibility_downgraded warning).

Prerequisites

  • An AAO member profile must already exist for your organization. Create one via the dashboard or POST /api/me/member-profile first; the agent endpoints return 404 until then.
  • For visibility: "public", your organization needs a paid AAO tier (Professional, Builder, Member, or Leader) and a primary_brand_domain set on the profile so the agent can be added to your brand.json. See Visibility below.

What this means if you are not an AAO member

You cannot self-register today. Your operator must be an AAO member to enroll your agent in the registry catalog. Crawl-discovered listings (your agent referenced in someone’s adagents.json) populate the authorization graph used for property-authorization checks but do not create a catalog entry — /api/registry/agents is members-only. Become a member to access the registration path.

Visibility

Member-enrolled agents have one of three visibility levels: The /api/registry/operator?domain=X endpoint is auth-aware: anonymous callers see only public agents; authenticated AAO API-tier callers see members_only agents; profile owners additionally see private agents. Its agent_visibility_summary reports public and members-only registration counts to every caller, so an empty visibility-filtered agents array does not imply that the organization has no discoverable registrations. Private registrations are excluded so their existence remains visible only to the profile owner.

Membership benefits

Become a member to access the registered path.

Verifying how your agent appears

Query the registry directly:
If your agent’s URL is in the response, it is enrolled and member identifies the organization that owns the listing. If it is absent, the lookup does not establish whether a registration exists outside your visibility scope. Sign in and check your organization’s agents dashboard before registering it again. To check whether your agent is referenced in a publisher’s adagents.json (for authorization purposes, separate from catalog enrollment), call /api/registry/lookup/domain/{domain} against the publisher’s domain.
  • Registry overview — endpoint catalog, lookup flows, and brand resolution.
  • GET /api/registry/operator?domain=X — auth-aware per-entity view of agents and authorizations.
  • GET /api/registry/agents — full registry catalog.
  • POST /api/registry/crawl-request - refresh a publisher’s adagents.json mapping in the authorization graph.