papercliped 2.2.1 → 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/.claude-plugin/plugin.json +1 -1
  2. package/CHANGELOG.md +20 -0
  3. package/README.md +9 -5
  4. package/dist/access/guard.js +17 -0
  5. package/dist/access/policy.js +203 -0
  6. package/dist/execute.js +25 -1
  7. package/dist/manage/routes.js +46 -2
  8. package/dist/mcp.js +6 -5
  9. package/dist/oauth/pg-store.js +13 -1
  10. package/dist/oauth/provider.js +50 -1
  11. package/dist/oauth/store.js +20 -0
  12. package/dist/public-api/types.js +1 -1
  13. package/dist/server.js +2 -2
  14. package/dist/site/markdown.js +26 -5
  15. package/dist/site/site.js +10 -1
  16. package/docs/CONTROL-ROOM.md +79 -0
  17. package/docs/SECURITY.md +1 -1
  18. package/docs/SITEMAP.md +3 -1
  19. package/docs/supabase-schema.sql +12 -1
  20. package/migrations/007_control_room.sql +9 -0
  21. package/package.json +1 -1
  22. package/site/docs/access-modes.md +72 -0
  23. package/site/docs/connect-your-paperclip.md +139 -93
  24. package/site/docs/control-room.md +61 -0
  25. package/site/docs/faq.md +16 -1
  26. package/site/docs/getting-started.md +2 -2
  27. package/site/docs/host-coolify.md +78 -0
  28. package/site/docs/host-fly.md +129 -0
  29. package/site/docs/host-railway.md +105 -0
  30. package/site/docs/host-render.md +79 -0
  31. package/site/docs/host-vps.md +202 -0
  32. package/site/docs/hosting.md +105 -0
  33. package/site/docs/limits-and-errors.md +1 -0
  34. package/site/docs/manage-api.md +12 -1
  35. package/site/docs/paperclip-plugin.md +21 -10
  36. package/site/docs/permissions.md +8 -0
  37. package/site/docs/prompts.md +349 -0
  38. package/site/docs/public-api.md +1 -1
  39. package/site/docs/signup.md +1 -1
  40. package/site/docs/tools.md +35 -35
  41. package/site/docs/troubleshooting.md +11 -1
