{ "apiVersion": "hub.example.com/v1alpha1", "kind": "ToolManifest", "metadata": { "name": "Observability Logs Search", "slug": "observability-logs-search" }, "spec": { "canonicalName": "observability.logs.search", "version": "1.0.0", "connectorType": "observability", "description": "Search bounded redacted internal service logs for the current project context.", "riskClass": "R1", "readOnly": true, "idempotent": true, "inputSchema": { "type": "object", "additionalProperties": false, "properties": { "query": { "type": [ "string", "null" ], "maxLength": 500 }, "serviceRef": { "type": [ "string", "null" ], "maxLength": 128 }, "lookbackMinutes": { "type": "integer", "minimum": 1, "maximum": 1440, "default": 60 }, "limit": { "type": "integer", "minimum": 1, "maximum": 500, "default": 100 }, "cursor": { "type": [ "string", "null" ], "maxLength": 500, "default": null } }, "required": [] }, "outputSchema": { "type": "object", "additionalProperties": false, "properties": { "items": { "type": "array", "maxItems": 100, "items": { "type": "object", "additionalProperties": false, "properties": { "timestamp": { "type": "string", "format": "date-time" }, "serviceRef": { "type": "string", "pattern": "^[a-z0-9][a-z0-9-]{0,127}$" }, "level": { "type": "string", "maxLength": 30 }, "message": { "type": "string", "maxLength": 4096 }, "traceId": { "type": [ "string", "null" ], "maxLength": 128 } }, "required": [ "timestamp", "serviceRef", "level", "message", "traceId" ] } }, "nextCursor": { "type": [ "string", "null" ], "maxLength": 500 }, "truncated": { "type": "boolean" }, "generatedAt": { "type": "string", "format": "date-time" } }, "required": [ "items", "nextCursor", "truncated", "generatedAt" ] }, "limits": { "timeoutMs": 15000, "maxOutputBytes": 262144, "maxItems": 500 }, "redactionProfile": "logs", "requiredScopes": [ "project:{project}:read" ] } }