{"record":{"id":"4d03a5401dd612ca","repo":"paperclipai/paperclip","slug":"invalid-tool-name-namespacedname-expected-fo","errorCode":null,"errorMessage":"Invalid tool name \"${namespacedName}\". Expected format: \"<pluginId>${TOOL_NAMESPACE_SEPARATOR}<toolName>\"","messagePattern":"Invalid tool name \"(.+?)\"\\. Expected format: \"<pluginId>(.+?)<toolName>\"","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/src/services/plugin-tool-registry.ts","lineNumber":392,"sourceCode":"    },\n\n    parseNamespacedName(namespacedName: string): { pluginId: string; toolName: string } | null {\n      return parseName(namespacedName);\n    },\n\n    buildNamespacedName(pluginId: string, toolName: string): string {\n      return buildName(pluginId, toolName);\n    },\n\n    async executeTool(\n      namespacedName: string,\n      parameters: unknown,\n      runContext: ToolRunContext,\n    ): Promise<ToolExecutionResult> {\n      // 1. Resolve the namespaced name\n      const parsed = parseName(namespacedName);\n      if (!parsed) {\n        throw new Error(\n          `Invalid tool name \"${namespacedName}\". Expected format: \"<pluginId>${TOOL_NAMESPACE_SEPARATOR}<toolName>\"`,\n        );\n      }\n\n      const { pluginId, toolName } = parsed;\n\n      // 2. Verify the tool is registered\n      const tool = byNamespace.get(namespacedName);\n      if (!tool) {\n        throw new Error(\n          `Tool \"${namespacedName}\" is not registered. ` +\n          `The plugin may not be installed or its worker may not be running.`,\n        );\n      }\n\n      // 3. Verify the worker manager is available\n      if (!workerManager) {\n        throw new Error(","sourceCodeStart":374,"sourceCodeEnd":410,"githubUrl":"https://github.com/paperclipai/paperclip/blob/120ae5428fa29bee300bcf806491cd4d965fbb7c/server/src/services/plugin-tool-registry.ts#L374-L410","documentation":"executeTool failed to split the requested tool name into pluginId and toolName because it does not match the required '<pluginId><separator><toolName>' namespacing format, so the tool cannot be resolved to a plugin.","triggerScenarios":"Thrown at server/src/services/plugin-tool-registry.ts:392 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Use the fully namespaced tool name format '<pluginId>:<toolName>' with the correct separator when calling the tool registry."],"exampleFix":null,"handlingStrategy":"validation","validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"120ae5428fa29bee300bcf806491cd4d965fbb7c","analyzedAt":"2026-08-18T22:49:45.177Z","contentChangedAt":"2026-08-18T22:49:45.177Z","schemaVersion":2},"datasetVersion":"2026-09-14T05:17:10.506Z"}