--- a/base/index.html +++ b/head/index.html @@ -194,19 +194,19 @@ { "identifier": "urn:example:skill:code-review", "displayName": "Code Review Assistant", - "mediaType": "application/agentskill+zip", + "type": "application/ai-skills+zip", "url": "https://skills.example.com/code-review/skill.zip" }, { "identifier": "urn:example:mcp:weather", "displayName": "Weather Service", - "mediaType": "application/mcp-server-card+json", + "type": "application/mcp-server+json", "url": "https://api.example.com/.well-known/mcp/server-card.json" }, { "identifier": "urn:example:a2a:research", "displayName": "Research Assistant", - "mediaType": "application/a2a-agent-card+json", + "type": "application/a2a-agent-card+json", "url": "https://agents.example.com/researchAssistant" } ] @@ -266,29 +266,30 @@ rules when multiple versions are present.
displayNamemediaTypeapplication/ai-catalog+json — a nested AI Catalogapplication/a2a-agent-card+json — an A2A Agent Cardapplication/mcp-server-card+json — an MCP Server Cardapplication/agentskill+zip for skill definitions)typeCore Protocol Types (Governed by the AI Catalog WG):
+ - application/ai-catalog+json — a nested AI Catalog
+ - application/agent-card+json — reserved for a generic Agent Card format
Integrated Ecosystem & Third-Party Types (Governed externally):
+ - application/a2a-agent-card+json — an A2A Agent Card
+ - application/mcp-server+json — an MCP Server Card
+ - application/ai-skills+zip — an AI Skill bundle (ZIP archive)
+ - application/ai-skills+gzip — an AI Skill bundle (gzipped tarball)
+ - text/markdown; profile=ai-skill — an AI Skill defined in a standard Markdown file
These values are designed to align with official IANA media type registration standards. Standard ecosystem types use registered structured syntax suffixes (+json, +zip, +gzip). For generic payload formats (like text/markdown), the standard profile parameter is used to specify the semantic schema (e.g., profile=ai-skill). For any new or custom types not listed here, it is up to the specific client implementation to handle them correctly.
A Catalog Entry MUST contain exactly one of the following members to provide the artifact content:
urlmediaType field.type field.
datamediaType field and
+ structure of this value is determined by the type field and
is opaque to this specification.The following members are OPTIONAL:
@@ -340,7 +341,7 @@ "identifier": "urn:acme:agent:finance", "displayName": "Acme Finance Agent", "version": "2.1.0", - "mediaType": "application/a2a-agent-card+json", + "type": "application/a2a-agent-card+json", "url": "https://api.acme-corp.com/agents/finance/v2.1.json", "updatedAt": "2026-03-15T10:00:00Z" }, @@ -348,7 +349,7 @@ "identifier": "urn:acme:agent:finance", "displayName": "Acme Finance Agent", "version": "2.0.0", - "mediaType": "application/a2a-agent-card+json", + "type": "application/a2a-agent-card+json", "url": "https://api.acme-corp.com/agents/finance/v2.0.json", "updatedAt": "2026-01-20T08:00:00Z" } @@ -681,12 +682,12 @@As catalogs grow, a flat list of entries becomes unwieldy. Because any
-catalog entry can have a mediaType of application/ai-catalog+json,
+catalog entry can have a type of application/ai-catalog+json,
catalogs are naturally composable — an entry can reference or inline
another AI Catalog, creating a hierarchy of any depth.
A catalog entry whose mediaType is application/ai-catalog+json
+
A catalog entry whose type is application/ai-catalog+json
references (via url) or embeds (via data) another AI Catalog
document. This mechanism supports two complementary use cases:
Organizational hierarchy. An enterprise with thousands of artifacts @@ -703,19 +704,19 @@ { "identifier": "urn:acme:catalog:finance", "displayName": "Finance Services", - "mediaType": "application/ai-catalog+json", + "type": "application/ai-catalog+json", "url": "https://acme.com/catalogs/finance.json" }, { "identifier": "urn:acme:catalog:ml", "displayName": "ML Models", - "mediaType": "application/ai-catalog+json", + "type": "application/ai-catalog+json", "url": "https://acme.com/catalogs/ml.json" }, { "identifier": "urn:acme:catalog:devops", "displayName": "DevOps Tools", - "mediaType": "application/ai-catalog+json", + "type": "application/ai-catalog+json", "url": "https://acme.com/catalogs/devops.json" } ] @@ -728,7 +729,7 @@
{
"identifier": "urn:acme:plugin:finance-suite",
"displayName": "Finance Plugin",
- "mediaType": "application/ai-catalog+json",
+ "type": "application/ai-catalog+json",
"url": "https://acme.com/plugins/finance-suite.json",
"publisher": {
"identifier": "did:web:acme-corp.com",
@@ -913,7 +914,7 @@
specVersion — the specification version string
entries — an array of Catalog Entry objects, each containing at
- minimum identifier, displayName, mediaType, and exactly one of url or
+ minimum identifier, displayName, type, and exactly one of url or
data
All other fields (host, publisher, trustManifest,
@@ -1055,7 +1056,7 @@
Content with HTML or script-capable media types MUST be sandboxed
and MUST NOT be executed in the consumer's security context.
Consumers SHOULD validate that the data content is well-formed
- JSON (or the expected format for the declared mediaType) before
+ JSON (or the expected format for the declared type) before
processing.
{
"identifier": "urn:acme:agent:finance",
"displayName": "Acme Finance Agent",
- "mediaType": "application/ai-catalog+json",
+ "type": "application/ai-catalog+json",
"description": "Finance agent accessible via both MCP and A2A protocols.",
"tags": ["finance", "dual-protocol"],
"publisher": {
@@ -1461,13 +1462,13 @@
{
"identifier": "urn:acme:agent:finance:mcp",
"displayName": "Acme Finance MCP Server",
- "mediaType": "application/mcp-server-card+json",
+ "type": "application/mcp-server+json",
"url": "https://api.acme-corp.com/.well-known/mcp/server-card.json"
},
{
"identifier": "urn:acme:agent:finance:a2a",
"displayName": "Acme Finance A2A Agent",
- "mediaType": "application/a2a-agent-card+json",
+ "type": "application/a2a-agent-card+json",
"url": "https://api.acme-corp.com/agents/finance"
}
]
@@ -1498,7 +1499,7 @@
Logical Format vs. Physical Distribution
The AI Catalog specification defines a logical format: a JSON
-document with entries, displayName, mediaType, and trustManifest
+document with entries, displayName, type, and trustManifest
fields that are immediately meaningful to anyone working with AI
artifacts. Authors write simple JSON. APIs serve simple JSON. Clients
consume simple JSON.
@@ -1549,10 +1550,10 @@
Catalog Entry
-OCI Image Manifest with artifactType set to the entry's mediaType
-
-
-Entry mediaType
+OCI Image Manifest with artifactType set to the entry's type
+
+
+Entry type
Manifest artifactType field
@@ -1642,11 +1643,11 @@
authored by hand:
{
"schemaVersion": 2,
- "mediaType": "application/vnd.oci.image.index.v1+json",
+ "type": "application/vnd.oci.image.index.v1+json",
"artifactType": "application/ai-catalog+json",
"manifests": [
{
- "mediaType": "application/vnd.oci.image.manifest.v1+json",
+ "type": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:aaa111...",
"size": 1024,
"artifactType": "application/a2a-agent-card+json",
@@ -1656,10 +1657,10 @@
}
},
{
- "mediaType": "application/vnd.oci.image.manifest.v1+json",
+ "type": "application/vnd.oci.image.manifest.v1+json",
"digest": "sha256:bbb222...",
"size": 512,
- "artifactType": "application/mcp-server-card+json",
+ "artifactType": "application/mcp-server+json",
"annotations": {
"ai-catalog.identifier": "urn:acme:server:finance-mcp",
"ai-catalog.displayName": "Acme Finance MCP Server"
@@ -1716,7 +1717,7 @@
Vocabulary
-entries, displayName, mediaType, trustManifest
+entries, displayName, type, trustManifest
manifests, layers, config, annotations
@@ -1868,13 +1869,13 @@
MCP Server as Catalog Entry
An MCP server listed in the Registry maps to a Catalog Entry whose
-url points to the server.json document and whose mediaType
+url points to the server.json document and whose type
reflects the Registry format:
{
"identifier": "urn:mcp:io.modelcontextprotocol.anonymous/brave-search",
"displayName": "Brave Search",
"version": "1.0.2",
- "mediaType": "application/json",
+ "type": "application/mcp-server+json",
"url": "https://registry.modelcontextprotocol.io/servers/brave-search/server.json",
"description": "MCP server for Brave Search API integration",
"tags": ["search", "brave", "web"],
@@ -1913,7 +1914,7 @@
Note: This example uses application/json because the MCP
Registry has not registered a dedicated media type for server.json.
When referencing an MCP Server Card (SEP-1649) instead, use
-application/mcp-server-card+json — see
+application/mcp-server+json — see
Relationship to MCP Server Cards.
@@ -1935,7 +1936,7 @@
"identifier": "urn:mcp:io.modelcontextprotocol.anonymous/brave-search",
"displayName": "Brave Search",
"version": "1.0.2",
- "mediaType": "application/json",
+ "type": "application/mcp-server+json",
"url": "https://registry.modelcontextprotocol.io/servers/brave-search/server.json",
"description": "MCP server for Brave Search API integration",
"tags": ["search", "brave"]
@@ -1944,7 +1945,7 @@
"identifier": "urn:mcp:io.github.modelcontextprotocol/filesystem",
"displayName": "Filesystem",
"version": "1.0.2",
- "mediaType": "application/json",
+ "type": "application/mcp-server+json",
"url": "https://registry.modelcontextprotocol.io/servers/filesystem/server.json",
"description": "MCP server for filesystem operations",
"tags": ["filesystem", "files"]
@@ -1953,7 +1954,7 @@
"identifier": "urn:mcp:io.github.example/weather-mcp",
"displayName": "Weather",
"version": "0.5.0",
- "mediaType": "application/json",
+ "type": "application/mcp-server+json",
"url": "https://registry.modelcontextprotocol.io/servers/weather/server.json",
"description": "Python MCP server for weather data access",
"tags": ["weather", "python"],
@@ -1976,7 +1977,7 @@
https://api.acme-corp.com/.well-known/ai-catalog.json
Clients and crawlers discover the catalog via the well-known URL,
-find entries by mediaType, and fetch the referenced artifacts for
+find entries by type, and fetch the referenced artifacts for
operational details — whether those are MCP Server Cards, Registry
server.json documents, or other AI artifact formats.
The centralized MCP Registry and decentralized AI Catalogs are
@@ -2030,7 +2031,7 @@
{
"identifier": "urn:mcp:example.com:finance-server",
"displayName": "Acme Finance MCP Server",
- "mediaType": "application/mcp-server+json",
+ "type": "application/mcp-server+json",
"url": "https://api.acme-corp.com/.well-known/mcp/server-card.json",
"description": "MCP server for financial data and trading tools",
"tags": ["finance", "mcp"],
@@ -2060,7 +2061,7 @@
- Fetch
/.well-known/ai-catalog.json to discover all artifacts on
a domain (MCP servers, A2A agents, plugins, etc.).
-- Filter entries by
mediaType to find MCP servers.
+- Filter entries by
type to find MCP servers.
- Evaluate the Trust Manifest for publisher identity and attestations.
- Fetch the Server Card at the entry's
url for operational details
(transport, capabilities, tools, authentication).
@@ -2173,7 +2174,7 @@
(not in marketplace)
-Entry mediaType
+Entry type
Centralized marketplace repo
@@ -2215,7 +2216,7 @@
{
"identifier": "urn:claude-plugin:anthropic:agent-sdk-dev",
"displayName": "agent-sdk-dev",
- "mediaType": "application/vnd.anthropic.claude-plugin+json",
+ "type": "application/vnd.anthropic.claude-plugin+json",
"url": "https://github.com/anthropics/claude-plugins-official/tree/main/plugins/agent-sdk-dev",
"description": "Development kit for working with the Claude Agent SDK",
"tags": ["development"],
@@ -2230,7 +2231,7 @@
{
"identifier": "urn:claude-plugin:adspirer:ads-agent",
"displayName": "adspirer-ads-agent",
- "mediaType": "application/vnd.anthropic.claude-plugin+json",
+ "type": "application/vnd.anthropic.claude-plugin+json",
"url": "https://github.com/amekala/adspirer-mcp-plugin.git",
"description": "Cross-platform ad management for Google Ads, Meta Ads, TikTok Ads, and LinkedIn Ads.",
"tags": ["productivity", "ads"],
@@ -2251,7 +2252,7 @@
{
"identifier": "urn:claude-plugin:aikido:security",
"displayName": "aikido",
- "mediaType": "application/vnd.anthropic.claude-plugin+json",
+ "type": "application/vnd.anthropic.claude-plugin+json",
"url": "https://github.com/AikidoSec/aikido-claude-plugin.git",
"description": "Aikido Security scanning — SAST, secrets, and IaC vulnerability detection.",
"tags": ["security"],
@@ -2283,7 +2284,7 @@
{
"identifier": "urn:claude-plugin:anthropic:example-plugin",
"displayName": "example-plugin",
- "mediaType": "application/ai-catalog+json",
+ "type": "application/ai-catalog+json",
"description": "Comprehensive plugin with commands, agents, skills, and MCP servers",
"tags": ["development"],
"publisher": {
@@ -2296,13 +2297,13 @@
{
"identifier": "urn:claude-plugin:anthropic:example-plugin:mcp",
"displayName": "Example Plugin MCP Server",
- "mediaType": "application/mcp-server-card+json",
+ "type": "application/mcp-server+json",
"url": "https://github.com/anthropics/claude-plugins-official/blob/main/plugins/example-plugin/server-card.json"
},
{
"identifier": "urn:claude-plugin:anthropic:example-plugin:skills",
"displayName": "Example Plugin Skills",
- "mediaType": "application/agentskill+zip",
+ "type": "application/ai-skills+zip",
"url": "https://github.com/anthropics/claude-plugins-official/tree/main/plugins/example-plugin/skills.zip"
}
]