Agent Registry assigns distinct identifiers and identities to your registered agents, MCP servers, endpoints, and skills so that you can discover capabilities, enforce access policies, and route runtime traffic. Understanding how each identifier layer works helps you configure search queries, security policies, and network routes across your AI ecosystem.
Architectural layers
Agent Registry uses four distinct layers to identify, govern, and route registered components:
- Registry identifiers: logical, immutable Uniform Resource Names (URNs), including agent identifiers, MCP server identifiers, endpoint identifiers, and skill identifiers, used for searching, registry discovery, and filtering. These URNs aren't used for runtime governance.
- Resource names: standard, globally unique
Google Cloud
resource names that Agent Registry assigns
to
Service,Agent,McpServer,Endpoint, andSkillresources. Downstream services, such as Agent Gateway route rules, Identity-Aware Proxy (IAP) egress policies, and Identity and Access Management (IAM) policy bindings, use the resource names ofAgent,McpServer,Endpoint, andSkillresources to enforce governance policies. - Agent principals: verifiable IAM identities, such as SPIFFE IDs for agents running on Google Cloud or service accounts for external agents, used for caller authentication, authorization, and audit logging.
- Runtime references: compute or infrastructure
paths stored in the
RuntimeReferencemessage and used for topology queries and egress traffic matching.
The following table compares each layer, its primary purpose, downstream governance role, and syntax:
| Layer | Primary purpose | Governance role | Syntax |
|---|---|---|---|
| Registry identifiers | Stable registry discovery, metadata tagging, and search. | Immutable and not used for governance. |
|
| Resource names | Target resource identification for policy enforcement. | Required by policies and used by Agent Gateway routes and IAP bindings. |
|
| Agent principals | Caller authentication, authorization, and audit logging. | Enforced by IAM. |
|
| Runtime references | Physical compute routing and outbound traffic matching. | Evaluated in topology queries and in Agent Gateway to match network traffic. |
agentregistry.googleapis.com/system/RuntimeReference
containing the compute or infrastructure path as
uri: "RUNTIME_URI"
|
Registry identifiers
A registry identifier is a globally unique, immutable Uniform Resource Name (URN) that Agent Registry assigns to a registered component. This URN provides a stable reference for consumers and orchestrator agents to discover, filter, and search components in Agent Registry, remaining constant regardless of underlying infrastructure migrations or code updates.
Registry identifiers are logical URNs used exclusively for registry discovery and metadata annotation. They differ from agent principals and resource names, and can't be used in IAM policy bindings, authorization headers, or Agent Gateway route rules.
Agent Registry uses four types of registry identifiers:
- Agent identifiers (
agentId) - MCP server identifiers (
mcpServerId) - Endpoint identifiers (
endpointId) - Skill identifiers (
skillId)
Agent identifiers
Agent Registry assigns an agent identifier (agentId) to all registered
agents, including built-in Google agents and custom or external agents. Agent
identifiers are only used to discover and filter agents in Agent Registry,
not in IAM policies. To grant or restrict an agent's access in
IAM policies, use its agent principal.
Agent Registry automatically generates agent identifiers during ingestion. The exact URN structure depends on the compute environment where the agent is deployed:
- Agent Runtime on Gemini Enterprise Agent Platform:
urn:agent:projects-PROJECT_NUMBER:projects:PROJECT_NUMBER:locations:REGION:aiplatform:reasoningEngines:AGENT_ID - Cloud Run services:
urn:agent:projects-PROJECT_NUMBER:projects:PROJECT_NUMBER:locations:REGION:run:services:SERVICE_NAME - Cloud Run jobs:
urn:agent:projects-PROJECT_NUMBER:projects:PROJECT_NUMBER:locations:REGION:run:jobs:JOB_NAME - Google Kubernetes Engine (GKE) deployments:
urn:agent:projects-PROJECT_NUMBER:projects:PROJECT_NUMBER:locations:REGION:container:clusters:CLUSTER_NAME:k8s:namespaces:NAMESPACE:apps:deployments:DEPLOYMENT_NAME - Gemini Enterprise:
urn:agent:projects-PROJECT_NUMBER:projects:PROJECT_NUMBER:locations:global:discoveryengine:collections:default_collection:engines:ENGINE_ID:assistants:default_assistant:agents:AGENT_ID - Google Workspace:
urn:agent:googleapis.com:locations:global:workspaceagent:workspaceagent--a2a - Manually registered agents:
urn:agent:projects-PROJECT_NUMBER:projects:PROJECT_NUMBER:locations:LOCATION:agentregistry:services:AGENT_ID
MCP server identifiers
An MCP server identifier (mcpServerId) is a registry identifier used to
discover an MCP server and its tools in Agent Registry.
MCP servers only respond to requests and don't have an IAM principal. When an agent invokes tools on an MCP server, access is authorized using the calling agent principal.
The following are the URN formats for MCP server identifiers:
- Google and Google Cloud remote MCP servers:
urn:mcp:googleapis.com:projects:PROJECT_NUMBER:locations:global:SERVER_ID - Cloud Run services:
urn:mcp:projects-PROJECT_NUMBER:projects:PROJECT_NUMBER:locations:REGION:run:services:SERVICE_NAME - GKE deployments:
urn:mcp:projects-PROJECT_NUMBER:projects:PROJECT_NUMBER:locations:REGION:container:clusters:CLUSTER_NAME:k8s:namespaces:NAMESPACE:apps:deployments:DEPLOYMENT_NAME - Manually registered MCP servers:
urn:mcp:projects-PROJECT_NUMBER:projects:PROJECT_NUMBER:locations:LOCATION:agentregistry:services:SERVER_ID
Endpoint identifiers
An endpoint identifier (endpointId) is a registry identifier assigned to a
registered endpoint for discovering
target API destinations.
The URN format for manually registered endpoints is
urn:endpoint:projects-PROJECT_NUMBER:projects:PROJECT_NUMBER:locations:LOCATION:agentregistry:services:ENDPOINT_ID.
Skill identifiers
A skill identifier (skillId) is a registry identifier assigned to a
standalone skill for discovering and
resolving skill packages in Agent Registry.
The following are the URN formats for skill identifiers, which depend on the skill's publisher:
- Google-managed publishers:
urn:skill:PUBLISHER_ID:NAMESPACE:SKILL_ID - Private publishers:
urn:skill:projects-PROJECT_NUMBER:locations:LOCATION:private-SKILL_ID
Resource names
Whether a component is registered automatically or manually, Agent Registry
assigns a standard Google Cloud
resource name to the resulting read-only Agent,
McpServer, or Endpoint discovery resource, or Skill resource. Each
resource name is formatted as a hierarchical URI path in your
governance project:
- Agents:
projects/PROJECT_NUMBER/locations/LOCATION/agents/agentregistry-ID - MCP servers:
projects/PROJECT_NUMBER/locations/LOCATION/mcpServers/agentregistry-ID - Endpoints:
projects/PROJECT_NUMBER/locations/LOCATION/endpoints/agentregistry-ID Skills:
projects/PROJECT_NUMBER/locations/LOCATION/skills/SKILL_IDFor manually registered skills,
SKILL_IDincludes theprivate-prefix, such asprivate-SKILL_ID.Each versioned skill revision uses
projects/PROJECT_NUMBER/locations/LOCATION/skills/SKILL_ID/revisions/REVISION_ID.
When you
manually register
an agent, an MCP server, or an endpoint, you create a writable Service
resource that generates the corresponding read-only Agent, McpServer, or
Endpoint resource. The Service resource has its own resource name:
projects/PROJECT_NUMBER/locations/LOCATION/services/SERVICE_ID
You can query both read-only and writable resources to view their resource
names. When you query a Service resource in a terminal by using, for example,
the
gcloud agent-registry services describe
command, the output also displays a registryResource field, which shows the
resource name of the corresponding read-only Agent, McpServer, or
Endpoint resource. For more information, see
Manage agents,
Manage MCP servers and tools,
Manage and discover endpoints,
and Manage skills.
Resource names can be used to bind policies, route network traffic, and configure access controls. Downstream governance surfaces, including Agent Gateway route rules, IAP egress policies, and IAM resource policies, evaluate against this resource name. Don't use registry identifier URNs in policy bindings or route rules. Use resource names instead. For troubleshooting information, see Resource entity not found error when managing IAP policies.
Agent principals
An agent principal is an agent's identity in IAM. Grant roles to an agent principal in the same way you would to a user or service account to grant or restrict access.
In Agent Registry, how an agent is identified as a principal depends on where it runs:
- Agents running on Google Cloud infrastructure: for managed
runtimes such as Agent Runtime,
Google Cloud automatically provisions a managed workload identity
formatted as a SPIFFE ID, which is bound directly to
the agent's compute runtime. When referencing this identity in
IAM allow policies and bindings, you must use the
IAM principal or principal set string format rather than the
SPIFFE URI scheme. Using a SPIFFE string for an IAM policy
binding returns an
INVALID_ARGUMENTerror. - Agents running outside Google Cloud: external or on-premises agents must federate their external identity through Workload Identity Federation or use a standard service account to interact with Google Cloud resources. After authentication, that federated workload identity string or service account email acts as the agent principal in IAM policies.
For agents running on Google Cloud, because the managed agent principal is bound directly to the compute resource of the agent's runtime, the principal string incorporates the full path to that underlying compute resource.
IAM supports governing agent access across the following scopes:
- Single engine instance: grants permissions to a specific agent
deployment. For example, an individual
Agent Runtime instance is represented
through a single principal string:
principal://agents.global.org-ORGANIZATION_ID.system.id.goog/resources/aiplatform/projects/PROJECT_NUMBER/locations/REGION/reasoningEngines/REASONING_ENGINE_ID - Project scope: grants permissions to all reasoning engines running
inside a specific project through a principal set:
principalSet://agents.global.org-ORGANIZATION_ID.system.id.goog/attribute.platformContainer/aiplatform/projects/PROJECT_NUMBER - Organization-wide scope: grants permissions to all agents across the
entire organization through a principal set wildcard:
principalSet://agents.global.org-ORGANIZATION_ID.system.id.goog/*
Agent Registry displays the individual agent principal as an output-only attribute when you view the details of an agent.
Runtime references
A runtime reference points to the underlying compute infrastructure where the code for an agent, MCP server, or endpoint runs. For example, a runtime reference can point to an Agent Runtime reasoning engine, a GKE deployment, or a Cloud Run service.
An agent's principal string includes its runtime reference path, which ties IAM permissions directly to where the agent runs. If you register an agent in a governance project that is different from where it is deployed, the runtime reference points to the project hosting the underlying workload.
In Agent Registry, the runtime reference is represented by the
agentregistry.googleapis.com/system/RuntimeReference attribute, which
contains the compute or infrastructure path in its uri field. You can view
this output-only attribute as part of the agent details or use it to query
traffic flows and relationships in the
topology graph.
What's next
- Learn about Roles and permissions.
- Manage agents.
- Understand the Agent Registry data model.
- Explore general Key concepts.