Skill Tracer
Skills › Scientific Agent Skills › paperclip › installation.md

installation.md

161 lines · skills/paperclip/references/installation.md at 5f2bc03

Open on GitHub

Most marks come from matching words in the file, so treat them as pointers.

1# Installing and authenticating GXL Paperclip
2
3Reviewed on 2026-09-30 against CLI/SDK 0.7.92, the
4[official installer](https://paperclip.gxl.ai/install.sh),
5[installation page](https://paperclip.gxl.ai/install), and local CLI source/help.
6Installer and account mutations were not executed. Commands below are illustrative unless noted.
7

Installing and authenticating GXL Paperclip

Reviewed on 2026-09-30 against CLI/SDK 0.7.92, the official installer, installation page, and local CLI source/help. Installer and account mutations were not executed. Commands below are illustrative unless noted.

Raw lines 1 to 7
8## Native install
9
10The documented macOS/Linux installer is:
12```bash
13curl -fsSL https://paperclip.gxl.ai/install.sh | bash
14```
16It requires **an existing Python 3.8+ interpreter**, Bash, and curl or wget. It downloads the wheel,
17extracts it to `~/.paperclip/lib/`, supplies missing `requests`, `click`, and `pyyaml` dependencies,
18and writes `~/.local/bin/paperclip`. The launcher uses `#!/usr/bin/env python3`; it does not bundle
19an interpreter. The installer may edit the shell profile and opens interactive login/agent-selection
20prompts. Read the script before an authorized installation; do not run it as a read-only probe.
22```bash
23curl -fsSL https://paperclip.gxl.ai/install.sh -o /tmp/paperclip-install.sh
24less /tmp/paperclip-install.sh
25```
27The official `https://paperclip.gxl.ai/version.json` currently reports version `0.7.92` and a SHA-256
28for the distributed wheel. This corrects the old claim that no checksum is published. The inspected
29installer/updater does not enforce that checksum itself. For a reproducible environment, retain the
30wheel, its observed version, and the published checksum; detect if the unversioned URL changes
31between metadata retrieval and download.
33For an environment managed by uv:
35```bash
36uv venv .venv
37uv pip install --python .venv/bin/python https://paperclip.gxl.ai/paperclip.whl
38.venv/bin/paperclip --version
39```
41The endpoint is unversioned. Do not install the unrelated PyPI package named `paperclip`.
42Installation into a controlled environment exposes both the CLI and `gxl_paperclip` Python module.
43The managed install's private library directory is not automatically on another interpreter's path.
45If the launcher cannot be found:
47```bash
48export PATH="$HOME/.local/bin:$PATH"
49```
51Windows users can connect to hosted MCP without running the macOS/Linux installer.
52Use the current vendor installation page for any client-specific setup.

Native install

The documented macOS/Linux installer is:

curl -fsSL https://paperclip.gxl.ai/install.sh | bash

It requires an existing Python 3.8+ interpreter, Bash, and curl or wget. It downloads the wheel, extracts it to ~/.paperclip/lib/, supplies missing requests, click, and pyyaml dependencies, and writes ~/.local/bin/paperclip. The launcher uses #!/usr/bin/env python3; it does not bundle an interpreter. The installer may edit the shell profile and opens interactive login/agent-selection prompts. Read the script before an authorized installation; do not run it as a read-only probe.

curl -fsSL https://paperclip.gxl.ai/install.sh -o /tmp/paperclip-install.sh
less /tmp/paperclip-install.sh

The official https://paperclip.gxl.ai/version.json currently reports version 0.7.92 and a SHA-256 for the distributed wheel. This corrects the old claim that no checksum is published. The inspected installer/updater does not enforce that checksum itself. For a reproducible environment, retain the wheel, its observed version, and the published checksum; detect if the unversioned URL changes between metadata retrieval and download.

For an environment managed by uv:

uv venv .venv
uv pip install --python .venv/bin/python https://paperclip.gxl.ai/paperclip.whl
.venv/bin/paperclip --version

The endpoint is unversioned. Do not install the unrelated PyPI package named paperclip. Installation into a controlled environment exposes both the CLI and gxl_paperclip Python module. The managed install's private library directory is not automatically on another interpreter's path.

If the launcher cannot be found:

export PATH="$HOME/.local/bin:$PATH"

Windows users can connect to hosted MCP without running the macOS/Linux installer. Use the current vendor installation page for any client-specific setup.

Raw lines 8 to 53
Runs code bin/paperclip :18
Runs code bin/env :18
Runs code bin/python :37
Uses an outside tool MCP :51
54## Credentials and precedence
56For ordinary user authentication, inspected 0.7.92 code resolves:
58| Surface | Precedence |
59|---|---|
60| CLI data commands | `PAPERCLIP_BEARER_TOKEN`, then explicit `--api-key`/`PAPERCLIP_API_KEY`, then stored OAuth |
61| SDK `from_env()` | `PAPERCLIP_BEARER_TOKEN`, then `PAPERCLIP_API_KEY`, then stored OAuth |
63Trusted internal execution has an additional internal-auth branch; it is not a user setup mechanism.
64Do not mix identities inadvertently. `--api-key` overrides the key environment binding, but a bearer
65token still takes precedence in the data-command client. Avoid secrets in command-line arguments.
67Create keys privately at `https://paperclip.gxl.ai/keys`. API-key requests use `X-API-Key`; bearer
68requests use `Authorization: Bearer ...`. Do not print, commit, or upload either credential.
70Paperclip does not load `.env` automatically. If the user has a trusted, shell-compatible `.env`,
71load it and execute the command in the same shell:
73```bash
74if [ -f .env ]; then
75 set -a
76 . ./.env
77 set +a
78fi
79paperclip config 2>&1 | grep -E 'Auth:|Health:'
80```
82The guard avoids the fatal missing-file behavior of POSIX `.`. Sourcing executes shell code, so
83never source a downloaded or untrusted file. Exports persist within that shell and its children;
84fresh tool-shell invocations need their own environment. A secret manager or pre-exported key needs
85no dotenv prefix. The normal `.env` file belongs in `.gitignore`.
87`paperclip login` opens a browser and writes OAuth credentials under `~/.paperclip/credentials.json`.
88Use it when the user is present to complete sign-in. `logout` deletes stored credentials; it is an
89account action, not an authentication check. Noninteractive missing-auth calls fail instead of
90completing browser login.

Credentials and precedence

For ordinary user authentication, inspected 0.7.92 code resolves:

SurfacePrecedence
CLI data commandsPAPERCLIP_BEARER_TOKEN, then explicit --api-key/PAPERCLIP_API_KEY, then stored OAuth
SDK from_env()PAPERCLIP_BEARER_TOKEN, then PAPERCLIP_API_KEY, then stored OAuth

Trusted internal execution has an additional internal-auth branch; it is not a user setup mechanism. Do not mix identities inadvertently. --api-key overrides the key environment binding, but a bearer token still takes precedence in the data-command client. Avoid secrets in command-line arguments.

Create keys privately at https://paperclip.gxl.ai/keys. API-key requests use X-API-Key; bearer requests use Authorization: Bearer .... Do not print, commit, or upload either credential.

Paperclip does not load .env automatically. If the user has a trusted, shell-compatible .env, load it and execute the command in the same shell:

if [ -f .env ]; then
  set -a
  . ./.env
  set +a
fi
paperclip config 2>&1 | grep -E 'Auth:|Health:'

The guard avoids the fatal missing-file behavior of POSIX .. Sourcing executes shell code, so never source a downloaded or untrusted file. Exports persist within that shell and its children; fresh tool-shell invocations need their own environment. A secret manager or pre-exported key needs no dotenv prefix. The normal .env file belongs in .gitignore.

paperclip login opens a browser and writes OAuth credentials under ~/.paperclip/credentials.json. Use it when the user is present to complete sign-in. logout deletes stored credentials; it is an account action, not an authentication check. Noninteractive missing-auth calls fail instead of completing browser login.

Raw lines 54 to 91
92## Diagnostics are not authentication validation
94```bash
95paperclip --version
96paperclip config 2>&1 | grep -E 'Auth:|Health:'
97```
99`Auth` describes a configured credential, not its validity. CLI `config` uses an unauthenticated
100`GET /health` for the reachability line. An invalid key may still look configured. The next
101**task-authorized** request validates usable access; do not spend search or LLM quota just to test a
102key. SDK `health()` is different: it dispatches the authenticated `status` command and returns a
103`HealthStatus`; inspect `healthy`, `output`, and errors rather than reachability alone.
105Do not print complete config files: they can contain account or credential information.

Diagnostics are not authentication validation

paperclip --version
paperclip config 2>&1 | grep -E 'Auth:|Health:'

Auth describes a configured credential, not its validity. CLI config uses an unauthenticated GET /health for the reachability line. An invalid key may still look configured. The next task-authorized request validates usable access; do not spend search or LLM quota just to test a key. SDK health() is different: it dispatches the authenticated status command and returns a HealthStatus; inspect healthy, output, and errors rather than reachability alone.

Do not print complete config files: they can contain account or credential information.

Raw lines 92 to 106
Starts an agent dispatches :102
107## Optional agent skill installation
109`paperclip install` writes the vendor's agent entrypoint into a project. The installed file now
110points the agent to `paperclip skill` for full instructions rather than embedding a frozen manual.
111The inspected non-TTY selection order is 1 = Claude Code, 2 = Cursor, 3 = Codex:
113```bash
114# Only when this installation is requested; stdin answers the two prompts.
115printf '3\n\n' | paperclip install --dir /path/to/project
116```
118The second blank answer accepts the provided directory. Multiple choices use commas at the active
119prompt, not a later shell command. Paths are `.claude/skills/paperclip/`,
120`.cursor/skills/paperclip/`, and `.agents/skills/paperclip/`. Native help does not currently expose
121an `--agent` or `--yes` option. Installation behavior was inspected, not run in this review.

Optional agent skill installation

paperclip install writes the vendor's agent entrypoint into a project. The installed file now points the agent to paperclip skill for full instructions rather than embedding a frozen manual. The inspected non-TTY selection order is 1 = Claude Code, 2 = Cursor, 3 = Codex:

# Only when this installation is requested; stdin answers the two prompts.
printf '3\n\n' | paperclip install --dir /path/to/project

The second blank answer accepts the provided directory. Multiple choices use commas at the active prompt, not a later shell command. Paths are .claude/skills/paperclip/, .cursor/skills/paperclip/, and .agents/skills/paperclip/. Native help does not currently expose an --agent or --yes option. Installation behavior was inspected, not run in this review.

Raw lines 107 to 122
123## Hosted MCP
125The documented Streamable HTTP endpoint is:
127```text
128https://paperclip.gxl.ai/mcp
129```
131Use the client's supported OAuth flow or `X-API-Key` header. Configure secrets through the client;
132do not embed a real key in a shared config example. See the vendor's
133[per-client setup](https://paperclip.gxl.ai/install) for the current interface.
135Release 0.7.90 changed the connector to expose one tool per CLI command. Do not assume the old
136single `paperclip` tool catalogue. Discover the connected tools and load current instructions.
137The SDK still uses a legacy command-dispatch MCP call internally, which is a distinct client
138compatibility path. Native-only installation/account/local-file commands are unavailable over MCP;
139connector uploads use the connector's upload flow, not a path on the user's local filesystem.
140No authenticated MCP session was exercised during this review.

Hosted MCP

The documented Streamable HTTP endpoint is:

https://paperclip.gxl.ai/mcp

Use the client's supported OAuth flow or X-API-Key header. Configure secrets through the client; do not embed a real key in a shared config example. See the vendor's per-client setup for the current interface.

Release 0.7.90 changed the connector to expose one tool per CLI command. Do not assume the old single paperclip tool catalogue. Discover the connected tools and load current instructions. The SDK still uses a legacy command-dispatch MCP call internally, which is a distinct client compatibility path. Native-only installation/account/local-file commands are unavailable over MCP; connector uploads use the connector's upload flow, not a path on the user's local filesystem. No authenticated MCP session was exercised during this review.

Raw lines 123 to 141
Uses an outside tool MCP :123
Starts an agent dispatch :137
142## Configuration and maintenance
144```bash
145paperclip config --sources-list
146paperclip config --help
147paperclip update --help
148paperclip uninstall --help
149```
151In 0.7.92, `config --sources`, `--sources-list`, and `--sources-clear` all display defaults;
152the callbacks no longer save or clear a persistent source filter. Pass `-s` on each query. The
153old troubleshooting instruction to clear a stale source filter is therefore inapplicable.
154`config --url URL` still changes the stored server. `PAPERCLIP_BASE_URL` overrides that setting.
155Only send credentials to the server selected for the task.
157When requested, `paperclip update` upgrades the managed install and refreshes installed agent
158skills; `paperclip uninstall` removes the install and prompts for confirmation (`--keep-credentials`
159retains credentials). Neither is a verification command. Managed data commands may also check for
160updates and refresh skills automatically. Updating once is **not version pinning**. Record the
161observed version for reproducibility, or use a controlled environment and retained wheel.

Configuration and maintenance

paperclip config --sources-list
paperclip config --help
paperclip update --help
paperclip uninstall --help

In 0.7.92, config --sources, --sources-list, and --sources-clear all display defaults; the callbacks no longer save or clear a persistent source filter. Pass -s on each query. The old troubleshooting instruction to clear a stale source filter is therefore inapplicable. config --url URL still changes the stored server. PAPERCLIP_BASE_URL overrides that setting. Only send credentials to the server selected for the task.

When requested, paperclip update upgrades the managed install and refreshes installed agent skills; paperclip uninstall removes the install and prompts for confirmation (--keep-credentials retains credentials). Neither is a verification command. Managed data commands may also check for updates and refresh skills automatically. Updating once is not version pinning. Record the observed version for reproducibility, or use a controlled environment and retained wheel.

Raw lines 142 to 161