--- a/base/rendered.txt +++ b/head/rendered.txt @@ -134,19 +134,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" @@ -213,10 +213,24 @@ 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} + +{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. displayName @@ -317,7 +331,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", @@ -325,7 +339,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", @@ -449,7 +463,7 @@ provenance: { -"identity": "urn:acme:agent:finance", +"identity": "urn:ai:acme.com:agent:finance", "identityType": "did", "trustSchema": { "identifier": "urn:trust:acme-enterprise-v1", @@ -737,19 +751,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" @@ -763,7 +777,7 @@ 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", @@ -1088,8 +1102,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 @@ -1394,7 +1408,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", @@ -1406,7 +1420,7 @@ "displayName": "Acme Financial Corp" }, "trustManifest": { -"identity": "urn:acme:agent:finance-a2a", +"identity": "urn:ai:acme.com:agent:finance-a2a", "attestations": [ { "type": "publisher-identity", @@ -1425,7 +1439,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", @@ -1435,7 +1449,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.", @@ -1444,24 +1458,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", @@ -1474,7 +1488,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" @@ -1497,7 +1511,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", @@ -1505,7 +1519,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", @@ -1513,7 +1527,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", @@ -1521,7 +1535,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", @@ -1543,7 +1557,7 @@ 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.", @@ -1556,13 +1570,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" @@ -1570,7 +1584,7 @@ ] }, "trustManifest": { -"identity": "urn:acme:agent:finance", +"identity": "urn:ai:acme.com:agent:finance", "attestations": [ { "type": "SOC2-Type2", @@ -1744,7 +1758,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" } }, @@ -1754,7 +1768,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" } } @@ -1965,7 +1979,7 @@ 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", @@ -1977,7 +1991,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", @@ -2025,7 +2039,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", @@ -2034,7 +2048,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", @@ -2043,7 +2057,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", @@ -2132,7 +2146,7 @@ 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", @@ -2143,7 +2157,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",