{"record":{"id":"c24fa24d3c930424","repo":"paperclipai/paperclip","slug":"tool-namespacedname-is-not-registered-the-pl","errorCode":null,"errorMessage":"Tool \"${namespacedName}\" is not registered. The plugin may not be installed or its worker may not be running.","messagePattern":"Tool \"(.+?)\" is not registered\\. The plugin may not be installed or its worker may not be running\\.","errorType":"exception","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/src/services/plugin-tool-registry.ts","lineNumber":402,"sourceCode":"    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(\n          `Cannot execute tool \"${namespacedName}\" — no worker manager configured. ` +\n          `Tool execution requires a PluginWorkerManager.`,\n        );\n      }\n\n      // 4. Verify the plugin worker is running (use DB UUID for worker lookup)\n      const dbId = tool.pluginDbId;\n      if (!workerManager.isRunning(dbId)) {\n        throw new Error(\n          `Cannot execute tool \"${namespacedName}\" — ` +","sourceCodeStart":384,"sourceCodeEnd":420,"githubUrl":"https://github.com/paperclipai/paperclip/blob/120ae5428fa29bee300bcf806491cd4d965fbb7c/server/src/services/plugin-tool-registry.ts#L384-L420","documentation":"Registration guard in executeTool: the namespaced name parses but no tool is registered under it — the plugin is not installed or its worker never registered the tool. The missing tool registration is at fault.","triggerScenarios":"Thrown at server/src/services/plugin-tool-registry.ts:402 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Ensure the plugin is installed and its worker is running so its tools are registered; list registered tools to confirm the name."],"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"}