Member Agents

Register an agent

Changed on

Register an agent on the caller's organization member profile.

Idempotent on url: re-posting the same url updates the entry in place rather than creating a duplicate. New entries return 201; updates return 200.

The organization must already exist. Human credentials select it explicitly with ?org=; an API key uses the exact organization scope returned by WorkOS. The endpoint never creates an organization. If the existing organization has no member profile, the server creates a private profile and includes profile_auto_created: true.

type is required and declared by the caller — the server does not infer it. Server-side smuggle protection still cross-checks the declared type against the agent's capability snapshot when one exists; if the snapshot contradicts the declaration without classifying it, the stored value is unknown and the dashboard surfaces the conflict for the owner to resolve.

visibility: "public" requires a paid AAO tier (Professional, Builder, Member, or Leader) and a verified primary domain on the organization (set via the Linked Domains UI). Non-API-tier callers (Explorer or no tier) who request public will have the entry stored as members_only instead, and the response will include a visibility_downgraded warning describing the coercion.

post/api/me/agents

Request

  • Base URL
    https://agenticadvertising.org
  • URL
    https://agenticadvertising.org/api/me/agents
  • Auth
    • HTTP bearer
    • or OAuth 2
      Authorization code: https://agenticadvertising.org/authorize
      Token URL: https://agenticadvertising.org/token

Query parameters

orgstring

WorkOS organization id to act on. Human sessions and user JWTs must select it explicitly. WorkOS API keys may omit it because their validated credential already carries an exact organization scope; when supplied with an API key it must match that scope.

Example:org_01HXZAB123

Request body

urlstring uri required
type'brand' | 'rights' | 'measurement' | 'governance' | 'creative' | 'sales' | 'buying' | 'signals' required

Agent type the caller declares. Required on register; smuggle-protection still cross-checks against the capability snapshot when one exists. The server never infers type — the owner declares what kind of agent this is.

namestring
visibility'private' | 'members_only' | 'public'

Visibility tier on the registry catalog. private = profile owner only; members_only = AAO API-tier members on operator lookup; public = listed in the public catalog and reflected in the org's brand.json (requires a paid AAO tier — Professional, Builder, Member, or Leader).

health_check_urlstring uri

Example request

{
  "url": "https://agent.example.com/mcp"
}

Response

Agent already registered at this url; entry updated in place.

profile_auto_createdboolean

Set to true when this POST was the first agent registration on the caller's organization and the server auto-created a private member profile (display name = organization name, is_public: false). Absent on subsequent calls and on update-in-place. Surfaced so storefront-style integrations can show a "we set up your profile" hint without needing to detect the prior 404 → bootstrap → retry shape.

Example response

{
  "agent": {
    "url": "https://agent.example.com/mcp"
  }
}

Changes

    • warning

      removed the optional property from the response with the status

    • warning

      removed the optional property from the response with the status

    • info

      added the non-success response with the status