{ "apiVersion": "hub.example.com/v1alpha1", "kind": "ToolManifest", "metadata": { "name": "Knowledge Hub Attachment Text", "slug": "ingestion-extract" }, "spec": { "canonicalName": "knowledge.ingestion.extract", "connectorToolName": "extract_knowledge_files", "exposedNames": [ "extract_knowledge_files" ], "version": "1.0.0", "connectorType": "ingestion", "description": "Scan and extract attached file text in explicit 12,000-character pages with per-file SHA-256 and coverage. This read has no proposal side effects; continue until allFilesComplete is true.", "riskClass": "R1", "readOnly": true, "idempotent": true, "inputSchema": { "type": "object", "additionalProperties": false, "properties": { "project_id": { "type": "string", "format": "uuid", "description": "Optional target project UUID. If omitted, the operation uses the Knowledge Hub workspace; this requires the default-off server policy and the trusted knowledge-hub/prod connector identity. A supplied UUID remains strictly allowlisted." }, "files": { "type": "array", "minItems": 1, "maxItems": 5, "items": { "type": "object", "additionalProperties": false, "properties": { "download_url": { "type": "string", "format": "uri", "maxLength": 8192 }, "file_id": { "type": "string", "minLength": 1, "maxLength": 128, "description": "Opaque attachment reference; preserve its exact value. Must contain 1–128 printable Unicode characters." }, "mime_type": { "type": "string", "maxLength": 128 }, "file_name": { "type": "string", "maxLength": 255 } }, "required": [ "download_url", "file_id" ] } }, "page_cursor": { "type": [ "string", "null" ], "maxLength": 256 } }, "required": [ "files" ] }, "outputSchema": { "type": "object" }, "limits": { "timeoutMs": 120000, "maxOutputBytes": 131072, "maxItems": 5 }, "redactionProfile": "strict", "requiredScopes": [ "project:{project}:write" ] } }