diff --git a/enterprise/e2e/html/hurl/mcp-2025-06-18.all.hurl b/enterprise/e2e/html/hurl/mcp-2025-06-18.all.hurl
index 7a96af69..425adb75 100644
--- a/enterprise/e2e/html/hurl/mcp-2025-06-18.all.hurl
+++ b/enterprise/e2e/html/hurl/mcp-2025-06-18.all.hurl
@@ -35,6 +35,7 @@ jsonpath "$.result.instructions" matches "^.+$"
# Added in 2025-11-25
# https://modelcontextprotocol.io/specification/2025-11-25/changelog
jsonpath "$.result.serverInfo.description" not exists
+jsonpath "$.result.serverInfo.websiteUrl" not exists
POST {{base}}/self/v1/api/schemas/evaluate{{schema_path}}
```
diff --git a/enterprise/e2e/html/hurl/mcp-2025-11-25-gzip.all.hurl b/enterprise/e2e/html/hurl/mcp-2025-11-25-gzip.all.hurl
index ef9b739b..08dbbb34 100644
--- a/enterprise/e2e/html/hurl/mcp-2025-11-25-gzip.all.hurl
+++ b/enterprise/e2e/html/hurl/mcp-2025-11-25-gzip.all.hurl
@@ -87,6 +87,8 @@ jsonpath "$.result.capabilities.resources" isEmpty
jsonpath "$.result.serverInfo.name" == "sourcemeta-one-enterprise"
jsonpath "$.result.serverInfo.title" == "Sourcemeta One Enterprise"
jsonpath "$.result.serverInfo.version" matches "^.+$"
+jsonpath "$.result.serverInfo.description" == "The next-generation JSON Schema platform"
+jsonpath "$.result.serverInfo.websiteUrl" == "{{base}}"
jsonpath "$.result.instructions" matches "^This is an instance of Sourcemeta One"
POST {{base}}/self/v1/api/schemas/evaluate{{schema_path}}
@@ -130,6 +132,8 @@ jsonpath "$.result.capabilities.resources" isEmpty
jsonpath "$.result.serverInfo.name" == "sourcemeta-one-enterprise"
jsonpath "$.result.serverInfo.title" == "Sourcemeta One Enterprise"
jsonpath "$.result.serverInfo.version" matches "^.+$"
+jsonpath "$.result.serverInfo.description" == "The next-generation JSON Schema platform"
+jsonpath "$.result.serverInfo.websiteUrl" == "{{base}}"
jsonpath "$.result.instructions" matches "^This is an instance of Sourcemeta One"
POST {{base}}/self/v1/api/schemas/evaluate{{schema_path}}
diff --git a/enterprise/e2e/html/hurl/mcp-2025-11-25-lifecycle.all.hurl b/enterprise/e2e/html/hurl/mcp-2025-11-25-lifecycle.all.hurl
index 6051e657..b0de997a 100644
--- a/enterprise/e2e/html/hurl/mcp-2025-11-25-lifecycle.all.hurl
+++ b/enterprise/e2e/html/hurl/mcp-2025-11-25-lifecycle.all.hurl
@@ -29,6 +29,8 @@ jsonpath "$.result.capabilities.resources" isEmpty
jsonpath "$.result.serverInfo.name" == "sourcemeta-one-enterprise"
jsonpath "$.result.serverInfo.title" == "Sourcemeta One Enterprise"
jsonpath "$.result.serverInfo.version" matches "^.+$"
+jsonpath "$.result.serverInfo.description" == "The next-generation JSON Schema platform"
+jsonpath "$.result.serverInfo.websiteUrl" == "{{base}}"
jsonpath "$.result.instructions" == "This is an instance of Sourcemeta One named \"Sourcemeta\" (The next-generation JSON Schema platform). Sourcemeta One is a JSON Schema registry. It serves a catalog of JSON Schemas organized as a tree of directories. Every schema is exposed as an MCP resource via the `JSON Schema` resource template (see `resources/templates/list`) and is addressable by its canonical absolute URI. Use `tools/list` to discover the operations this catalog exposes. Learn more at https://one.sourcemeta.com"
POST {{base}}/self/v1/api/schemas/evaluate{{schema_path}}
diff --git a/enterprise/e2e/html/hurl/mcp-2025-11-25-resources.all.hurl b/enterprise/e2e/html/hurl/mcp-2025-11-25-resources.all.hurl
index 8098f04e..3fb435b6 100644
--- a/enterprise/e2e/html/hurl/mcp-2025-11-25-resources.all.hurl
+++ b/enterprise/e2e/html/hurl/mcp-2025-11-25-resources.all.hurl
@@ -163,7 +163,7 @@ jsonpath "$.result.resources[28].uri" == "{{base}}/self/v1/schemas/mcp/initializ
jsonpath "$.result.resources[28].name" == "response"
jsonpath "$.result.resources[28].description" == "Sourcemeta One's response to a client's initialization"
jsonpath "$.result.resources[28].mimeType" == "application/schema+json"
-jsonpath "$.result.resources[28].size" == 2174
+jsonpath "$.result.resources[28].size" == 2482
jsonpath "$.result.resources[29].uri" == "{{base}}/self/v1/schemas/mcp/notifications/cancelled"
jsonpath "$.result.resources[29].name" == "cancelled"
jsonpath "$.result.resources[29].description" == "Cancellation hint from a client for an in-flight request. Sourcemeta One accepts and discards these"
@@ -223,7 +223,7 @@ jsonpath "$.result.resources[40].uri" == "{{base}}/self/v1/schemas/mcp/response"
jsonpath "$.result.resources[40].name" == "response"
jsonpath "$.result.resources[40].description" == "Any outgoing MCP response the server returns"
jsonpath "$.result.resources[40].mimeType" == "application/schema+json"
-jsonpath "$.result.resources[40].size" == 3117
+jsonpath "$.result.resources[40].size" == 3215
jsonpath "$.result.resources[41].uri" == "{{base}}/self/v1/schemas/mcp/tools/call/request"
jsonpath "$.result.resources[41].name" == "request"
jsonpath "$.result.resources[41].description" == "Request from a client to invoke an MCP tool by name"
diff --git a/enterprise/e2e/path/hurl/mcp-2025-06-18.all.hurl b/enterprise/e2e/path/hurl/mcp-2025-06-18.all.hurl
index 49069053..2681af3e 100644
--- a/enterprise/e2e/path/hurl/mcp-2025-06-18.all.hurl
+++ b/enterprise/e2e/path/hurl/mcp-2025-06-18.all.hurl
@@ -35,6 +35,7 @@ jsonpath "$.result.instructions" matches "^.+$"
# Added in 2025-11-25
# https://modelcontextprotocol.io/specification/2025-11-25/changelog
jsonpath "$.result.serverInfo.description" not exists
+jsonpath "$.result.serverInfo.websiteUrl" not exists
POST {{base}}/v1/catalog/self/v1/api/schemas/evaluate{{schema_path}}
```
diff --git a/enterprise/e2e/path/hurl/mcp-2025-11-25-gzip.all.hurl b/enterprise/e2e/path/hurl/mcp-2025-11-25-gzip.all.hurl
index a337a49b..c0129c4f 100644
--- a/enterprise/e2e/path/hurl/mcp-2025-11-25-gzip.all.hurl
+++ b/enterprise/e2e/path/hurl/mcp-2025-11-25-gzip.all.hurl
@@ -87,6 +87,8 @@ jsonpath "$.result.capabilities.resources" isEmpty
jsonpath "$.result.serverInfo.name" == "sourcemeta-one-enterprise"
jsonpath "$.result.serverInfo.title" == "Sourcemeta One Enterprise"
jsonpath "$.result.serverInfo.version" matches "^.+$"
+jsonpath "$.result.serverInfo.description" == "The next-generation JSON Schema platform"
+jsonpath "$.result.serverInfo.websiteUrl" == "{{base}}/v1/catalog"
jsonpath "$.result.instructions" matches "^This is an instance of Sourcemeta One"
POST {{base}}/v1/catalog/self/v1/api/schemas/evaluate{{schema_path}}
@@ -130,6 +132,8 @@ jsonpath "$.result.capabilities.resources" isEmpty
jsonpath "$.result.serverInfo.name" == "sourcemeta-one-enterprise"
jsonpath "$.result.serverInfo.title" == "Sourcemeta One Enterprise"
jsonpath "$.result.serverInfo.version" matches "^.+$"
+jsonpath "$.result.serverInfo.description" == "The next-generation JSON Schema platform"
+jsonpath "$.result.serverInfo.websiteUrl" == "{{base}}/v1/catalog"
jsonpath "$.result.instructions" matches "^This is an instance of Sourcemeta One"
POST {{base}}/v1/catalog/self/v1/api/schemas/evaluate{{schema_path}}
diff --git a/enterprise/e2e/path/hurl/mcp-2025-11-25-lifecycle.all.hurl b/enterprise/e2e/path/hurl/mcp-2025-11-25-lifecycle.all.hurl
index 13175ca7..6840a4be 100644
--- a/enterprise/e2e/path/hurl/mcp-2025-11-25-lifecycle.all.hurl
+++ b/enterprise/e2e/path/hurl/mcp-2025-11-25-lifecycle.all.hurl
@@ -29,6 +29,8 @@ jsonpath "$.result.capabilities.resources" isEmpty
jsonpath "$.result.serverInfo.name" == "sourcemeta-one-enterprise"
jsonpath "$.result.serverInfo.title" == "Sourcemeta One Enterprise"
jsonpath "$.result.serverInfo.version" matches "^.+$"
+jsonpath "$.result.serverInfo.description" == "The next-generation JSON Schema platform"
+jsonpath "$.result.serverInfo.websiteUrl" == "{{base}}/v1/catalog"
jsonpath "$.result.instructions" == "This is an instance of Sourcemeta One named \"Sourcemeta\" (The next-generation JSON Schema platform). Sourcemeta One is a JSON Schema registry. It serves a catalog of JSON Schemas organized as a tree of directories. Every schema is exposed as an MCP resource via the `JSON Schema` resource template (see `resources/templates/list`) and is addressable by its canonical absolute URI. Use `tools/list` to discover the operations this catalog exposes. Learn more at https://one.sourcemeta.com"
POST {{base}}/v1/catalog/self/v1/api/schemas/evaluate{{schema_path}}
diff --git a/enterprise/e2e/path/hurl/mcp-2025-11-25-resources.all.hurl b/enterprise/e2e/path/hurl/mcp-2025-11-25-resources.all.hurl
index 40b92fc8..08d6649c 100644
--- a/enterprise/e2e/path/hurl/mcp-2025-11-25-resources.all.hurl
+++ b/enterprise/e2e/path/hurl/mcp-2025-11-25-resources.all.hurl
@@ -163,7 +163,7 @@ jsonpath "$.result.resources[28].uri" == "{{base}}/v1/catalog/self/v1/schemas/mc
jsonpath "$.result.resources[28].name" == "response"
jsonpath "$.result.resources[28].description" == "Sourcemeta One's response to a client's initialization"
jsonpath "$.result.resources[28].mimeType" == "application/schema+json"
-jsonpath "$.result.resources[28].size" == 2185
+jsonpath "$.result.resources[28].size" == 2493
jsonpath "$.result.resources[29].uri" == "{{base}}/v1/catalog/self/v1/schemas/mcp/notifications/cancelled"
jsonpath "$.result.resources[29].name" == "cancelled"
jsonpath "$.result.resources[29].description" == "Cancellation hint from a client for an in-flight request. Sourcemeta One accepts and discards these"
@@ -223,7 +223,7 @@ jsonpath "$.result.resources[40].uri" == "{{base}}/v1/catalog/self/v1/schemas/mc
jsonpath "$.result.resources[40].name" == "response"
jsonpath "$.result.resources[40].description" == "Any outgoing MCP response the server returns"
jsonpath "$.result.resources[40].mimeType" == "application/schema+json"
-jsonpath "$.result.resources[40].size" == 3128
+jsonpath "$.result.resources[40].size" == 3226
jsonpath "$.result.resources[41].uri" == "{{base}}/v1/catalog/self/v1/schemas/mcp/tools/call/request"
jsonpath "$.result.resources[41].name" == "request"
jsonpath "$.result.resources[41].description" == "Request from a client to invoke an MCP tool by name"
diff --git a/src/index/explorer.h b/src/index/explorer.h
index 06c4a70d..6d4c174c 100644
--- a/src/index/explorer.h
+++ b/src/index/explorer.h
@@ -621,8 +621,13 @@ struct GENERATE_MCP {
initialize_ingredients.push_back(
sourcemeta::core::JSON{sourcemeta::one::version()});
initialize_ingredients.push_back(sourcemeta::core::JSON{SERVER_TITLE});
- initialize_ingredients.push_back(sourcemeta::core::JSON{""});
- initialize_ingredients.push_back(sourcemeta::core::JSON{""});
+ initialize_ingredients.push_back(sourcemeta::core::JSON{
+ configuration.html.has_value()
+ ? std::string_view{configuration.html->description}
+ : std::string_view{}});
+ initialize_ingredients.push_back(sourcemeta::core::JSON{
+ configuration.html.has_value() ? std::string_view{configuration.url}
+ : std::string_view{}});
initialize_ingredients.push_back(
sourcemeta::core::JSON{instructions.str()});
diff --git a/src/self/v1/schemas/mcp/initialize/response.json b/src/self/v1/schemas/mcp/initialize/response.json
index 856c647d..6b6c5301 100644
--- a/src/self/v1/schemas/mcp/initialize/response.json
+++ b/src/self/v1/schemas/mcp/initialize/response.json
@@ -14,7 +14,9 @@
"serverInfo": {
"name": "sourcemeta-one-enterprise",
"title": "Sourcemeta One Enterprise",
- "version": "1.0.0"
+ "version": "1.0.0",
+ "description": "A JSON Schema registry",
+ "websiteUrl": "https://example.com"
},
"instructions": "Server instructions"
}
@@ -68,6 +70,14 @@
},
"version": {
"type": "string"
+ },
+ "description": {
+ "type": "string",
+ "minLength": 1
+ },
+ "websiteUrl": {
+ "type": "string",
+ "format": "uri"
}
},
"additionalProperties": false
diff --git a/src/self/v1/schemas/mcp/response.json b/src/self/v1/schemas/mcp/response.json
index e204dcc5..6e93020d 100644
--- a/src/self/v1/schemas/mcp/response.json
+++ b/src/self/v1/schemas/mcp/response.json
@@ -14,7 +14,9 @@
"serverInfo": {
"name": "sourcemeta-one-enterprise",
"title": "Sourcemeta One Enterprise",
- "version": "1.0.0"
+ "version": "1.0.0",
+ "description": "A JSON Schema registry",
+ "websiteUrl": "https://example.com"
},
"instructions": "Server instructions"
}
diff --git a/test/e2e/empty/hurl/mcp-2025-11-25.community.hurl b/test/e2e/empty/hurl/mcp-2025-11-25.community.hurl
index 1d0f99db..170c6662 100644
--- a/test/e2e/empty/hurl/mcp-2025-11-25.community.hurl
+++ b/test/e2e/empty/hurl/mcp-2025-11-25.community.hurl
@@ -30,6 +30,8 @@ jsonpath "$.result.capabilities.resources" isEmpty
jsonpath "$.result.serverInfo.name" == "sourcemeta-one"
jsonpath "$.result.serverInfo.title" == "Sourcemeta One"
jsonpath "$.result.serverInfo.version" matches "^.+$"
+jsonpath "$.result.serverInfo.description" == "The next-generation JSON Schema platform"
+jsonpath "$.result.serverInfo.websiteUrl" == "{{base}}"
jsonpath "$.result.instructions" == "This is an instance of Sourcemeta One named \"Sourcemeta\" (The next-generation JSON Schema platform). Sourcemeta One is a JSON Schema registry. It serves a catalog of JSON Schemas organized as a tree of directories. Every schema is exposed as an MCP resource via the `JSON Schema` resource template (see `resources/templates/list`) and is addressable by its canonical absolute URI. Use `tools/list` to discover the operations this catalog exposes. Learn more at https://one.sourcemeta.com"
POST {{base}}/self/v1/api/schemas/evaluate{{schema_path}}
diff --git a/test/e2e/headless/hurl/mcp-2025-11-25.community.hurl b/test/e2e/headless/hurl/mcp-2025-11-25.community.hurl
index 613caeda..395716e1 100644
--- a/test/e2e/headless/hurl/mcp-2025-11-25.community.hurl
+++ b/test/e2e/headless/hurl/mcp-2025-11-25.community.hurl
@@ -30,6 +30,8 @@ jsonpath "$.result.capabilities.resources" isEmpty
jsonpath "$.result.serverInfo.name" == "sourcemeta-one"
jsonpath "$.result.serverInfo.title" == "Sourcemeta One"
jsonpath "$.result.serverInfo.version" matches "^.+$"
+jsonpath "$.result.serverInfo.description" not exists
+jsonpath "$.result.serverInfo.websiteUrl" not exists
jsonpath "$.result.instructions" == "This is an instance of Sourcemeta One. Sourcemeta One is a JSON Schema registry. It serves a catalog of JSON Schemas organized as a tree of directories. Every schema is exposed as an MCP resource via the `JSON Schema` resource template (see `resources/templates/list`) and is addressable by its canonical absolute URI. Use `tools/list` to discover the operations this catalog exposes. Learn more at https://one.sourcemeta.com"
POST {{base}}/self/v1/api/schemas/evaluate{{schema_path}}
diff --git a/test/e2e/path/hurl/mcp-2025-11-25.community.hurl b/test/e2e/path/hurl/mcp-2025-11-25.community.hurl
index 39d6e30d..cf6b5c94 100644
--- a/test/e2e/path/hurl/mcp-2025-11-25.community.hurl
+++ b/test/e2e/path/hurl/mcp-2025-11-25.community.hurl
@@ -30,6 +30,8 @@ jsonpath "$.result.capabilities.resources" isEmpty
jsonpath "$.result.serverInfo.name" == "sourcemeta-one"
jsonpath "$.result.serverInfo.title" == "Sourcemeta One"
jsonpath "$.result.serverInfo.version" matches "^.+$"
+jsonpath "$.result.serverInfo.description" == "The next-generation JSON Schema platform"
+jsonpath "$.result.serverInfo.websiteUrl" == "{{base}}/v1/catalog"
jsonpath "$.result.instructions" == "This is an instance of Sourcemeta One named \"Sourcemeta\" (The next-generation JSON Schema platform). Sourcemeta One is a JSON Schema registry. It serves a catalog of JSON Schemas organized as a tree of directories. Every schema is exposed as an MCP resource via the `JSON Schema` resource template (see `resources/templates/list`) and is addressable by its canonical absolute URI. Use `tools/list` to discover the operations this catalog exposes. Learn more at https://one.sourcemeta.com"
POST {{base}}/v1/catalog/self/v1/api/schemas/evaluate{{schema_path}}