--- 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:
identifierurn:example:agent:name).
- See Multi-Version Entries for uniqueness
- rules when multiple versions are present.urn:ai naming structure is HIGHLY RECOMMENDED and MUST be used for open or federated systems.Standard Naming Format:
+ urn:ai:{publisher}:{namespace}:{name}
{publisher}: The domain name of the organization publishing the artifact (e.g., example.com).{namespace}: The logical namespace, which can contain one or more colon-separated categories (e.g., mcp, skill, agent, finance:agent).{name}: The stable, unique name of the artifact within the publisher's namespace.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.
+displayNametypeFor 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",