{ "$schema": "https://json-schema.org/draft/2020-12/schema", "title": "ITWorx MCP Hub Tool Manifest", "description": "Governed MCP tool definition independent of gateway IDs.", "type": "object", "additionalProperties": false, "$id": "https://hub.example.com/schemas/tool-manifest.schema.json", "required": [ "apiVersion", "kind", "metadata", "spec" ], "properties": { "apiVersion": { "const": "hub.example.com/v1alpha1" }, "kind": { "const": "ToolManifest" }, "metadata": { "$ref": "common.schema.json#/$defs/metadata" }, "spec": { "type": "object", "additionalProperties": false, "required": [ "canonicalName", "version", "connectorType", "description", "riskClass", "readOnly", "idempotent", "inputSchema", "outputSchema", "limits", "redactionProfile", "requiredScopes" ], "properties": { "canonicalName": { "type": "string", "pattern": "^[a-z][a-z0-9_]*(?:\\.[a-z][a-z0-9_]*){2,5}$", "maxLength": 128 }, "connectorToolName": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$", "description": "Optional wire-level MCP name when a standard compatibility tool differs from the governed canonical name." }, "exposedNames": { "type": "array", "maxItems": 8, "uniqueItems": true, "items": { "type": "string", "pattern": "^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$" } }, "version": { "type": "string", "pattern": "^[0-9]+\\.[0-9]+\\.[0-9]+$" }, "connectorType": { "type": "string", "pattern": "^[a-z0-9-]+$" }, "description": { "type": "string", "minLength": 1, "maxLength": 1000 }, "riskClass": { "$ref": "common.schema.json#/$defs/riskClass" }, "readOnly": { "type": "boolean" }, "idempotent": { "type": "boolean" }, "inputSchema": { "type": "object" }, "outputSchema": { "type": "object" }, "limits": { "type": "object", "additionalProperties": false, "required": [ "timeoutMs", "maxOutputBytes", "maxItems" ], "properties": { "timeoutMs": { "type": "integer", "minimum": 100, "maximum": 120000 }, "maxOutputBytes": { "type": "integer", "minimum": 1024, "maximum": 1048576 }, "maxItems": { "type": "integer", "minimum": 1, "maximum": 5000 } } }, "redactionProfile": { "enum": [ "strict", "logs", "documents", "metadata" ] }, "requiredScopes": { "type": "array", "minItems": 1, "uniqueItems": true, "items": { "type": "string", "maxLength": 200 } } } } } }