Scope supports two complementary agent skill modes. Cloud manages projects and triggers sourcing via the Scope API. Local drives a real browser on the user's machine for free LinkedIn scraping. Choose the right tool for the job — or use both.
Best for: Managing projects, reading AI scores, and triggering background sourcing from cloud agents (Claude Code, Cursor, Windsurf, etc.). No local app required — all operations run on Scope's infrastructure using your credit balance.
---
name: scope-sourcing-cli
description: >
Agentic command-line interface for the Scope Candidate Sourcing Platform.
Allows AI agents to authenticate, browse organizations and projects,
list scored candidates, and trigger AI-powered sourcing batches.
---
# Scope CLI Skill
This CLI allows AI agents to interact with the **Scope Sourcing Platform**
to find, score, and manage candidates programmatically.
## Prerequisites
1. A valid Scope account (email + password).
2. Python 3.10+ with `scope` installed (`pip install -e .` from `scope-cli/`).
## Core Rules for Agents
1. **ALWAYS** pass the `--json` flag when executing commands to ensure you
receive parseable data.
2. You **must** run `scope auth login` before running any other commands.
3. You **must** set an active organization using `scope org use <id>` before
running project or candidate commands.
4. If any command returns `{"error": "UNAUTHORIZED"}`, re-run
`scope auth login --email <email> --password <password> --json` to refresh
your session.
## Authentication Flow
```bash
# Step 1: Log in (agents should always provide --password)
scope auth login --email agent@company.com --password s3cret --json
# Step 2: List your organizations
scope org list --json
# Step 3: Set the active organization
scope org use <organization_id> --json
```
After these three steps, all subsequent commands will use the stored token
and organization context automatically.
## Commands Reference
### `scope auth login`
Authenticate and store a JWT locally.
```bash
scope auth login --email <email> --password <password> --json
```
### `scope org list`
List all organizations the user belongs to.
```bash
scope org list --json
```
### `scope org use <org_id>`
Set the active organization for all subsequent commands.
```bash
scope org use 550e8400-e29b-41d4-a716-446655440000 --json
```
### `scope org balance`
Check credit balance for the active organization.
```bash
scope org balance --json
```
### `scope project list`
List sourcing projects in the active organization.
```bash
scope project list --json
```
### `scope project source <project_id>`
Trigger an AI sourcing batch for a specific project.
```bash
scope project source 550e8400-e29b-41d4-a716-446655440000 --json
```
### `scope candidate list`
List candidates in a sourcing project. Optionally filter by minimum score.
```bash
scope candidate list --project <project_id> --json
scope candidate list --project <project_id> --min-score 8.0 --json
```
## Budget & Fallback Strategy
**Before triggering `scope project source`, always check the balance first.**
```bash
scope org balance --json
```
If `total_balance` is **0**, do NOT call `scope project source`. Instead:
1. Inform the user that credits are depleted.
2. Suggest topping up at https://app.usescope.co/settings?tab=billing
3. **Fallback:** Use the OpenProfile (Local) skill for free sourcing.
## Error Contract
All errors return: `{"error": "ERROR_CODE", "message": "Human-readable explanation"}`
Common codes: NOT_AUTHENTICATED, UNAUTHORIZED, FORBIDDEN, ORG_NOT_SET,
API_ERROR, INSUFFICIENT_CREDITS, CONNECTION_ERROR
## Installation
```bash
cd scope-cli && pip install -e .
```
Best for: Real-time browser scraping and manual data extraction. Requires the OpenProfile Exporter desktop app to be running on your local machine. Completely free — no credits consumed. Cloud agents cannot use this mode (they have no access to localhost).
---
name: cli-anything-openprofile
description: >
AI Agent Remote Control for the OpenProfile Exporter desktop app.
Provides Local Browser Eyes for LinkedIn -- scrape profiles and search
results through a managed Puppeteer instance running on the user's machine.
---
# OpenProfile Agent Harness
## What This Tool Does
This CLI gives you **Local Browser Eyes** for LinkedIn. It sends commands to
the **OpenProfile Exporter** Electron app running on the user's computer at
`http://localhost:9223`. The desktop app manages a real Chromium browser with
the user's LinkedIn session, safe-mode delays, and human-like timing.
## Prerequisites
- The **OpenProfile Exporter** desktop app must be running.
- The user must be **logged into LinkedIn** inside the app's managed browser.
- Run `openprofile health --json` first to confirm connectivity.
## Commands
### `openprofile health`
Check if the desktop app is alive and configured.
```bash
openprofile health --json
```
### `openprofile status`
Get the current automation state: is a batch running, how many profiles
have been processed, how many remain.
```bash
openprofile status --json
```
### `openprofile enrich`
Scrape one or more LinkedIn profile URLs.
**Required flags:** `--project <UUID>` and `--org <UUID>`.
```bash
openprofile enrich \
"https://linkedin.com/in/alice" \
"https://linkedin.com/in/bob" \
--project 550e8400-... \
--org fa1903d3-... \
--json
```
### `openprofile search`
Start a batch scrape from a LinkedIn **search results URL**.
**Required flags:** `--count <N>`, `--project <UUID>`, `--org <UUID>`.
```bash
openprofile search \
"https://linkedin.com/search/results/people/?keywords=senior+engineer" \
--count 25 \
--project 550e8400-... \
--org fa1903d3-... \
--json
```
### `openprofile stop`
Emergency stop -- immediately halts all running automation.
```bash
openprofile stop --json
```
## Critical Rules for Agents
1. **Always use `--json`** for machine-readable output.
2. **10-Second Cooldown.** Mandatory gap between enrich/search calls.
If called too soon: `{"error": "RATE_LIMIT", "remaining_seconds": 7.3}`
3. **LinkedIn Rate Limits.** Keep enrich batches ≤25 URLs, search ≤50 count.
4. **Safe Mode** is enforced by the desktop app and cannot be overridden.
5. **Desktop App Must Be Running.** If closed, commands return:
`{"error": "DESKTOP_APP_NOT_RUNNING"}`
## JSON Output Contract
All successful responses include `"success": true`.
All error responses include `"error"` and `"message"` fields.
## Installation
```bash
cd OpenProfile/openprofile-app/agent-harness && pip install -e .
```