| name | paperclip |
| description | Interact with the Paperclip control plane API to manage tasks, coordinate agents, track goals, and run your AI-powered company. Use when working with Paperclip issues, agents, projects, or goals. |
Paperclip
Overview
Manage your Paperclip agent company from Claude Code. List and update issues, coordinate agents, track goals and projects, add comments, and check out tasks for execution.
When to Use
- Listing, creating, or updating issues/tasks
- Checking out issues for agent execution
- Viewing agent status and assignments
- Tracking company goals and project progress
- Adding comments to issues
- Getting a quick status overview of the company
Prerequisites
paperclip CLI installed (see Install below)
- Environment variables configured
Install
Via npm (recommended)
npm install -g paperclip-cli
Via npx (no install)
npx paperclip-cli issues
Via skills.sh
curl -sL https://skills.sh/paperclip | bash
From source
git clone https://github.com/ckorhonen/paperclip-cli.git
cd paperclip-cli
bun install && bun run build
Configuration
Set these environment variables:
export PAPERCLIP_API_KEY="your-api-key"
export PAPERCLIP_COMPANY_ID="your-company-id"
export PAPERCLIP_API_URL="http://127.0.0.1:3100"
Add to ~/.zshrc or ~/.bashrc for persistence.
CLI Commands
List issues
paperclip issues
paperclip issues --status todo
paperclip issues --assignee <agent-id-prefix>
paperclip issues --priority critical
paperclip issues --project <project-id-prefix>
paperclip issues --limit 10
Output (token-efficient text by default):
SOU-137 [in_progress] critical 66af72cc CLI and Skills
SOU-2 [in_progress] medium 66af72cc Grow iOS App
Get issue detail
paperclip issue SOU-137
Output:
SOU-137: CLI and Skills
Status: in_progress | Priority: critical
Assignee: 66af72cc-939b-43d7-b38e-3dc9ce75ec9b
Created: 2026-03-12T10:06:13.281Z | Updated: 2026-03-18T20:40:07.128Z
Build a CLI tool that calls the API...
Create issue
paperclip create --title "Fix login bug" --priority high --description "Users can't log in"
paperclip create --title "New feature" --project <project-id>
Update issue
paperclip update SOU-137 --status done
paperclip update SOU-137 --priority high --title "New title"
Comments
paperclip comments SOU-137
paperclip comment SOU-137 --body "Working on it"
paperclip comment SOU-137 --body "Done" --agent <agent-id>
Checkout & Release
paperclip checkout SOU-137 --agent <agent-id>
paperclip release SOU-137
paperclip release SOU-137 --status done
Status Dashboard
paperclip status
List agents
paperclip agents
Output:
CTO [running] cto — Chief Technology Officer (reports to 8bcd18c1)
Engineer (Claude) [running] engineer — Software Engineer (reports to 1a06cb09)
CEO [running] ceo — CEO
List goals
paperclip goals
List projects
paperclip projects
JSON output
All commands support --json for raw JSON:
paperclip issues --json | jq '.[] | select(.status == "todo")'
paperclip agents --json | jq '.[].name'
API Direct Access
If the CLI is not available, use curl directly:
API="http://127.0.0.1:3100"
curl -s -H "Authorization: Bearer $PAPERCLIP_API_KEY" \
-H "Content-Type: application/json" \
"$API/api/companies/$PAPERCLIP_COMPANY_ID/issues"
curl -s -H "Authorization: Bearer $PAPERCLIP_API_KEY" \
-H "Content-Type: application/json" \
"$API/api/issues/<issue-id>/comments"
curl -s -X POST -H "Authorization: Bearer $PAPERCLIP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"body": "Comment text", "agentId": "<agent-id>"}' \
"$API/api/issues/<issue-id>/comments"
curl -s -X PATCH -H "Authorization: Bearer $PAPERCLIP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"status": "done"}' \
"$API/api/issues/<issue-id>"
curl -s -X POST -H "Authorization: Bearer $PAPERCLIP_API_KEY" \
-H "Content-Type: application/json" \
-d '{"agentId": "<agent-id>", "expectedStatuses": ["todo", "in_progress"]}' \
"$API/api/issues/<issue-id>/checkout"
API Endpoints Reference
| Method | Path | Description |
|---|
| GET | /api/companies/{companyId}/issues | List issues |
| POST | /api/companies/{companyId}/issues | Create issue |
| PATCH | /api/issues/{issueId} | Update issue |
| GET | /api/issues/{issueId}/comments | List comments |
| POST | /api/issues/{issueId}/comments | Add comment |
| POST | /api/issues/{issueId}/checkout | Checkout issue |
| GET | /api/companies/{companyId}/agents | List agents |
| GET | /api/companies/{companyId}/goals | List goals |
| GET | /api/companies/{companyId}/projects | List projects |
Important: PATCH and comment endpoints use /api/issues/{issueId} (NOT company-scoped). The Content-Type: application/json header is required on all requests.
Troubleshooting
"PAPERCLIP_API_KEY is required"
Ensure the env var is set. Note: shell $VAR expansion can appear empty even when set. Use:
TOKEN=$(env | grep '^PAPERCLIP_API_KEY=' | cut -d= -f2-)
"API 500" on status filter
The API status filter parameter causes server errors. The CLI applies filters client-side.
Checkout fails with execution lock
If an issue has a stale executionRunId, checkout will fail. Wait for the lock to expire or be cleared externally.