--- a/base/index.html +++ b/head/index.html @@ -192,19 +192,19 @@ "specVersion": "1.0", "entries": [ { - "identifier": "urn:example:skill:code-review", + "identifier": "urn:ai:example.com:skill:code-review", "displayName": "Code Review Assistant", "type": "application/ai-skills+zip", "url": "https://skills.example.com/code-review/skill.zip" }, { - "identifier": "urn:example:mcp:weather", + "identifier": "urn:ai:example.com:mcp:weather", "displayName": "Weather Service", "type": "application/mcp-server+json", "url": "https://api.example.com/.well-known/mcp/server-card.json" }, { - "identifier": "urn:example:a2a:research", + "identifier": "urn:ai:example.com:a2a:research", "displayName": "Research Assistant", "type": "application/a2a-agent-card+json", "url": "https://agents.example.com/researchAssistant" @@ -260,10 +260,21 @@ It MUST contain the following members:

identifier
-
A string identifying this artifact. This SHOULD be a URN - [[RFC8141]] or URI [[RFC3986]] (e.g., urn:example:agent:name). - See Multi-Version Entries for uniqueness - rules when multiple versions are present.
+
A string uniquely identifying this artifact. This field is an open text format (e.g., any valid URI or URN is accepted). However, to ensure interoperability, identity uniqueness, and discoverability, the standard urn:ai naming structure is HIGHLY RECOMMENDED and MUST be used for open or federated systems.
+
+

Standard Naming Format: + urn:ai:{publisher}:{namespace}:{name}

+ +

Examples: + - urn:ai:example.com:skill:code-review + - urn:ai:example.com:mcp:weather

+

For closed or local systems where a different identifier format is used, client implementations are responsible for parsing and processing the custom format as appropriate.

+

See Multi-Version Entries for uniqueness rules when multiple versions are present.

+
displayName
A string containing a human-readable name for the artifact.
type
@@ -338,7 +349,7 @@ "specVersion": "1.0", "entries": [ { - "identifier": "urn:acme:agent:finance", + "identifier": "urn:ai:acme.com:agent:finance", "displayName": "Acme Finance Agent", "version": "2.1.0", "type": "application/a2a-agent-card+json", @@ -346,7 +357,7 @@ "updatedAt": "2026-03-15T10:00:00Z" }, { - "identifier": "urn:acme:agent:finance", + "identifier": "urn:ai:acme.com:agent:finance", "displayName": "Acme Finance Agent", "version": "2.0.0", "type": "application/a2a-agent-card+json", @@ -447,7 +458,7 @@

For example, a Trust Manifest with identity, attestations, and provenance:

{
-  "identity": "urn:acme:agent:finance",
+  "identity": "urn:ai:acme.com:agent:finance",
   "identityType": "did",
   "trustSchema": {
     "identifier": "urn:trust:acme-enterprise-v1",
@@ -696,19 +707,19 @@
   },
   "entries": [
     {
-      "identifier": "urn:acme:catalog:finance",
+      "identifier": "urn:ai:acme.com:catalog:finance",
       "displayName": "Finance Services",
       "type": "application/ai-catalog+json",
       "url": "https://acme.com/catalogs/finance.json"
     },
     {
-      "identifier": "urn:acme:catalog:ml",
+      "identifier": "urn:ai:acme.com:catalog:ml",
       "displayName": "ML Models",
       "type": "application/ai-catalog+json",
       "url": "https://acme.com/catalogs/ml.json"
     },
     {
-      "identifier": "urn:acme:catalog:devops",
+      "identifier": "urn:ai:acme.com:catalog:devops",
       "displayName": "DevOps Tools",
       "type": "application/ai-catalog+json",
       "url": "https://acme.com/catalogs/devops.json"
@@ -721,7 +732,7 @@
 acquired as a unit. For example, a finance plugin that ships an A2A
 agent, an MCP server, and a dataset together:

{
-  "identifier": "urn:acme:plugin:finance-suite",
+  "identifier": "urn:ai:acme.com:plugin:finance-suite",
   "displayName": "Finance Plugin",
   "type": "application/ai-catalog+json",
   "url": "https://acme.com/plugins/finance-suite.json",
@@ -1019,8 +1030,8 @@
 

Identifier Typosquatting

Catalog entries are identified by URIs/URNs. An attacker can register -identifiers similar to legitimate ones (e.g., urn:acme:agent:financ -vs. urn:acme:agent:finance) to trick consumers into using a +identifiers similar to legitimate ones (e.g., urn:ai:acme.com:agent:financ +vs. urn:ai:acme.com:agent:finance) to trick consumers into using a malicious artifact.

Registries and consumers SHOULD implement similarity checks on identifiers. Publishers SHOULD use identifiers anchored to domains @@ -1291,7 +1302,7 @@ }, "entries": [ { - "identifier": "urn:acme:agent:finance-a2a", + "identifier": "urn:ai:acme.com:agent:finance-a2a", "displayName": "Acme Finance A2A Agent", "version": "2.1.0", "type": "application/a2a-agent-card+json", @@ -1303,7 +1314,7 @@ "displayName": "Acme Financial Corp" }, "trustManifest": { - "identity": "urn:acme:agent:finance-a2a", + "identity": "urn:ai:acme.com:agent:finance-a2a", "attestations": [ { "type": "publisher-identity", @@ -1322,7 +1333,7 @@ "updatedAt": "2026-03-15T10:00:00Z" }, { - "identifier": "urn:acme:server:finance-mcp", + "identifier": "urn:ai:acme.com:server:finance-mcp", "displayName": "Acme Finance MCP Server", "version": "1.4.0", "type": "application/mcp-server+json", @@ -1332,7 +1343,7 @@ "updatedAt": "2026-03-15T10:00:00Z" }, { - "identifier": "urn:acme:plugin:finance-suite", + "identifier": "urn:ai:acme.com:plugin:finance-suite", "displayName": "Acme Finance Suite", "type": "application/ai-catalog+json", "description": "A2A agent + MCP server + dataset for finance workflows.", @@ -1341,24 +1352,24 @@ "specVersion": "1.0", "entries": [ { - "identifier": "urn:acme:agent:finance-a2a", + "identifier": "urn:ai:acme.com:agent:finance-a2a", "displayName": "Finance A2A Agent", "type": "application/a2a-agent-card+json", "url": "https://api.acme-corp.com/agents/finance.json" }, { - "identifier": "urn:acme:server:finance-mcp", + "identifier": "urn:ai:acme.com:server:finance-mcp", "displayName": "Finance MCP Server", "type": "application/mcp-server+json", "url": "https://api.acme-corp.com/.well-known/mcp/server-card.json" }, { - "identifier": "urn:acme:data:market-2026q1", + "identifier": "urn:ai:acme.com:data:market-2026q1", "displayName": "Market Dataset Q1 2026", "type": "application/parquet", "url": "https://data.acme-corp.com/market-2026q1.parquet", "trustManifest": { - "identity": "urn:acme:data:market-2026q1", + "identity": "urn:ai:acme.com:data:market-2026q1", "provenance": [ { "relation": "publishedFrom", @@ -1371,7 +1382,7 @@ ] }, "trustManifest": { - "identity": "urn:acme:plugin:finance-suite", + "identity": "urn:ai:acme.com:plugin:finance-suite", "signature": "eyJhbGciOiJFUzI1NiJ9..detached" }, "updatedAt": "2026-03-20T14:00:00Z" @@ -1394,7 +1405,7 @@ }, "entries": [ { - "identifier": "urn:acme:agent:assistant", + "identifier": "urn:ai:acme.com:agent:assistant", "displayName": "Acme Corporate Assistant", "version": "3.0.0", "type": "application/a2a-agent-card+json", @@ -1402,7 +1413,7 @@ "description": "General-purpose corporate assistant agent." }, { - "identifier": "urn:acme:catalog:finance", + "identifier": "urn:ai:acme.com:catalog:finance", "displayName": "Finance Services", "type": "application/ai-catalog+json", "url": "https://acme-corp.com/catalogs/finance.json", @@ -1410,7 +1421,7 @@ "tags": ["finance", "trading", "compliance"] }, { - "identifier": "urn:acme:catalog:engineering", + "identifier": "urn:ai:acme.com:catalog:engineering", "displayName": "Engineering Tools", "type": "application/ai-catalog+json", "url": "https://acme-corp.com/catalogs/engineering.json", @@ -1418,7 +1429,7 @@ "tags": ["engineering", "devops", "ci-cd"] }, { - "identifier": "urn:acme:catalog:ml-models", + "identifier": "urn:ai:acme.com:catalog:ml-models", "displayName": "ML Models", "type": "application/ai-catalog+json", "url": "https://acme-corp.com/catalogs/ml-models.json", @@ -1439,7 +1450,7 @@ represented as one catalog entry whose content is a nested catalog containing both protocol-specific entries:

{
-  "identifier": "urn:acme:agent:finance",
+  "identifier": "urn:ai:acme.com:agent:finance",
   "displayName": "Acme Finance Agent",
   "type": "application/ai-catalog+json",
   "description": "Finance agent accessible via both MCP and A2A protocols.",
@@ -1452,13 +1463,13 @@
     "specVersion": "1.0",
     "entries": [
       {
-        "identifier": "urn:acme:agent:finance:mcp",
+        "identifier": "urn:ai:acme.com:agent:finance:mcp",
         "displayName": "Acme Finance MCP Server",
         "type": "application/mcp-server+json",
         "url": "https://api.acme-corp.com/.well-known/mcp/server-card.json"
       },
       {
-        "identifier": "urn:acme:agent:finance:a2a",
+        "identifier": "urn:ai:acme.com:agent:finance:a2a",
         "displayName": "Acme Finance A2A Agent",
         "type": "application/a2a-agent-card+json",
         "url": "https://api.acme-corp.com/agents/finance"
@@ -1466,7 +1477,7 @@
     ]
   },
   "trustManifest": {
-    "identity": "urn:acme:agent:finance",
+    "identity": "urn:ai:acme.com:agent:finance",
     "attestations": [
       {
         "type": "SOC2-Type2",
@@ -1643,7 +1654,7 @@
       "size": 1024,
       "artifactType": "application/a2a-agent-card+json",
       "annotations": {
-        "ai-catalog.identifier": "urn:acme:agent:finance-a2a",
+        "ai-catalog.identifier": "urn:ai:acme.com:agent:finance-a2a",
         "ai-catalog.displayName": "Acme Finance A2A Agent"
       }
     },
@@ -1653,7 +1664,7 @@
       "size": 512,
       "artifactType": "application/mcp-server+json",
       "annotations": {
-        "ai-catalog.identifier": "urn:acme:server:finance-mcp",
+        "ai-catalog.identifier": "urn:ai:acme.com:server:finance-mcp",
         "ai-catalog.displayName": "Acme Finance MCP Server"
       }
     }
@@ -1863,7 +1874,7 @@
 url points to the server.json document and whose type
 reflects the Registry format:

{
-  "identifier": "urn:mcp:io.modelcontextprotocol.anonymous/brave-search",
+  "identifier": "urn:ai:io.modelcontextprotocol.anonymous:mcp:brave-search",
   "displayName": "Brave Search",
   "version": "1.0.2",
   "type": "application/mcp-server+json",
@@ -1875,7 +1886,7 @@
     "displayName": "Model Context Protocol"
   },
   "trustManifest": {
-    "identity": "urn:mcp:io.modelcontextprotocol.anonymous/brave-search",
+    "identity": "urn:ai:io.modelcontextprotocol.anonymous:mcp:brave-search",
     "attestations": [
       {
         "type": "publisher-identity",
@@ -1923,7 +1934,7 @@
   },
   "entries": [
     {
-      "identifier": "urn:mcp:io.modelcontextprotocol.anonymous/brave-search",
+      "identifier": "urn:ai:io.modelcontextprotocol.anonymous:mcp:brave-search",
       "displayName": "Brave Search",
       "version": "1.0.2",
       "type": "application/mcp-server+json",
@@ -1932,7 +1943,7 @@
       "tags": ["search", "brave"]
     },
     {
-      "identifier": "urn:mcp:io.github.modelcontextprotocol/filesystem",
+      "identifier": "urn:ai:io.github.modelcontextprotocol:mcp:filesystem",
       "displayName": "Filesystem",
       "version": "1.0.2",
       "type": "application/mcp-server+json",
@@ -1941,7 +1952,7 @@
       "tags": ["filesystem", "files"]
     },
     {
-      "identifier": "urn:mcp:io.github.example/weather-mcp",
+      "identifier": "urn:ai:io.github.example:mcp:weather-mcp",
       "displayName": "Weather",
       "version": "0.5.0",
       "type": "application/mcp-server+json",
@@ -2019,7 +2030,7 @@
 

The two mechanisms layer naturally. An AI Catalog entry for an MCP server can reference the Server Card as its artifact content:

{
-  "identifier": "urn:mcp:example.com:finance-server",
+  "identifier": "urn:ai:example.com:mcp:finance-server",
   "displayName": "Acme Finance MCP Server",
   "type": "application/mcp-server+json",
   "url": "https://api.acme-corp.com/.well-known/mcp/server-card.json",
@@ -2030,7 +2041,7 @@
     "displayName": "Acme Financial Corp"
   },
   "trustManifest": {
-    "identity": "urn:mcp:example.com:finance-server",
+    "identity": "urn:ai:example.com:mcp:finance-server",
     "attestations": [
       {
         "type": "publisher-identity",
@@ -2280,7 +2291,7 @@
     "displayName": "Anthropic"
   },
   "data": {
-      "specVersion": "1.0",
+    "specVersion": "1.0",
     "entries": [
       {
         "identifier": "urn:claude-plugin:anthropic:example-plugin:mcp",