@@ -0,0 +1,105 @@
1
+ # Host your Paperclip
2
+
3
+ Papercliped connects your AI app to **your** Paperclip over the internet, so your Paperclip needs a public `https://` address. This section takes you from nothing to a running Paperclip with a public address, connected to Papercliped, with one complete guide per hosting option.
4
+
5
+ Already have Paperclip running at a public `https://` address? Skip to [Connect Papercliped](#connect-papercliped).
6
+
7
+ ## Pick where to run it
8
+
9
+ | Option | Cost per month (Oct 2026, approx.) | Effort | Best for | Guide |
10
+ | --- | --- | --- | --- | --- |
11
+ | **Your own computer + a tunnel** | Free (plus a domain, if you want one) | Medium | Trying it out; a computer that's always on | [At home, with a tunnel](/docs/connect-your-paperclip) |
12
+ | **A VPS with Docker** (Hetzner, DigitalOcean, Linode…) | about €5–12 | Medium | Best value for daily use, full control | [VPS with Docker](/docs/host-vps) |
13
+ | **Railway** | about $10–25 (usage-based) | Easy | The fewest steps, no server to look after | [Railway](/docs/host-railway) |
14
+ | **Render** | about $25+ (2 GB plan) plus disk | Easy | A dashboard you already know | [Render](/docs/host-render) |
15
+ | **Fly.io** | about $11–22 plus volume | Medium | Command-line people, pick your region | [Fly.io](/docs/host-fly) |
16
+ | **Coolify** on a VPS | your VPS (8 GB recommended) | Easy–medium | A point-and-click panel on your own server | [Coolify](/docs/host-coolify) |
17
+
18
+ Prices change; check the provider's pricing page before you sign up.
19
+
20
+ **Not recommended:** free tiers that **sleep** (Render free, Railway's free plan) or hosts with **no persistent disk** (DigitalOcean App Platform). Paperclip keeps its database, secrets key, uploads, agent workspaces and agent logins on disk, and a sleeping server stops your agents mid-task. Use a DigitalOcean *Droplet* with the [VPS guide](/docs/host-vps) instead.
21
+
22
+ **Not sure?** Start at home with a tunnel to try everything for free. When you want it running all the time, move to a VPS (cheapest) or Railway (easiest).
23
+
24
+ ## What every option needs
25
+
26
+ Every guide sets these up. If you're doing something we don't cover, this is the checklist.
27
+
28
+ 1. **Paperclip in authenticated, public mode.** Paperclip has two modes: `local_trusted` (no login, only on your own computer) and `authenticated` (people sign in). An internet-facing Paperclip must be `authenticated` with `public` exposure. Never put a `local_trusted` Paperclip behind a public address.
29
+ 2. **Its public address set explicitly.** Paperclip builds sign-in links and checks hostnames from it.
30
+ 3. **Two long random secrets.** One for sign-ins, one for signing tool-action approvals.
31
+ 4. **A persistent disk** at Paperclip's data folder (`/paperclip` in the Docker image, `~/.paperclip` otherwise).
32
+ 5. **At least 2 GB of memory, 4 GB if you run several agents.** Agents run as programs inside the same machine.
33
+ 6. **Always on.** A restart or redeploy stops any agent run in progress, so avoid hosts that sleep, and update when your agents are idle.
34
+ 7. **Nothing blocking `/api/*`.** No login wall, bot challenge or "under attack" mode in front of Paperclip's API, or Papercliped can't reach it.
35
+
36
+ ### The settings
37
+
38
+ | Setting | Value | Why |
39
+ | --- | --- | --- |
40
+ | `PAPERCLIP_DEPLOYMENT_MODE` | `authenticated` | People sign in (the Docker image's default) |
41
+ | `PAPERCLIP_DEPLOYMENT_EXPOSURE` | `public` | Internet-facing. The Docker image defaults to `private`, which refuses unknown hostnames |
42
+ | `PAPERCLIP_PUBLIC_URL` | `https://paperclip.example.com` | Your public address, exactly as people will type it |
43
+ | `BETTER_AUTH_SECRET` | 64 random hex characters | Signs sign-in sessions. Required |
44
+ | `PAPERCLIP_TOOL_ACTION_SIGNING_SECRET` | 64 random hex characters | Signs tool-action approvals |
45
+ | `PORT` | `3100` | Paperclip's port (the image's default; some hosts need it set) |
46
+ | `DATABASE_URL` | optional | Leave unset to use Paperclip's built-in Postgres on the disk, or point it at a managed Postgres |
47
+ | `TRUST_PROXY` | optional | Tells Paperclip which proxy in front of it to believe about the visitor's address (`uniquelocal` behind Caddy in Docker). Leave unset if unsure |
48
+ | `ANTHROPIC_API_KEY`, `OPENAI_API_KEY` | optional | Keys for the agents that use Claude Code or Codex. You can sign in inside the server instead (see each guide) |
49
+
50
+ Make a secret with:
51
+
52
+ ```
53
+ openssl rand -hex 32
54
+ ```
55
+
56
+ No `openssl`? Any password manager can generate a 64-character random password; use letters and numbers only.
57
+
58
+ ### Your first account
59
+
60
+ In public mode, Paperclip doesn't show a "claim this instance" button (anyone on the internet could press it). Instead you run one command on the server, which prints a **one-time invite link** for the first admin:
61
+
62
+ ```
63
+ npx --yes paperclipai auth bootstrap-ceo --data-dir /paperclip --base-url https://paperclip.example.com
64
+ ```
65
+
66
+ Each guide shows exactly where to run it. Open the link, create your account, and you're the admin. Once you have your account, you can close public sign-ups by setting `PAPERCLIP_AUTH_DISABLE_SIGN_UP=true` and restarting; invite teammates from inside Paperclip.
67
+
68
+ ### Your agents' keys
69
+
70
+ The official Paperclip image already includes the Claude Code, Codex, OpenCode and Gemini command-line tools, plus git and the GitHub CLI. Your agents need one of:
71
+
72
+ - **An API key** as a setting: `ANTHROPIC_API_KEY` for Claude Code agents, `OPENAI_API_KEY` for Codex agents.
73
+ - **Your subscription login**, done once inside the server (for example `claude` or `codex`, then follow the sign-in). The login is saved on the persistent disk, so it survives restarts.
74
+
75
+ ## Check it works
76
+
77
+ From any computer (your phone on mobile data is a good test):
78
+
79
+ ```
80
+ curl https://paperclip.example.com/api/health
81
+ ```
82
+
83
+ On Windows PowerShell use `curl.exe`. A healthy answer is JSON that includes:
84
+
85
+ ```
86
+ "status":"ok", "deploymentMode":"authenticated", "deploymentExposure":"public", "bootstrapStatus":"ready"
87
+ ```
88
+
89
+ `"bootstrapStatus":"bootstrap_pending"` means nobody has created the first account yet (see [Your first account](#your-first-account)).
90
+
91
+ ## Connect Papercliped
92
+
93
+ 1. Add the connector in your AI app. In Claude: **Settings → Connectors → Add custom connector**, address `{{MCP}}/mcp`. Other apps: [Any AI app](/docs/other-ai-apps), [ChatGPT](/docs/chatgpt).
94
+ 2. On the Papercliped page choose **Connect your Paperclip** and enter your public address (just `https://paperclip.example.com`, no path).
95
+ 3. Approve the request in your Paperclip (you'll be asked to sign in), pick a username, save the secret key you're shown once, and choose **Read only** or **Full control**. Details: [Create your account](/docs/signup).
96
+ 4. Leave **Also install the Papercliped plugin** ticked to manage your connections from inside Paperclip ([Paperclip plugin](/docs/paperclip-plugin)).
97
+ 5. Send your first prompt: *"Catch me up on my Paperclip."* Then try more from the [prompt gallery](/docs/prompts).
98
+
99
+ ## Keep it safe
100
+
101
+ - Use long random secrets and keep them out of chats, screenshots and Git.
102
+ - Keep Paperclip up to date, and update when agents are idle.
103
+ - Back up the data disk (each guide says how).
104
+ - Expose only Paperclip, nothing else on the machine.
105
+ - You can cut Papercliped's access at any time: disconnect apps in the [Paperclip plugin](/docs/paperclip-plugin), or revoke the key in Paperclip.
@@ -21,6 +21,7 @@ Tool errors come back to your AI app with a message it can read. Over HTTP (Chat
21
21
  | --- | --- | --- | --- |
22
22
  | `400` | `invalid_input` | The request didn't match the tool's inputs | Usually the AI retries with fixed input |
23
23
  | `403` | `insufficient_scope` | The connection's level is too low for this tool | Switch the app to Full control in the [Paperclip plugin](/docs/paperclip-plugin) |
24
+ | `403` | `policy_blocked` | Your settings don't allow this call: the access switch, an agent's setting, or the session's tool or agent list. The error carries a `policy` code (see [API only, Full or Agent only](/docs/access-modes)) | Change the setting in the [control room](/docs/control-room) if you want it allowed |
24
25
  | `403` | `read_only` | The bridge runs with `PAPERCLIP_READ_ONLY` | Ask the operator |
25
26
  | `401`, `403`, `404`, `409`… | `upstream_4xx` | Paperclip refused (e.g. your Paperclip key was revoked: reconnect) | Check the message |
26
27
  | `5xx` | `upstream_5xx` | Paperclip had an error | Try again later |
@@ -14,7 +14,14 @@ The token has no scopes: it can't call MCP, Actions or any Paperclip tool. It la
14
14
  | --- | --- |
15
15
  | `POST /plugin-link/sign-in` | Link: username + secret key → plugin token |
16
16
  | `GET /me` | Name, anonymity, connected Paperclip |
17
- | `GET /connections` | Connected apps with level and last use |
17
+ | `GET /connections` | Connected apps with level and last use (also `GET /sessions`, which is the same list under the name the control room uses) |
18
+ | `GET /sessions` | Sessions: each with `label`, `level`, `tools` (or `null` for all) and `agents` (or `null` for everyone) |
19
+ | `POST /sessions/:id` `{ "label", "tools", "agents", "level" }` | Change one session. Leave a field out to keep it; `null` clears a limit. Takes effect on the next request |
20
+ | `DELETE /sessions/:id` | Disconnect a session |
21
+ | `GET /policy` | The access switch and per-agent settings: `{ "mode": "api" \| "full" \| "agent", "agents": { "<agent id>": "api" \| "full" \| "agent" \| "off" } }` |
22
+ | `POST /policy` (or `PUT`) | Replace them with the same shape |
23
+ | `GET /tools` | Every tool with its `access` and its `surface` (`read`, `agent` or `api`) |
24
+ | `GET /activity?session=:id&limit=:n` | The newest tool calls (names and outcomes only), up to 200 |
18
25
  | `POST /connections/:id` `{ "level": "read" \| "control" }` | Change an app's level |
19
26
  | `DELETE /connections/:id` | Disconnect an app |
20
27
  | `POST /privacy` `{ "anonymous": true }` | Turn anonymity on or off |
@@ -26,6 +33,10 @@ The token has no scopes: it can't call MCP, Actions or any Paperclip tool. It la
26
33
 
27
34
  The last three need your secret key in the request.
28
35
 
36
+ A session's `tools` must be known tool names and `agents` agent ids; an empty list is refused (use `null` for "all"). Per-agent settings equal to the default are dropped. See [API only, Full or Agent only](/docs/access-modes).
37
+
38
+ The activity list holds, for each call: `at`, `tool`, `ok`, `blocked`, `status`, `error` (a coarse class such as `policy_blocked`), `ms`, `session` and `app`. It never holds what was sent to a tool or what came back.
39
+
29
40
  ## Errors
30
41
  `400` bad input, `401` wrong username or key when linking, or the token is unknown, expired or revoked, `403` wrong secret key for a sensitive action, `404` no such connection or link (also for other people's), `429` too many requests.
31
42
 
@@ -1,15 +1,17 @@
1
1
  # Paperclip plugin
2
2
 
3
- The Papercliped plugin is where you manage Papercliped, right inside Paperclip: a **Papercliped** entry in the sidebar and a page where you see every connected AI app, switch each between **Read only** and **Full control**, disconnect apps, turn anonymity on or off, and look after your account.
3
+ The Papercliped plugin puts Papercliped inside Paperclip. It adds the [control room](/docs/control-room): a **Papercliped** entry in the sidebar that opens a page where you see every connected AI app, choose what each may do and which agents it applies to, set [API only, Full or Agent only](/docs/access-modes) for every agent or one at a time, read what was used and what was blocked, and look after your account. It also adds a **Papercliped** tab on every agent's page and a widget for the dashboard.
4
4
 
5
- It manages your Papercliped account only. It never reads or controls your Paperclip itself, and AI apps still connect through Papercliped as before.
5
+ The plugin manages your Papercliped account and the limits on AI apps. It reads your agents' names, roles and status to list them, and never changes anything in Paperclip. AI apps still connect through Papercliped as before.
6
6
 
7
7
  ## Install (Paperclip admin)
8
8
  **Automatic (recommended).** When you connect your Paperclip from an AI app, the address step has a box, ticked by default: **Also install the Papercliped plugin in my Paperclip**. After you approve the sign-in, Papercliped asks your Paperclip to install it using Paperclip's own installer and your own approved key. It installs one fixed package, `papercliped-paperclip-plugin`, at the exact version that matches the service, and only when you are the Paperclip's instance admin. If you are not an admin, if it is already installed, or if your Paperclip can't install plugins, nothing happens and your connection works as usual. Untick the box to skip it.
9
9
 
10
10
  **By hand.** Install the npm package `papercliped-paperclip-plugin` from **Settings → Plugins** in Paperclip (instance admin only). You can remove it there at any time, whichever way it was installed.
11
11
 
12
- The plugin asks for these capabilities: store its own data, make outbound web requests (to Papercliped), and add a sidebar entry and a page.
12
+ The plugin asks for these capabilities: store its own data, make outbound web requests (to Papercliped), read agents (to list them), and add a sidebar entry, a page with its own menu, an agent tab and a dashboard widget.
13
+
14
+ **Updating from an earlier version.** Paperclip won't update a plugin to a version that asks for new permissions without an admin's approval, so go to **Settings → Plugins**, remove Papercliped, and install it again (or connect your Paperclip again with the install box ticked). You may need to link your account again; your Papercliped account, sessions and settings are kept at Papercliped and are not affected.
13
15
 
14
16
  The bridge address defaults to `https://papercliped.co`. If you host your own bridge, change **Papercliped bridge URL** in the plugin's settings. It must be `https`.
15
17
 
@@ -22,13 +24,22 @@ Papercliped checks the key once and hands the plugin a link token. The key itsel
22
24
  Lost your secret key? Connect from your AI app again and choose **Connect your Paperclip**: you keep your account and get a new key.
23
25
 
24
26
  ## What you can do
25
- - **Connected apps:** see each app's level and when it was last used, switch it between Read only and Full control (it applies on the app's next request), or disconnect it.
26
- - **Privacy:** appear anonymously in the service's logs, or switch back.
27
- - **Linked Paperclips:** see every Paperclip linked to your account, unlink this one, or remove an old one.
28
- - **Account** (asks for your secret key again):
29
- - **Make a new secret key.** Shown once. The old key stops working and other linked Paperclips have to link again; this one stays linked.
30
- - **Disconnect my Paperclip.** Papercliped forgets your Paperclip key and asks your Paperclip to revoke it. Every app stops working and the plugin unlinks. Your account stays.
31
- - **Delete my account.** Removes your username, stored key and every connection. Type your username to confirm.
27
+ The [control room](/docs/control-room) has six sections:
28
+
29
+ - **Overview:** the access switch (API only, Full, Agent only), your numbers, and what needs a look.
30
+ - **Sessions:** every connected app. Name it, set its level, choose its tools and which agents it applies to, see its recent calls, or disconnect it. It applies on the app's next request.
31
+ - **Agents:** what Papercliped may do with each agent, including turning one off.
32
+ - **Tools:** every tool, by what it does and what your settings allow.
33
+ - **Activity:** recent calls, including the ones that were blocked.
34
+ - **Settings:**
35
+ - **Privacy:** appear anonymously in the service's logs, or switch back.
36
+ - **Linked Paperclips:** see every Paperclip linked to your account, unlink this one, or remove an old one.
37
+ - **Account** (asks for your secret key again):
38
+ - **Make a new secret key.** Shown once. The old key stops working and other linked Paperclips have to link again; this one stays linked.
39
+ - **Disconnect my Paperclip.** Papercliped forgets your Paperclip key and asks your Paperclip to revoke it. Every app stops working and the plugin unlinks. Your account stays.
40
+ - **Delete my account.** Removes your username, stored key and every connection. Type your username to confirm.
41
+
42
+ Outside the control room: the **Papercliped tab** on an agent's page sets what AI apps may do with that one agent, and the **dashboard widget** shows the access switch in small.
32
43
 
33
44
  ## Good to know
34
45
  - The plugin runs as trusted code inside Paperclip, so install it only from the official package. The automatic install is limited to that one package and to the version that matches the service, and it is always your choice on the connect screen.
@@ -7,6 +7,14 @@ You decide how much the AI may do each time you connect. There are two levels.
7
7
  | **Read only** (default) | View agents, tasks, goals, costs and reports. Cannot change anything. |
8
8
  | **Full control** | Every tool: everything above, plus pause, resume, wake or terminate agents, create and update issues and goals, comment, decide approvals, change budgets and send any API request. Run your Paperclip from anywhere, without opening the dashboard. |
9
9
 
10
+ ## Beyond the two levels
11
+ The level is chosen when an app connects. After that, the [control room](/docs/control-room) gives you finer control, without reconnecting anything:
12
+
13
+ - **An access switch** for every agent: [API only, Full or Agent only](/docs/access-modes), and any agent can be set differently or turned off.
14
+ - **Per-session limits:** name a session, choose exactly which tools it may use, and choose whether it applies to everyone or only selected agents.
15
+
16
+ These only ever narrow what a level allows; they never grant more than the level.
17
+
10
18
  ## Good to know
11
19
  - Papercliped enforces these levels itself on every call, and refuses anything outside the level you chose.
12
20
  - Your Paperclip key has the access your Paperclip account has. The levels limit what the **AI app** can do through Papercliped; they do not shrink the key itself. That is why the key is stored encrypted and why you can revoke it at any time.
@@ -0,0 +1,349 @@
1
+ # Prompt gallery
2
+
3
+ Papercliped lets you run your Paperclip by talking to your AI app, so you don't have to click through the dashboard to make a task, wake an agent or answer an approval. Copy a prompt, replace the parts in [brackets], and send it. Your AI app picks the right tools.
4
+
5
+ Each prompt says the level it needs. **Read only** prompts only look; **Full control** prompts change something, and your AI app asks before anything that can't be undone. Browse and copy them on [papercliped.co/prompts]({{URL}}/prompts).
6
+
7
+ ## Tips
8
+
9
+ - **Use names, not ids.** Say "the Web Engineer" or "the onboarding issue"; your AI app looks up the ids.
10
+ - **More than one company?** Start with "Use [company name] for this chat."
11
+ - **Ask for a preview.** Add "show me before you create anything" to any prompt that makes several changes.
12
+ - **Chain steps.** "Wake X, wait until they finish, then summarise" works in one message.
13
+ - **Not sure what's possible?** Ask "What can you do with my Paperclip?"
14
+
15
+ ## Start your day
16
+
17
+ Get the whole picture in one message instead of clicking through the dashboard.
18
+
19
+ ### Morning catch-up
20
+
21
+ > Catch me up on my Paperclip: what each agent is doing right now, anything blocked or in error, and approvals waiting on me.
22
+
23
+ Read only · `paperclip_sync_snapshot`, `paperclip_list_approvals`
24
+
25
+ ### What changed overnight
26
+
27
+ > What happened in my Paperclip since yesterday evening? Group it by agent and skip the routine heartbeats.
28
+
29
+ Read only · `paperclip_report_activity`
30
+
31
+ ### Needs my attention
32
+
33
+ > Is anything in my Paperclip waiting on me? Approvals, agents in error, blocked issues, budgets close to the limit.
34
+
35
+ Read only · `paperclip_report_status`
36
+
37
+ ### Which company
38
+
39
+ > Which Paperclip companies can you see? Use [company name] for the rest of this chat.
40
+
41
+ Read only · `paperclip_list_companies`
42
+
43
+ ## Hand out work
44
+
45
+ Create, assign and move issues by describing them. Assigning an issue to an agent with status todo is how you give it work.
46
+
47
+ ### Give an agent a task
48
+
49
+ > Create an issue "[title]" for [agent name]: [what you want done, and what done looks like]. Set it to todo so they pick it up.
50
+
51
+ Full control · `paperclip_list_agents`, `paperclip_create_issue`
52
+
53
+ ### Turn notes into issues
54
+
55
+ > Here are my notes from today's call. Turn each action item into an issue in [project name], assign each to the agent whose role fits best, and show me the list before creating them.
56
+ >
57
+ > [paste your notes]
58
+
59
+ Full control · `paperclip_list_projects`, `paperclip_list_agents`, `paperclip_create_issue`
60
+
61
+ ### What's open
62
+
63
+ > List the open issues in [project name] by priority, with who's on each one.
64
+
65
+ Read only · `paperclip_list_projects`, `paperclip_list_issues`
66
+
67
+ ### Explain an issue
68
+
69
+ > Explain issue [issue number or title]: what it's for, which goal it serves, the plan, and where it's stuck.
70
+
71
+ Read only · `paperclip_get_issue`
72
+
73
+ ### Reassign
74
+
75
+ > Move every todo issue from [agent A] to [agent B] and add a comment on each saying why: [reason].
76
+
77
+ Full control · `paperclip_list_issues`, `paperclip_update_issue`
78
+
79
+ ### Unblock with a comment
80
+
81
+ > On [issue], add a comment for the assignee: [your answer or decision]. Then set it back to in progress.
82
+
83
+ Full control · `paperclip_comment_issue`, `paperclip_update_issue`
84
+
85
+ ### Bump priority
86
+
87
+ > Make [issue] urgent and tell the assignee in a comment that it now comes before everything else.
88
+
89
+ Full control · `paperclip_update_issue`
90
+
91
+ ### Close what's done
92
+
93
+ > Find issues in review that the assignee says are finished, show them to me, and mark the ones I confirm as done.
94
+
95
+ Full control · `paperclip_list_issues`, `paperclip_update_issue`
96
+
97
+ ## Run your agents
98
+
99
+ Check on agents, wake them, pause them and get them out of error.
100
+
101
+ ### Who's doing what
102
+
103
+ > List my agents with their status, role, and what each one is working on.
104
+
105
+ Read only · `paperclip_list_agents`
106
+
107
+ ### Org chart
108
+
109
+ > Show me my org chart: who reports to whom.
110
+
111
+ Read only · `paperclip_org_chart`
112
+
113
+ ### Wake an agent
114
+
115
+ > Wake [agent name] so they start on their queue now.
116
+
117
+ Full control · `paperclip_wake_agent`
118
+
119
+ ### Pause for now
120
+
121
+ > Pause [agent name] until I say otherwise.
122
+
123
+ Full control · `paperclip_pause_agent`
124
+
125
+ ### Resume everyone
126
+
127
+ > Resume every paused agent except [agent name].
128
+
129
+ Full control · `paperclip_list_agents`, `paperclip_resume_agent`
130
+
131
+ ### Fix agents in error
132
+
133
+ > Which agents are in error, and what was the last thing each was doing? Clear the error on the ones I pick and wake them again.
134
+
135
+ Full control · `paperclip_list_agents`, `paperclip_get_agent`, `paperclip_clear_agent_error`, `paperclip_wake_agent`
136
+
137
+ ### One agent, in detail
138
+
139
+ > Tell me everything about [agent name]: status, manager, budget, spend this month and current task.
140
+
141
+ Read only · `paperclip_get_agent`
142
+
143
+ ### Let an agent go
144
+
145
+ > I want to retire [agent name]. Reassign their open issues to [other agent], then terminate them. Ask me before the terminate step.
146
+
147
+ Full control · `paperclip_list_issues`, `paperclip_update_issue`, `paperclip_terminate_agent`
148
+
149
+ Terminating can't be undone. Your AI app asks first; pausing is the reversible option.
150
+
151
+ ## Follow along
152
+
153
+ Start something and let your AI app watch it to the end.
154
+
155
+ ### Wake and wait
156
+
157
+ > Wake [agent name], wait until they finish their run, then tell me what they did.
158
+
159
+ Full control · `paperclip_wake_agent`, `paperclip_wait_for_agent`, `paperclip_report_activity`
160
+
161
+ ### Hand off and watch
162
+
163
+ > Give [agent name] this task: [task]. Wake them, follow the run to the end, and summarise the result and any comments they left.
164
+
165
+ Full control · `paperclip_create_issue`, `paperclip_wake_agent`, `paperclip_wait_for_agent`, `paperclip_get_issue`
166
+
167
+ ### Keep me posted
168
+
169
+ > Check what changed in my Paperclip since you last looked and tell me only what's new.
170
+
171
+ Read only · `paperclip_sync_changes`
172
+
173
+ ## Approvals
174
+
175
+ Hires, plans and budget overrides waiting on you.
176
+
177
+ ### What's waiting
178
+
179
+ > List pending approvals with who asked, what for, and what it would cost.
180
+
181
+ Read only · `paperclip_list_approvals`
182
+
183
+ ### Approve a hire
184
+
185
+ > Approve [agent]'s request to hire a [role].
186
+
187
+ Full control · `paperclip_list_approvals`, `paperclip_decide_approval`
188
+
189
+ ### Ask for changes
190
+
191
+ > Send the [plan or request] back for revision with this note: [what to change].
192
+
193
+ Full control · `paperclip_list_approvals`, `paperclip_decide_approval`
194
+
195
+ ### Review them one by one
196
+
197
+ > Go through each pending approval with me one at a time: summarise it, give me your recommendation, and wait for my decision before moving on.
198
+
199
+ Full control · `paperclip_list_approvals`, `paperclip_decide_approval`
200
+
201
+ ## Goals and projects
202
+
203
+ Keep the plan up to date in plain words.
204
+
205
+ ### Goal tree
206
+
207
+ > Show my goals as a tree, with status, and which ones have no open issues behind them.
208
+
209
+ Read only · `paperclip_list_goals`, `paperclip_list_issues`
210
+
211
+ ### New goal
212
+
213
+ > Create a company goal: "[goal]". Then suggest three team goals under it and create the ones I approve.
214
+
215
+ Full control · `paperclip_list_goals`, `paperclip_create_goal`
216
+
217
+ ### Mark achieved
218
+
219
+ > Mark the goal "[goal]" as achieved.
220
+
221
+ Full control · `paperclip_list_goals`, `paperclip_update_goal`
222
+
223
+ ### Projects overview
224
+
225
+ > List my projects and, for each, how many issues are open, in progress and done.
226
+
227
+ Read only · `paperclip_list_projects`, `paperclip_list_issues`
228
+
229
+ ## Budgets and costs
230
+
231
+ See where the money goes and set limits. Agents pause themselves at 100% of their budget.
232
+
233
+ ### Spend this month
234
+
235
+ > How much have my agents spent this month, against budget, per agent and per project?
236
+
237
+ Read only · `paperclip_report_costs`
238
+
239
+ ### Close to the limit
240
+
241
+ > Which agents are above 80% of their monthly budget?
242
+
243
+ Read only · `paperclip_list_agents`
244
+
245
+ ### Set a budget
246
+
247
+ > Set [agent name]'s monthly budget to $[amount].
248
+
249
+ Full control · `paperclip_set_agent_budget`
250
+
251
+ ### Pause the overspender
252
+
253
+ > Pause any agent that's over budget and tell me what each one was working on.
254
+
255
+ Full control · `paperclip_list_agents`, `paperclip_pause_agent`
256
+
257
+ ### Value for money
258
+
259
+ > Which agents give me the most finished work per dollar, and which the least?
260
+
261
+ Read only · `paperclip_report_agent_performance`
262
+
263
+ ## Reports
264
+
265
+ Ready-made reports you can paste into a doc, email or chat.
266
+
267
+ ### Executive summary
268
+
269
+ > Write a short executive summary of my Paperclip: what got done, what's stuck, spend, and decisions I need to make.
270
+
271
+ Read only · `paperclip_report_status`
272
+
273
+ ### Weekly review
274
+
275
+ > Weekly report: issues closed and blocked per agent, spend against last week, and the three things I should look at.
276
+
277
+ Read only · `paperclip_report_agent_performance`, `paperclip_report_costs`, `paperclip_report_activity`
278
+
279
+ ### Activity log
280
+
281
+ > Give me today's activity as a timeline.
282
+
283
+ Read only · `paperclip_report_activity`
284
+
285
+ ### Team table
286
+
287
+ > Make a table of every agent: role, status, issues done this month, spend, and cost per finished issue.
288
+
289
+ Read only · `paperclip_report_agent_performance`
290
+
291
+ ## Recipes
292
+
293
+ Longer prompts that chain several steps. Copy, adjust the names, send.
294
+
295
+ ### Daily stand-up
296
+
297
+ > Run a stand-up for my Paperclip: for each agent, what they finished since yesterday, what they're on now, and what's blocking them. Then list approvals waiting on me and anything over budget. End with the three decisions I should make today.
298
+
299
+ Read only · `paperclip_sync_snapshot`, `paperclip_report_activity`, `paperclip_list_approvals`, `paperclip_report_costs`
300
+
301
+ ### Kick off a project
302
+
303
+ > I'm starting "[project]". Create a goal for it, break it into 5 to 8 issues, assign each to the best-fit agent as todo, and wake the agents who got work. Show me the plan before you create anything.
304
+
305
+ Full control · `paperclip_list_agents`, `paperclip_create_goal`, `paperclip_create_issue`, `paperclip_wake_agent`
306
+
307
+ ### End-of-week tidy
308
+
309
+ > Tidy up my Paperclip for the week: close issues that are finished, comment on anything stuck for more than 3 days asking the assignee what they need, and give me a cost summary.
310
+
311
+ Full control · `paperclip_list_issues`, `paperclip_update_issue`, `paperclip_comment_issue`, `paperclip_report_costs`
312
+
313
+ ### Cost clamp
314
+
315
+ > Keep this month under $[amount]: show the current spend and forecast, suggest new budgets per agent, and set the ones I approve.
316
+
317
+ Full control · `paperclip_report_costs`, `paperclip_list_agents`, `paperclip_set_agent_budget`
318
+
319
+ ### Incident mode
320
+
321
+ > Something's wrong. Pause every agent except [agent name], list what each paused agent was doing, and tell me what changed in the last hour.
322
+
323
+ Full control · `paperclip_list_agents`, `paperclip_pause_agent`, `paperclip_report_activity`
324
+
325
+ ## Anything else
326
+
327
+ For Paperclip features without a dedicated tool, and for checking the connection.
328
+
329
+ ### Use any Paperclip feature
330
+
331
+ > List the routines in my company. (There's no dedicated tool, so use the Paperclip API.)
332
+
333
+ Full control · `paperclip_api_request`
334
+
335
+ Reading needs Read only. Anything that changes data needs Full control and your confirmation.
336
+
337
+ ### Is Papercliped up?
338
+
339
+ > Is the Papercliped service working right now?
340
+
341
+ Read only · `papercliped_service_status`
342
+
343
+ ### What can you do?
344
+
345
+ > What can you do with my Paperclip at my current access level? Give me five examples.
346
+
347
+ Read only · `paperclip_list_companies`
348
+
349
+ Got a prompt that works well? Share it in [the community]({{URL}}/community) or open a pull request that adds it to `web/src/content/prompts.json`. Every tool is listed in the [tool reference](/docs/tools).
@@ -47,7 +47,7 @@ curl "{{URL}}/api/public/v1/stats?window=24h"
47
47
 
48
48
  **Sign-in failure reasons** (a fixed list): `bad_credentials`, `rate_limited`, `denied`, `expired`, `unreachable`, `invalid_instance`, `too_many_attempts`, `other`.
49
49
 
50
- **Error classes** (a fixed list): `invalid_input`, `insufficient_scope`, `read_only`, `upstream_4xx`, `upstream_5xx`, `upstream_unreachable`, `rate_limited`, `unauthorized`, `internal`, `other`. Anything the service records outside these lists is counted as `other`, never shown as text.
50
+ **Error classes** (a fixed list): `invalid_input`, `insufficient_scope`, `read_only`, `policy_blocked`, `upstream_4xx`, `upstream_5xx`, `upstream_unreachable`, `rate_limited`, `unauthorized`, `internal`, `other`. Anything the service records outside these lists is counted as `other`, never shown as text.
51
51
 
52
52
  ## Series
53
53
  Each bucket has `t` (start time), `requests`, `errors`, `faults`, `p95Ms`, `authCompleted`, `authFailed` and `newUsers`. Every bucket in the window is present, with zeros when nothing happened.
@@ -3,7 +3,7 @@
3
3
  Creating a Papercliped account takes about a minute. You do it the first time you connect Claude (or ChatGPT).
4
4
 
5
5
  ## Before you start
6
- - Your Paperclip must be reachable at a public `https://` address, for example `https://workforce.example.com`. Need one? Follow [Set up your Paperclip](/docs/connect-your-paperclip), with or without your own domain.
6
+ - Your Paperclip must be reachable at a public `https://` address, for example `https://workforce.example.com`. Need one? Follow [Host your Paperclip](/docs/hosting): at home with a tunnel, on a VPS, or on Railway, Render, Fly.io or Coolify.
7
7
  - You must be able to sign in to that Paperclip, because you approve the connection there.
8
8
 
9
9
  ## Steps