paperclipai/paperclip · error
Tool "${tool}" not found
Error message
Tool "${tool}" not found What it means
404 from plugin tool invocation routes. Raised in pluginRoutes when the requested tool name is not registered in the tool dispatcher's tool set — the caller referenced a tool that no installed plugin exposes under that name.
Source
Thrown at server/src/routes/plugins.ts:1085
} catch (err) {
if (err instanceof ToolGatewayHttpError) {
res.status(err.status).json({ error: err.message, reasonCode: err.reasonCode, ...err.details });
return;
}
const message = err instanceof Error ? err.message : String(err);
if (message.includes("not running") || message.includes("worker")) {
res.status(502).json({ error: message });
} else {
res.status(500).json({ error: message });
}
}
return;
}
// Verify the tool exists
const registeredTool = toolDeps.toolDispatcher.getTool(tool);
if (!registeredTool) {
res.status(404).json({ error: `Tool "${tool}" not found` });
return;
}
try {
const result = await toolDeps.toolDispatcher.executeTool(
tool,
parameters ?? {},
runContext,
);
res.json(result);
} catch (err) {
const message = err instanceof Error ? err.message : String(err);
// Distinguish between "worker not running" (502) and other errors (500)
if (message.includes("not running") || message.includes("worker")) {
res.status(502).json({ error: message });
} else {
res.status(500).json({ error: message });View on GitHub (pinned to a7e689b3c3)
Solutions
- Verify the id in the request path or body refers to an existing record in this company; re-list the parent collection to get a valid id.
- Check that the record was not deleted or archived, and that the request is scoped to the correct companyId.
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at server/src/routes/plugins.ts:1070 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of paperclipai/paperclip@a7e689b3c3 (2026-08-18).
Data as JSON: /api/errors/2b22507cf1585254.
Report an issue: GitHub.