Skip to main content

CLI Tool

Nico provides a zero-dependency Python 3 command-line tool that any AI agent can use to interact with your job applications.

Prerequisites

  • Python 3 (no additional packages needed)
  • A Nico API key

Setup

1. Get the CLI

The CLI is included in the Nico skills package:
git clone https://github.com/nico-jobagent/nico-skills.git
The CLI script is at nico-skills/skills/nico-jobagent/scripts/nico_client.py.

2. Configure environment variables

export NICO_API_KEY="your-api-key-here"
export NICO_API_URL="https://app.nico-jobagent.com"  # optional, defaults to app.nico-jobagent.com
VariableRequiredDefaultDescription
NICO_API_KEYYesYour API key for authentication
NICO_API_URLNohttps://app.nico-jobagent.comNico API base URL

Commands

parse-url

Parse a job posting URL to extract structured data.
python3 nico_client.py parse-url --url "https://company.com/jobs/123"
FlagRequiredDescription
--urlYesJob posting URL to parse
Output: JSON with parsed job details (title, company, location, work mode, salary).
Search for existing job applications.
# Search by URL (exact match)
python3 nico_client.py search --url "https://company.com/jobs/123"

# Search by company name (case-insensitive)
python3 nico_client.py search --company-name "Acme Inc"

# Search with status filter
python3 nico_client.py search --company-name "Acme Inc" --status active
FlagRequiredDescription
--urlNo*Search by exact job posting URL
--company-nameNo*Search by company name
--statusNoFilter by status: draft, applied, interviewing, offer, finished, active
*At least one of --url or --company-name is required. Output: JSON with matching applications and count.

create

Create a new proposed job application.
python3 nico_client.py create \
  --title "Software Engineer" \
  --company "Acme Inc" \
  --url "https://company.com/jobs/123" \
  --location "Berlin, Germany" \
  --work-mode remote \
  --employment-type full-time
FlagRequiredDescription
--titleYesJob title
--companyYesCompany name
--urlNoJob posting URL
--locationNoJob location
--work-modeNoOne of: remote, remote-optional, hybrid, on-site
--employment-typeNoOne of: full-time, part-time, contract, internship, temporary
Output: JSON with created application details. Status is always proposed.
Created jobs require your approval before they move forward. You’ll see them on your kanban board in the Draft column.

list

List your job applications.
# List all active applications
python3 nico_client.py list --status active

# List with custom page size
python3 nico_client.py list --status draft --per-page 50
FlagRequiredDescription
--statusNoFilter by status group
--per-pageNoItems per page (default: 25)
Output: JSON with job applications list.

Authentication

The CLI sends your API key as a Bearer token in the Authorization header:
Authorization: Bearer your-api-key-here
Content-Type: application/json
User-Agent: NicoJobAgentClient/1.0

Typical AI agent workflow

An AI agent using the CLI typically follows this pattern:
  1. Search for a job URL to check if it already exists
  2. Parse the job URL to extract details
  3. Create a proposed application with the parsed data
  4. Repeat for additional job postings
# 1. Check if job already exists
python3 nico_client.py search --url "https://company.com/jobs/123"

# 2. If not found, parse the job posting
python3 nico_client.py parse-url --url "https://company.com/jobs/123"

# 3. Create proposed application with parsed details
python3 nico_client.py create \
  --title "Software Engineer" \
  --company "Acme Inc" \
  --url "https://company.com/jobs/123" \
  --location "Berlin, Germany" \
  --work-mode remote \
  --employment-type full-time