diff --git a/enterprise/e2e/html/hurl/mcp-2025-03-26.all.hurl b/enterprise/e2e/html/hurl/mcp-2025-03-26.all.hurl index aa2cba5c..ece38c02 100644 --- a/enterprise/e2e/html/hurl/mcp-2025-03-26.all.hurl +++ b/enterprise/e2e/html/hurl/mcp-2025-03-26.all.hurl @@ -175,6 +175,7 @@ jsonpath "$.result.tools" count == 11 jsonpath "$.result.tools[0].name" == "list_directory" jsonpath "$.result.tools[0].description" == "List the contents of a directory in the catalog" jsonpath "$.result.tools[0].inputSchema['$ref']" == "{{base}}/self/v1/schemas/api/list/rpc" +jsonpath "$.result.tools[0].inputSchema.type" == "object" jsonpath "$.result.tools[0].annotations.title" == "List Directory" jsonpath "$.result.tools[0].annotations.readOnlyHint" == true jsonpath "$.result.tools[0].annotations.destructiveHint" == false @@ -183,6 +184,7 @@ jsonpath "$.result.tools[0].annotations.openWorldHint" == false jsonpath "$.result.tools[1].name" == "get_schema_dependencies" jsonpath "$.result.tools[1].description" == "Look up the dependency graph of a specific schema (incoming or outgoing)" jsonpath "$.result.tools[1].inputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/dependencies/rpc" +jsonpath "$.result.tools[1].inputSchema.type" == "object" jsonpath "$.result.tools[1].annotations.title" == "Get Schema Dependencies" jsonpath "$.result.tools[1].annotations.readOnlyHint" == true jsonpath "$.result.tools[1].annotations.destructiveHint" == false 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 425adb75..12731eb8 100644 --- a/enterprise/e2e/html/hurl/mcp-2025-06-18.all.hurl +++ b/enterprise/e2e/html/hurl/mcp-2025-06-18.all.hurl @@ -166,7 +166,9 @@ jsonpath "$.result.tools" count == 11 jsonpath "$.result.tools[0].name" == "list_directory" jsonpath "$.result.tools[0].description" == "List the contents of a directory in the catalog" jsonpath "$.result.tools[0].inputSchema['$ref']" == "{{base}}/self/v1/schemas/api/list/rpc" +jsonpath "$.result.tools[0].inputSchema.type" == "object" jsonpath "$.result.tools[0].outputSchema['$ref']" == "{{base}}/self/v1/schemas/api/list/response" +jsonpath "$.result.tools[0].outputSchema.type" == "object" jsonpath "$.result.tools[0].annotations.title" == "List Directory" jsonpath "$.result.tools[0].annotations.readOnlyHint" == true jsonpath "$.result.tools[0].annotations.destructiveHint" == false 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 3fb435b6..a1f29fb1 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 @@ -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" == 3215 +jsonpath "$.result.resources[40].size" == 3279 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" @@ -243,7 +243,7 @@ jsonpath "$.result.resources[44].uri" == "{{base}}/self/v1/schemas/mcp/tools/lis jsonpath "$.result.resources[44].name" == "response" jsonpath "$.result.resources[44].description" == "Sourcemeta One's list of MCP tools" jsonpath "$.result.resources[44].mimeType" == "application/schema+json" -jsonpath "$.result.resources[44].size" == 3820 +jsonpath "$.result.resources[44].size" == 4074 jsonpath "$.result.resources[45].uri" == "{{base}}/test/object" jsonpath "$.result.resources[45].name" == "object" jsonpath "$.result.resources[45].description" == "An Object Example" diff --git a/enterprise/e2e/html/hurl/mcp-2025-11-25-tools.all.hurl b/enterprise/e2e/html/hurl/mcp-2025-11-25-tools.all.hurl index 3dcc5224..94b9bf4c 100644 --- a/enterprise/e2e/html/hurl/mcp-2025-11-25-tools.all.hurl +++ b/enterprise/e2e/html/hurl/mcp-2025-11-25-tools.all.hurl @@ -22,7 +22,9 @@ jsonpath "$.result.tools" count == 11 jsonpath "$.result.tools[0].name" == "list_directory" jsonpath "$.result.tools[0].description" == "List the contents of a directory in the catalog" jsonpath "$.result.tools[0].inputSchema['$ref']" == "{{base}}/self/v1/schemas/api/list/rpc" +jsonpath "$.result.tools[0].inputSchema.type" == "object" jsonpath "$.result.tools[0].outputSchema['$ref']" == "{{base}}/self/v1/schemas/api/list/response" +jsonpath "$.result.tools[0].outputSchema.type" == "object" jsonpath "$.result.tools[0].annotations.title" == "List Directory" jsonpath "$.result.tools[0].annotations.readOnlyHint" == true jsonpath "$.result.tools[0].annotations.destructiveHint" == false @@ -31,7 +33,9 @@ jsonpath "$.result.tools[0].annotations.openWorldHint" == false jsonpath "$.result.tools[1].name" == "get_schema_dependencies" jsonpath "$.result.tools[1].description" == "Look up the dependency graph of a specific schema (incoming or outgoing)" jsonpath "$.result.tools[1].inputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/dependencies/rpc" +jsonpath "$.result.tools[1].inputSchema.type" == "object" jsonpath "$.result.tools[1].outputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/dependencies/response" +jsonpath "$.result.tools[1].outputSchema.type" == "object" jsonpath "$.result.tools[1].annotations.title" == "Get Schema Dependencies" jsonpath "$.result.tools[1].annotations.readOnlyHint" == true jsonpath "$.result.tools[1].annotations.destructiveHint" == false @@ -40,7 +44,9 @@ jsonpath "$.result.tools[1].annotations.openWorldHint" == false jsonpath "$.result.tools[2].name" == "get_schema_dependents" jsonpath "$.result.tools[2].description" == "Look up the dependency graph of a specific schema (incoming or outgoing)" jsonpath "$.result.tools[2].inputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/dependents/rpc" +jsonpath "$.result.tools[2].inputSchema.type" == "object" jsonpath "$.result.tools[2].outputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/dependents/response" +jsonpath "$.result.tools[2].outputSchema.type" == "object" jsonpath "$.result.tools[2].annotations.title" == "Get Schema Dependents" jsonpath "$.result.tools[2].annotations.readOnlyHint" == true jsonpath "$.result.tools[2].annotations.destructiveHint" == false @@ -49,7 +55,9 @@ jsonpath "$.result.tools[2].annotations.openWorldHint" == false jsonpath "$.result.tools[3].name" == "get_schema_health" jsonpath "$.result.tools[3].description" == "Look up a precomputed artifact about a specific schema by its absolute URI" jsonpath "$.result.tools[3].inputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/health/rpc" +jsonpath "$.result.tools[3].inputSchema.type" == "object" jsonpath "$.result.tools[3].outputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/health/response" +jsonpath "$.result.tools[3].outputSchema.type" == "object" jsonpath "$.result.tools[3].annotations.title" == "Get Schema Health" jsonpath "$.result.tools[3].annotations.readOnlyHint" == true jsonpath "$.result.tools[3].annotations.destructiveHint" == false @@ -58,7 +66,9 @@ jsonpath "$.result.tools[3].annotations.openWorldHint" == false jsonpath "$.result.tools[4].name" == "get_schema_locations" jsonpath "$.result.tools[4].description" == "Look up a precomputed artifact about a specific schema by its absolute URI" jsonpath "$.result.tools[4].inputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/locations/rpc" +jsonpath "$.result.tools[4].inputSchema.type" == "object" jsonpath "$.result.tools[4].outputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/locations/response" +jsonpath "$.result.tools[4].outputSchema.type" == "object" jsonpath "$.result.tools[4].annotations.title" == "Get Schema Locations" jsonpath "$.result.tools[4].annotations.readOnlyHint" == true jsonpath "$.result.tools[4].annotations.destructiveHint" == false @@ -67,7 +77,9 @@ jsonpath "$.result.tools[4].annotations.openWorldHint" == false jsonpath "$.result.tools[5].name" == "get_schema_positions" jsonpath "$.result.tools[5].description" == "Look up a precomputed artifact about a specific schema by its absolute URI" jsonpath "$.result.tools[5].inputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/positions/rpc" +jsonpath "$.result.tools[5].inputSchema.type" == "object" jsonpath "$.result.tools[5].outputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/positions/response" +jsonpath "$.result.tools[5].outputSchema.type" == "object" jsonpath "$.result.tools[5].annotations.title" == "Get Schema Positions" jsonpath "$.result.tools[5].annotations.readOnlyHint" == true jsonpath "$.result.tools[5].annotations.destructiveHint" == false @@ -76,7 +88,9 @@ jsonpath "$.result.tools[5].annotations.openWorldHint" == false jsonpath "$.result.tools[6].name" == "get_schema_stats" jsonpath "$.result.tools[6].description" == "Look up a precomputed artifact about a specific schema by its absolute URI" jsonpath "$.result.tools[6].inputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/stats/rpc" +jsonpath "$.result.tools[6].inputSchema.type" == "object" jsonpath "$.result.tools[6].outputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/stats/response" +jsonpath "$.result.tools[6].outputSchema.type" == "object" jsonpath "$.result.tools[6].annotations.title" == "Get Schema Stats" jsonpath "$.result.tools[6].annotations.readOnlyHint" == true jsonpath "$.result.tools[6].annotations.destructiveHint" == false @@ -85,7 +99,9 @@ jsonpath "$.result.tools[6].annotations.openWorldHint" == false jsonpath "$.result.tools[7].name" == "get_schema_metadata" jsonpath "$.result.tools[7].description" == "Read a navigation artifact for browsing schemas" jsonpath "$.result.tools[7].inputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/metadata/rpc" +jsonpath "$.result.tools[7].inputSchema.type" == "object" jsonpath "$.result.tools[7].outputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/metadata/response" +jsonpath "$.result.tools[7].outputSchema.type" == "object" jsonpath "$.result.tools[7].annotations.title" == "Get Schema Metadata" jsonpath "$.result.tools[7].annotations.readOnlyHint" == true jsonpath "$.result.tools[7].annotations.destructiveHint" == false @@ -94,7 +110,9 @@ jsonpath "$.result.tools[7].annotations.openWorldHint" == false jsonpath "$.result.tools[8].name" == "evaluate_schema" jsonpath "$.result.tools[8].description" == "Validate a JSON instance against a schema and return whether it is valid plus any errors" jsonpath "$.result.tools[8].inputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/evaluate/rpc" +jsonpath "$.result.tools[8].inputSchema.type" == "object" jsonpath "$.result.tools[8].outputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/evaluate/response" +jsonpath "$.result.tools[8].outputSchema.type" == "object" jsonpath "$.result.tools[8].annotations.title" == "Evaluate Schema" jsonpath "$.result.tools[8].annotations.readOnlyHint" == true jsonpath "$.result.tools[8].annotations.destructiveHint" == false @@ -103,7 +121,9 @@ jsonpath "$.result.tools[8].annotations.openWorldHint" == false jsonpath "$.result.tools[9].name" == "trace_schema_evaluation" jsonpath "$.result.tools[9].description" == "Validate a JSON instance against a schema and return detailed information about every step of the evaluation process" jsonpath "$.result.tools[9].inputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/trace/rpc" +jsonpath "$.result.tools[9].inputSchema.type" == "object" jsonpath "$.result.tools[9].outputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/trace/response" +jsonpath "$.result.tools[9].outputSchema.type" == "object" jsonpath "$.result.tools[9].annotations.title" == "Trace Schema Evaluation" jsonpath "$.result.tools[9].annotations.readOnlyHint" == true jsonpath "$.result.tools[9].annotations.destructiveHint" == false @@ -112,7 +132,9 @@ jsonpath "$.result.tools[9].annotations.openWorldHint" == false jsonpath "$.result.tools[10].name" == "search_schemas" jsonpath "$.result.tools[10].description" == "Search for schemas by query term" jsonpath "$.result.tools[10].inputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/search/rpc" +jsonpath "$.result.tools[10].inputSchema.type" == "object" jsonpath "$.result.tools[10].outputSchema['$ref']" == "{{base}}/self/v1/schemas/api/schemas/search/response" +jsonpath "$.result.tools[10].outputSchema.type" == "object" jsonpath "$.result.tools[10].annotations.title" == "Search Schemas" jsonpath "$.result.tools[10].annotations.readOnlyHint" == true jsonpath "$.result.tools[10].annotations.destructiveHint" == false diff --git a/enterprise/e2e/path/hurl/mcp-2025-03-26.all.hurl b/enterprise/e2e/path/hurl/mcp-2025-03-26.all.hurl index 958921c4..c41ba43e 100644 --- a/enterprise/e2e/path/hurl/mcp-2025-03-26.all.hurl +++ b/enterprise/e2e/path/hurl/mcp-2025-03-26.all.hurl @@ -175,6 +175,7 @@ jsonpath "$.result.tools" count == 11 jsonpath "$.result.tools[0].name" == "list_directory" jsonpath "$.result.tools[0].description" == "List the contents of a directory in the catalog" jsonpath "$.result.tools[0].inputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/list/rpc" +jsonpath "$.result.tools[0].inputSchema.type" == "object" jsonpath "$.result.tools[0].annotations.title" == "List Directory" jsonpath "$.result.tools[0].annotations.readOnlyHint" == true jsonpath "$.result.tools[0].annotations.destructiveHint" == false @@ -183,6 +184,7 @@ jsonpath "$.result.tools[0].annotations.openWorldHint" == false jsonpath "$.result.tools[1].name" == "get_schema_dependencies" jsonpath "$.result.tools[1].description" == "Look up the dependency graph of a specific schema (incoming or outgoing)" jsonpath "$.result.tools[1].inputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/dependencies/rpc" +jsonpath "$.result.tools[1].inputSchema.type" == "object" jsonpath "$.result.tools[1].annotations.title" == "Get Schema Dependencies" jsonpath "$.result.tools[1].annotations.readOnlyHint" == true jsonpath "$.result.tools[1].annotations.destructiveHint" == false 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 2681af3e..20cd1f22 100644 --- a/enterprise/e2e/path/hurl/mcp-2025-06-18.all.hurl +++ b/enterprise/e2e/path/hurl/mcp-2025-06-18.all.hurl @@ -166,7 +166,9 @@ jsonpath "$.result.tools" count == 11 jsonpath "$.result.tools[0].name" == "list_directory" jsonpath "$.result.tools[0].description" == "List the contents of a directory in the catalog" jsonpath "$.result.tools[0].inputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/list/rpc" +jsonpath "$.result.tools[0].inputSchema.type" == "object" jsonpath "$.result.tools[0].outputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/list/response" +jsonpath "$.result.tools[0].outputSchema.type" == "object" jsonpath "$.result.tools[0].annotations.title" == "List Directory" jsonpath "$.result.tools[0].annotations.readOnlyHint" == true jsonpath "$.result.tools[0].annotations.destructiveHint" == false 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 08d6649c..8f1c94c7 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 @@ -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" == 3226 +jsonpath "$.result.resources[40].size" == 3290 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" @@ -243,7 +243,7 @@ jsonpath "$.result.resources[44].uri" == "{{base}}/v1/catalog/self/v1/schemas/mc jsonpath "$.result.resources[44].name" == "response" jsonpath "$.result.resources[44].description" == "Sourcemeta One's list of MCP tools" jsonpath "$.result.resources[44].mimeType" == "application/schema+json" -jsonpath "$.result.resources[44].size" == 3831 +jsonpath "$.result.resources[44].size" == 4085 jsonpath "$.result.resources[45].uri" == "{{base}}/v1/catalog/example/full" jsonpath "$.result.resources[45].name" == "full" jsonpath "$.result.resources[45].description" == "A schema that has both a title and a description" diff --git a/enterprise/e2e/path/hurl/mcp-2025-11-25-tools.all.hurl b/enterprise/e2e/path/hurl/mcp-2025-11-25-tools.all.hurl index be5161ed..fae15d79 100644 --- a/enterprise/e2e/path/hurl/mcp-2025-11-25-tools.all.hurl +++ b/enterprise/e2e/path/hurl/mcp-2025-11-25-tools.all.hurl @@ -22,7 +22,9 @@ jsonpath "$.result.tools" count == 11 jsonpath "$.result.tools[0].name" == "list_directory" jsonpath "$.result.tools[0].description" == "List the contents of a directory in the catalog" jsonpath "$.result.tools[0].inputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/list/rpc" +jsonpath "$.result.tools[0].inputSchema.type" == "object" jsonpath "$.result.tools[0].outputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/list/response" +jsonpath "$.result.tools[0].outputSchema.type" == "object" jsonpath "$.result.tools[0].annotations.title" == "List Directory" jsonpath "$.result.tools[0].annotations.readOnlyHint" == true jsonpath "$.result.tools[0].annotations.destructiveHint" == false @@ -31,7 +33,9 @@ jsonpath "$.result.tools[0].annotations.openWorldHint" == false jsonpath "$.result.tools[1].name" == "get_schema_dependencies" jsonpath "$.result.tools[1].description" == "Look up the dependency graph of a specific schema (incoming or outgoing)" jsonpath "$.result.tools[1].inputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/dependencies/rpc" +jsonpath "$.result.tools[1].inputSchema.type" == "object" jsonpath "$.result.tools[1].outputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/dependencies/response" +jsonpath "$.result.tools[1].outputSchema.type" == "object" jsonpath "$.result.tools[1].annotations.title" == "Get Schema Dependencies" jsonpath "$.result.tools[1].annotations.readOnlyHint" == true jsonpath "$.result.tools[1].annotations.destructiveHint" == false @@ -40,7 +44,9 @@ jsonpath "$.result.tools[1].annotations.openWorldHint" == false jsonpath "$.result.tools[2].name" == "get_schema_dependents" jsonpath "$.result.tools[2].description" == "Look up the dependency graph of a specific schema (incoming or outgoing)" jsonpath "$.result.tools[2].inputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/dependents/rpc" +jsonpath "$.result.tools[2].inputSchema.type" == "object" jsonpath "$.result.tools[2].outputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/dependents/response" +jsonpath "$.result.tools[2].outputSchema.type" == "object" jsonpath "$.result.tools[2].annotations.title" == "Get Schema Dependents" jsonpath "$.result.tools[2].annotations.readOnlyHint" == true jsonpath "$.result.tools[2].annotations.destructiveHint" == false @@ -49,7 +55,9 @@ jsonpath "$.result.tools[2].annotations.openWorldHint" == false jsonpath "$.result.tools[3].name" == "get_schema_health" jsonpath "$.result.tools[3].description" == "Look up a precomputed artifact about a specific schema by its absolute URI" jsonpath "$.result.tools[3].inputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/health/rpc" +jsonpath "$.result.tools[3].inputSchema.type" == "object" jsonpath "$.result.tools[3].outputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/health/response" +jsonpath "$.result.tools[3].outputSchema.type" == "object" jsonpath "$.result.tools[3].annotations.title" == "Get Schema Health" jsonpath "$.result.tools[3].annotations.readOnlyHint" == true jsonpath "$.result.tools[3].annotations.destructiveHint" == false @@ -58,7 +66,9 @@ jsonpath "$.result.tools[3].annotations.openWorldHint" == false jsonpath "$.result.tools[4].name" == "get_schema_locations" jsonpath "$.result.tools[4].description" == "Look up a precomputed artifact about a specific schema by its absolute URI" jsonpath "$.result.tools[4].inputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/locations/rpc" +jsonpath "$.result.tools[4].inputSchema.type" == "object" jsonpath "$.result.tools[4].outputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/locations/response" +jsonpath "$.result.tools[4].outputSchema.type" == "object" jsonpath "$.result.tools[4].annotations.title" == "Get Schema Locations" jsonpath "$.result.tools[4].annotations.readOnlyHint" == true jsonpath "$.result.tools[4].annotations.destructiveHint" == false @@ -67,7 +77,9 @@ jsonpath "$.result.tools[4].annotations.openWorldHint" == false jsonpath "$.result.tools[5].name" == "get_schema_positions" jsonpath "$.result.tools[5].description" == "Look up a precomputed artifact about a specific schema by its absolute URI" jsonpath "$.result.tools[5].inputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/positions/rpc" +jsonpath "$.result.tools[5].inputSchema.type" == "object" jsonpath "$.result.tools[5].outputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/positions/response" +jsonpath "$.result.tools[5].outputSchema.type" == "object" jsonpath "$.result.tools[5].annotations.title" == "Get Schema Positions" jsonpath "$.result.tools[5].annotations.readOnlyHint" == true jsonpath "$.result.tools[5].annotations.destructiveHint" == false @@ -76,7 +88,9 @@ jsonpath "$.result.tools[5].annotations.openWorldHint" == false jsonpath "$.result.tools[6].name" == "get_schema_stats" jsonpath "$.result.tools[6].description" == "Look up a precomputed artifact about a specific schema by its absolute URI" jsonpath "$.result.tools[6].inputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/stats/rpc" +jsonpath "$.result.tools[6].inputSchema.type" == "object" jsonpath "$.result.tools[6].outputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/stats/response" +jsonpath "$.result.tools[6].outputSchema.type" == "object" jsonpath "$.result.tools[6].annotations.title" == "Get Schema Stats" jsonpath "$.result.tools[6].annotations.readOnlyHint" == true jsonpath "$.result.tools[6].annotations.destructiveHint" == false @@ -85,7 +99,9 @@ jsonpath "$.result.tools[6].annotations.openWorldHint" == false jsonpath "$.result.tools[7].name" == "get_schema_metadata" jsonpath "$.result.tools[7].description" == "Read a navigation artifact for browsing schemas" jsonpath "$.result.tools[7].inputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/metadata/rpc" +jsonpath "$.result.tools[7].inputSchema.type" == "object" jsonpath "$.result.tools[7].outputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/metadata/response" +jsonpath "$.result.tools[7].outputSchema.type" == "object" jsonpath "$.result.tools[7].annotations.title" == "Get Schema Metadata" jsonpath "$.result.tools[7].annotations.readOnlyHint" == true jsonpath "$.result.tools[7].annotations.destructiveHint" == false @@ -94,7 +110,9 @@ jsonpath "$.result.tools[7].annotations.openWorldHint" == false jsonpath "$.result.tools[8].name" == "evaluate_schema" jsonpath "$.result.tools[8].description" == "Validate a JSON instance against a schema and return whether it is valid plus any errors" jsonpath "$.result.tools[8].inputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/evaluate/rpc" +jsonpath "$.result.tools[8].inputSchema.type" == "object" jsonpath "$.result.tools[8].outputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/evaluate/response" +jsonpath "$.result.tools[8].outputSchema.type" == "object" jsonpath "$.result.tools[8].annotations.title" == "Evaluate Schema" jsonpath "$.result.tools[8].annotations.readOnlyHint" == true jsonpath "$.result.tools[8].annotations.destructiveHint" == false @@ -103,7 +121,9 @@ jsonpath "$.result.tools[8].annotations.openWorldHint" == false jsonpath "$.result.tools[9].name" == "trace_schema_evaluation" jsonpath "$.result.tools[9].description" == "Validate a JSON instance against a schema and return detailed information about every step of the evaluation process" jsonpath "$.result.tools[9].inputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/trace/rpc" +jsonpath "$.result.tools[9].inputSchema.type" == "object" jsonpath "$.result.tools[9].outputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/trace/response" +jsonpath "$.result.tools[9].outputSchema.type" == "object" jsonpath "$.result.tools[9].annotations.title" == "Trace Schema Evaluation" jsonpath "$.result.tools[9].annotations.readOnlyHint" == true jsonpath "$.result.tools[9].annotations.destructiveHint" == false @@ -112,7 +132,9 @@ jsonpath "$.result.tools[9].annotations.openWorldHint" == false jsonpath "$.result.tools[10].name" == "search_schemas" jsonpath "$.result.tools[10].description" == "Search for schemas by query term" jsonpath "$.result.tools[10].inputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/search/rpc" +jsonpath "$.result.tools[10].inputSchema.type" == "object" jsonpath "$.result.tools[10].outputSchema['$ref']" == "{{base}}/v1/catalog/self/v1/schemas/api/schemas/search/response" +jsonpath "$.result.tools[10].outputSchema.type" == "object" jsonpath "$.result.tools[10].annotations.title" == "Search Schemas" jsonpath "$.result.tools[10].annotations.readOnlyHint" == true jsonpath "$.result.tools[10].annotations.destructiveHint" == false diff --git a/enterprise/index/enterprise_index.cc b/enterprise/index/enterprise_index.cc index 48de3bb1..7748e8ed 100644 --- a/enterprise/index/enterprise_index.cc +++ b/enterprise/index/enterprise_index.cc @@ -140,6 +140,8 @@ auto generate_mcp_tools(const sourcemeta::core::URITemplateRouterView &router, assert(input_schema_url.has_value()); auto input_schema_ref{sourcemeta::core::JSON::make_object()}; + // The MCP schema requires `type: "object"` on tool input schemas + input_schema_ref.assign("type", sourcemeta::core::JSON{"object"}); input_schema_ref.assign( "$ref", sourcemeta::core::JSON{std::move(input_schema_url).value()}); @@ -150,6 +152,8 @@ auto generate_mcp_tools(const sourcemeta::core::URITemplateRouterView &router, assert(output_schema_url.has_value()); auto ref{sourcemeta::core::JSON::make_object()}; + // The MCP schema requires `type: "object"` on tool output schemas + ref.assign("type", sourcemeta::core::JSON{"object"}); ref.assign("$ref", sourcemeta::core::JSON{std::move(output_schema_url).value()}); output_schema_ref.emplace(std::move(ref)); diff --git a/src/self/v1/schemas/mcp/response.json b/src/self/v1/schemas/mcp/response.json index 6e93020d..31153ab7 100644 --- a/src/self/v1/schemas/mcp/response.json +++ b/src/self/v1/schemas/mcp/response.json @@ -76,9 +76,11 @@ "name": "list_directory", "description": "List the contents of a directory in the catalog", "inputSchema": { + "type": "object", "$ref": "https://example.com/v1/self/v1/schemas/api/list/rpc" }, "outputSchema": { + "type": "object", "$ref": "https://example.com/v1/self/v1/schemas/api/list/response" }, "annotations": { diff --git a/src/self/v1/schemas/mcp/tools/list/response.json b/src/self/v1/schemas/mcp/tools/list/response.json index 4ac7c618..840e847a 100644 --- a/src/self/v1/schemas/mcp/tools/list/response.json +++ b/src/self/v1/schemas/mcp/tools/list/response.json @@ -12,9 +12,11 @@ "name": "list_directory", "description": "List the contents of a directory in the catalog", "inputSchema": { + "type": "object", "$ref": "https://example.com/v1/self/v1/schemas/api/list/rpc" }, "outputSchema": { + "type": "object", "$ref": "https://example.com/v1/self/v1/schemas/api/list/response" }, "annotations": { @@ -60,8 +62,11 @@ "inputSchema": { "x-lint-exclude": [ "simple_properties_identifiers" ], "type": "object", - "required": [ "$ref" ], + "required": [ "type", "$ref" ], "properties": { + "type": { + "const": "object" + }, "$ref": { "$comment": "TODO: Use Format Assertion when supported on Blaze", "type": "string", @@ -73,8 +78,11 @@ "outputSchema": { "x-lint-exclude": [ "simple_properties_identifiers" ], "type": "object", - "required": [ "$ref" ], + "required": [ "type", "$ref" ], "properties": { + "type": { + "const": "object" + }, "$ref": { "$comment": "TODO: Use Format Assertion when supported on Blaze", "type": "string",