Registering Agents

Registering Agents

Two registration paths depending on whether you are a personal developer or an organisation with a verified domain.

Option A — Personal Developer (no domain required)

Connect your GitHub account and claim ownership via your GitHub identity. If you are signed in, submitting an agent URL auto-claims ownership in the same request — no separate step needed.

A1 — GitHub Repository (simplest)

github.your-username/your-repo

Your agent card lives directly in the repo. No extra config needed.

  1. Add agent-card.json (or /.well-known/agent-card.json) to your repo root
  2. Connect your GitHub account in Settings
  3. Go to Submit Agent and paste your GitHub repo URL

A2 — Personal Hosting

github.your-username.agent-name

For agents on *.github.io or *.workers.dev where domain verification isn't possible.

  1. Add registry identity hints to your card's metadata (see below)
  2. Connect your GitHub account in Settings
  3. Go to Submit Agent and paste your agent URL
RECOMMENDED v1.0

Use A2A Registry Extension (Preferred)

The A2A v1.0 specification now supports extensions. The Registry Extension is the official way to declare identity hints and payment capabilities.

{
  "protocolVersion": "1.0.0",
  "capabilities": {
    "extensions": [{
      "uri": "https://a2a-registry.org/extensions/registry/v1",
      "required": false,
      "params": {
        "identity": {
          "provider": "github",
          "username": "your-github-username",
          "packageName": "github.your-github-username.agent-name"
        }
      }
    }]
  }
}
LEGACY v0.3

Alternative: metadata (Still Supported)

Why metadata and not a root-level field? The A2A v1.0 specification defines a strict schema for the agent card root object. Adding non-standard fields at the root level makes your card non-compliant and can cause validation failures in other A2A-compatible tools. The metadata object is the spec's official extension point — fields placed there are safely ignored by tools that don't understand them.

Reserved namespace: All metadata keys starting with registry (e.g. registryIdentity, registryPackageName, registryIdentityProvider) are reserved by the A2A Global Registry. Future registry features may introduce additional registry* keys. Third-party tools should not use this prefix for their own keys.

If you prefer the v0.3 method, add these fields inside your agent card's metadata object:

"metadata": {
  "registryIdentityProvider": "github",
  "registryIdentity": "your-github-username",
  "registryPackageName": "github.your-github-username.agent-name"
}
FieldValue
registryIdentityProviderAlways "github" for now
registryIdentityYour exact GitHub username (case-insensitive match)
registryPackageNameMust start with github.{registryIdentity}.

These fields are only trusted when the agent URL comes from *.github.io or *.workers.dev. Only you can serve content from your subdomain, making this proof of ownership.

Already in the directory as Unclaimed? Find your agent, click View & Claimon the agent detail page — the same identity check runs automatically, no resubmission needed. If the agent was listed under an auto-generated name (e.g. dev.workers.my_agent), the registry migrates it to your declared registryPackageName and keeps the old name as an alias so existing links still work.

Option B — Organisation with a Verified Domain

Use this for business or team accounts deploying under their own domain. Domain verification proves you control the DNS, giving your agents the highest trust level in the registry.

📥 Submit Agent

Index any publicly available agent into the directory. No account required.

  • Location: /submit
  • Auth: Not required
  • Ownership: Agent has no owner
  • Status: UNCLAIMED
Go to Submit →

🚀 Publish Agent

Create and manage agents you own. Requires authentication and a verified domain.

  • Location: /console/agents
  • Auth: Required
  • Ownership: You own the agent
  • Status: STAGE → ACTIVE
Go to My Agents →
  1. Sign in and create an organisation
  2. In Organisation Settings, add the DNS TXT record shown there to your domain's DNS
  3. Click Verify to confirm ownership
  4. Go to Console → My Agents, click Publish Agent, choose Website as the source, and enter your agent card URL
  5. Click Go Live to publish

Agent Sources

When publishing an agent, you can import from various sources:

SourceDescriptionPackage Name
GitHub RepoImport from repo with agent-card.jsongithub.{username}/{repo}
Personal HostingAgent on *.github.io or *.workers.dev with registry identity hints in card metadatagithub.{username}.{slug}
Website ScanScan /.well-known/agent-card.jsoncom.domain.{slug}
ANS EndpointImport from GoDaddy ANSANS-derived
UploadUpload agent-card.json fileuser.{userId}.{slug}
ManualFill out formuser.{userId}.{slug}

Agent States

STAGE
→
ACTIVE
→
STAGE

Publish to go live, Unpublish to return to draft

StateDescriptionVisibility
STAGEDraft, only owner can seeOwner only
ACTIVEPublished, in public directoryEveryone
UNCLAIMEDSubmitted but no ownerPublic (read-only)

Publishing Flow

  1. Create — Import or manually create your agent in STAGE state
  2. Test — Use the Playground to verify functionality
  3. Publish — Verification check, then move to ACTIVE
  4. Manage — Update, unpublish, or delete as needed

Tip: For verifiable sources (GitHub, Website, ANS), publishing triggers a re-verification to ensure the agent card still matches your records.