Point your AI agent at freehire and let it find you a job.

Get the CLI →

// freehire on the command line

Search and track
from the terminal.

freehire is a small CLI — and an MCP server — over the same job API the site runs on. One API key lets an AI agent or a script search and open jobs, track applications, work through your application mail and tailor a CV to a vacancy — all without a browser. (You still apply on the employer's site; the CLI records that you did.)

Not on the terminal? Every way to connect an agent — MCP hosts, ChatGPT, and your own client.

terminal
# install — no Go needed
curl -fsSL https://freehire.me/install.sh | sh

# authenticate once (key from /my/api-keys)
freehire auth login --token fhk_…

# discover the market, then search
freehire facets
freehire search "golang" --remote --region eu

// commands

Discover

freehire facets
Every filter's live values + counts — the vocabulary to filter by.
freehire market-fit --skills go,react
How much of the live market your skills cover, and the gaps.
freehire search <query>
List matching jobs (add --remote, --region, --company).
freehire job <slug>
Show a job's full content.
freehire company <slug>
Show a company and its open jobs.

Track applications & notes

freehire apply <slug>
Mark a job applied for your account.
freehire save <slug>
Bookmark a job (unsave to remove).
freehire stage <slug> <stage>
Set the application stage.
freehire note <slug> <text>
Attach a free-text note.
freehire my --filter applied
Your tracked jobs (all|viewed|saved|applied).
freehire profile
Your saved search profile — skills, seniority, regions.

Application mail

freehire inbox push --file mail.json
Upload a batch your own client fetched (keyed by Message-ID, so a re-sync updates instead of duplicating).
freehire inbox list --unclassified --body
The agent's work queue: unjudged mail with bodies inline, and nothing gets marked read.
freehire inbox triage <id> <signal>
Record what a message is; a confident verdict moves the application forward.
freehire inbox list --link suggested
Proposed links awaiting your word — inbox confirm / inbox reject.
freehire inbox list --link unlinked
Mail with no application to attach to — inbox application records one from the message.

Contribute & moderate

freehire contribute <url>
Hand freehire a job link; a board we don't track yet gets added and crawled.
freehire contributions
The boards you've contributed and their state.
freehire submissions
Jobs you submitted; the review queue with pending/approve/reject (moderator).
freehire jobs add | edit <slug>
Create or edit a job posting (moderator).

Start from freehire facets — it lists every filter's live values so search and market-fit use real values, not guesses. Everything you save, apply to and stage shows up on your Tracking board. stage takes a controlled value: preparing → applied → screening → responded → interview → offer → accepted, plus rejected / withdrawn.

Tailor a CV to a vacancy

After a match analysis, reframe your CV toward one job — grounded in what you actually did, never fabricated — then export an ATS-ready PDF. cv context is the honest part: it splits the job's requirements into the ones your history already covers but buries (reframe those) and the ones it doesn't (ask, don't invent), so an agent editing your CV knows which is which.

freehire cv context <id>        # the match analysis to reframe toward
freehire cv get <id>            # the CV document as JSON
freehire cv edit <id> --set …   # one edit by path (--ops for a batch)
freehire cv render <id> --out cv.pdf

// mcp

Same key, any AI host

freehire-mcp exposes the same search, market-fit and tracking tools over the Model Context Protocol — so Claude Desktop, Claude Code or any MCP host can drive freehire directly. It runs via npx; no global install.

It shares the CLI's credentials: if you've run freehire auth login, omit env and it reads ~/.freehire/creds.json.

~/.claude.json
{
  "mcpServers": {
    "freehire": {
      "command": "npx",
      "args": ["-y", "freehire-mcp"],
      "env": { "FREEHIRE_TOKEN": "fhk_…" }
    }
  }
}

// for ai agents

Five skills, one per job

Each agent skill is named for the task, not the tool, so a host loads what the question needs instead of the whole surface. Drop them into a Claude Code (or compatible) skills directory — or install the plugin and get the slash commands too.

/plugin marketplace add strelov1/freehire-cli
/plugin install freehire@freehire-cli

Every command takes --json for the raw API payload — results to stdout, errors to stderr, non-zero exit on failure. The same endpoints are in the API reference.

/job-search freehire-job-search
Read the saved profile, ground every filter in facets, search, and shortlist.
/track-applications freehire-track-applications
Where each application stands, stage moves, and reporting one that never answered.
/market-fit freehire-market-fit
Score a stack against live vacancy demand and put a number on every gap.
/tailor-cv freehire-tailor-cv
Reframe a CV toward one vacancy — every claim cited, nothing invented.
/triage-inbox freehire-mail-triage
Push a mail batch, judge each message, and drain the two link queues.

// moderators

With the moderator role you can author postings:

freehire jobs add --url <url> --title "Senior Go Developer" --company Acme
freehire jobs edit <slug> --title "Staff Go Developer"

Free and open source — no tracking, no lock-in. Read every line of the CLI ↗ and the MCP server ↗ on GitHub.

Tailor your CV for this role?

We couldn't check your fit for this role — add a CV to your profile to see it next time.

A new version of freehire is available