paperclipai/paperclip · error
Plugin not found
Error message
Plugin not found
What it means
404 from POST /plugins/:pluginId/bridge/data. Fires when resolvePlugin cannot find a plugin for the given pluginId (unknown id or not accessible), before any bridge call is attempted.
Source
Thrown at server/src/routes/plugins.ts:1411
* - 502 if the worker is unavailable or returns an error
*
* @see PLUGIN_SPEC.md §13.8 — `getData`
* @see PLUGIN_SPEC.md §19.7 — Error Propagation Through The Bridge
*/
router.post("/plugins/:pluginId/bridge/data", async (req, res) => {
assertBoardOrgAccess(req);
if (!bridgeDeps) {
res.status(501).json({ error: "Plugin bridge is not enabled" });
return;
}
const { pluginId } = req.params;
// Resolve plugin
const plugin = await resolvePlugin(registry, pluginId);
if (!plugin) {
res.status(404).json({ error: "Plugin not found" });
return;
}
// Validate plugin is in ready state
if (plugin.status !== "ready") {
const bridgeError: PluginBridgeErrorResponse = {
code: "WORKER_UNAVAILABLE",
message: `Plugin is not ready (current status: ${plugin.status})`,
};
attachPluginBridgeErrorContext(req, res, new Error(bridgeError.message), bridgeError, {
pluginId: plugin.id,
pluginKey: plugin.pluginKey,
bridgeMethod: "getData",
});
res.status(502).json(bridgeError);
return;
}
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:1395 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/d5baeb9aae0859c1.
Report an issue: GitHub.