Documentation

Everything you need to run Paperclip.

Guides, references, and walkthroughs for the people running AI agents at work. Start at the quickstart, or jump anywhere below.

Plugins API

The plugins API is the REST surface behind the Plugin Manager UI and the plugin runtime bridge. It covers installation, lifecycle (enable/disable/upgrade), config, jobs, webhooks, local-folder mounts, dashboard data, and the worker-side bridge calls plugins make back to the host.

For the operator-facing walkthrough see Administration → Plugins. For the authoring SDK see Reference → Plugins → Plugin SDK.

All routes are mounted under /api. Most are instance-admin operations; the company-scoped routes are explicit in the path.


Registry and discovery

Endpoint Purpose
GET /api/plugins List installed plugins on this instance.
GET /api/plugins/examples List the bundled plugins discovered in the current checkout (reference examples and vendored first-party plugins). See below.
GET /api/plugins/ui-contributions Aggregate of UI slots and launchers contributed by enabled plugins. The Paperclip UI consumes this on page load.
GET /api/plugins/tools Tools declared by enabled plugins.
POST /api/plugins/tools/execute Execute a plugin-declared tool by key.

Bundled plugin discovery

GET /api/plugins/examples returns the plugins that ship inside the current Paperclip checkout. Rather than a fixed list, the server scans the bundled packages on disk for plugin manifests, so the result reflects whatever your checkout actually contains — the reference example plugins plus any vendored first-party plugins. The result is cached after the first scan.

Each entry has this shape:

{
  "packageName": "@paperclipai/plugin-llm-wiki",
  "pluginKey": "llm-wiki",
  "displayName": "LLM Wiki",
  "description": "…",
  "localPath": "packages/plugins/…",
  "tag": "first-party",
  "experimental": true
}
  • tag is example for the reference plugins or first-party for vendored real plugins.
  • experimental is true for first-party plugins that aren't production-ready yet; the Plugin Manager renders these with an Experimental badge.
  • localPath is what the install flow points at for an in-checkout install.

Install and lifecycle

Endpoint Purpose
POST /api/plugins/install Install a plugin package.
GET /api/plugins/:pluginId Read the installed plugin record.
DELETE /api/plugins/:pluginId Uninstall the plugin.
POST /api/plugins/:pluginId/enable Enable the plugin; starts its worker.
POST /api/plugins/:pluginId/disable Disable the plugin; stops its worker and hides UI contributions.
POST /api/plugins/:pluginId/upgrade Run the upgrade flow against the plugin's source.
GET /api/plugins/:pluginId/health Read the current health diagnostics reported by the plugin worker.
GET /api/plugins/:pluginId/logs Read the plugin's recent worker logs.

Config

Endpoint Purpose
GET /api/plugins/:pluginId/config Read the resolved instance config.
POST /api/plugins/:pluginId/config Write a new instance config.
POST /api/plugins/:pluginId/config/test Validate a candidate config without persisting it — invokes the plugin's validateConfig RPC.

Jobs and webhooks

Endpoint Purpose
GET /api/plugins/:pluginId/jobs List the plugin's declared jobs.
GET /api/plugins/:pluginId/jobs/:jobId/runs List recent runs for a job.
POST /api/plugins/:pluginId/jobs/:jobId/trigger Manually trigger a job run.
POST /api/plugins/:pluginId/webhooks/:endpointKey Inbound webhook delivery to the plugin worker's handleWebhook.

Local folders

Plugins can declare local-folder mounts; the UI and CLI use these endpoints to inspect and configure them per company.

Endpoint Purpose
GET /api/plugins/:pluginId/companies/:companyId/local-folders List configured local-folder mounts for the plugin/company pair.
GET /api/plugins/:pluginId/companies/:companyId/local-folders/:folderKey/status Status of one mount (configured / problems / listing summary).
POST /api/plugins/:pluginId/companies/:companyId/local-folders/:folderKey/validate Validate a candidate folder path without persisting.
PUT /api/plugins/:pluginId/companies/:companyId/local-folders/:folderKey Persist a folder configuration for that mount.

Dashboard

Endpoint Purpose
GET /api/plugins/:pluginId/dashboard Read the dashboard payload the plugin exposes to the UI.

Worker bridge

These endpoints back the worker-to-host bridge — the calls a plugin worker makes when it asks the host for data, performs an action, or opens a stream. They are typically consumed by the runtime itself, but they are valid REST endpoints for tests and replay.

Endpoint Purpose
POST /api/plugins/:pluginId/bridge/data Resolve a data request the worker initiated.
POST /api/plugins/:pluginId/bridge/action Resolve an action request the worker initiated.
GET /api/plugins/:pluginId/bridge/stream/:channel Open a stream channel from the worker.
POST /api/plugins/:pluginId/data/:key UI-facing entry to read a plugin's registered data feed by key.
POST /api/plugins/:pluginId/actions/:key UI-facing entry to invoke a plugin's registered action by key.

Stability. The plugin runtime ships in alpha. Endpoint shapes here may change between Paperclip releases — pin your plugin and Paperclip versions in lockstep.