paperclipai/paperclip · error
Plugin manifest is missing
Error message
Plugin manifest is missing
What it means
400 from the plugin webhook ingestion route. Fires when the resolved plugin exists but has no manifestJson (manifest missing), so the handler cannot inspect its declared webhooks/capabilities to validate the delivery.
Source
Thrown at server/src/routes/plugins.ts:2718
// Step 1: Resolve the plugin
const plugin = await resolvePlugin(registry, pluginId);
if (!plugin) {
res.status(404).json({ error: "Plugin not found" });
return;
}
// Step 2: Validate the plugin is in 'ready' state
if (plugin.status !== "ready") {
res.status(400).json({
error: `Plugin is not ready (current status: ${plugin.status})`,
});
return;
}
// Step 3: Validate the plugin has webhooks.receive capability
const manifest = plugin.manifestJson;
if (!manifest) {
res.status(400).json({ error: "Plugin manifest is missing" });
return;
}
const capabilities = manifest.capabilities ?? [];
if (!capabilities.includes("webhooks.receive")) {
res.status(400).json({
error: "Plugin does not have the webhooks.receive capability",
});
return;
}
// Step 4: Validate the endpointKey exists in the manifest's webhook declarations
const declaredWebhooks = manifest.webhooks ?? [];
const webhookDecl = declaredWebhooks.find(
(w) => w.endpointKey === endpointKey,
);
if (!webhookDecl) {
res.status(404).json({View on GitHub (pinned to a7e689b3c3)
Solutions
- Reinstall or re-register the plugin so its manifest is written to the plugin instance record.
- Verify the plugin package is intact and exposes a valid manifest (paperclip.plugin.json or equivalent).
Defensive patterns
Strategy: validation
When it happens
Trigger: Thrown at server/src/routes/plugins.ts:2696 when the library encounters an invalid state.
Common situations: Occurs when a webhook (or other plugin route) is invoked for a plugin instance whose stored manifest is missing, usually due to a partial install or corrupted plugin record.
AI-assisted analysis of paperclipai/paperclip@a7e689b3c3 (2026-08-18).
Data as JSON: /api/errors/46f8f3016bc973f4.
Report an issue: GitHub.