Search over 250,000 jobs and manage applications through AI agents using specialized MCP tools and automated form-filling skills.
Also known as trackly-app/trackly-cli, trackly-cli
- Stars
- 3
- Tools
- —
- Downloads, 30 days
- —
- Latest version
- 0.27.0
- Last commit
- Nov 11, 2026
- License
- MIT
What is Trackly CLI MCP?
Trackly CLI searches over 250,000 jobs and manage applications through AI agents using specialized MCP tools and automated form-filling skills.
Summary generated from the project's README
About Trackly CLI MCP server
Trackly CLI provides a specialized interface for managing job searches and applications through AI agents. It allows users to search a database of over 250,000 jobs across 5,400 companies and 40 different applicant tracking systems. Developers and job seekers can use this via a local CLI installation for tools like Cursor and Windsurf, or through a hosted remote connection for Claude Desktop and ChatGPT.
The system offers three distinct application methods. Trackly Apply (local) enables an AI agent to fill out forms in your browser, stopping before the final submission for your review. Trackly Apply (cloud) automates the process entirely for specific US Greenhouse, Lever, and Ashby postings using your saved profile. Finally, the mark-applied command lets you manually record applications you have already completed. The server provides 62 hosted tools for remote clients and 65 local tools for those using the CLI setup.
What you can do with it
- 1Automated job application submissionRequest the cloud service to apply to a job on your behalf using your saved resume and profile answers.
- 2Agent-assisted browser form fillingUse a local AI agent to navigate and fill out job application forms in your own browser until the final submission step.
- 3Semantic job and company discoveryPerform natural language searches to find specific roles or companies within the job database.
- 4Managing application tracking statusMonitor the progress of automated cloud application requests through the command line.
Written from the project's README. Every use case is checked against a quote from it.
How to install Trackly CLI MCP
Formats verified 10 Nov 2026Install Trackly CLI MCP in Claude Code
$ claude mcp add trackly-cli -- npx -y trackly-cliInstall Trackly CLI MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"trackly-cli": {
"command": "npx",
"args": [
"-y",
"trackly-cli"
]
}
}
}Install Trackly CLI MCP in VS Code
.vscode/mcp.json
{
"servers": {
"trackly-cli": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"trackly-cli"
]
}
}
}Install Trackly CLI MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"trackly-cli": {
"command": "npx",
"args": [
"-y",
"trackly-cli"
]
}
}
}Install Trackly CLI MCP in Codex
~/.codex/config.toml
[mcp_servers.trackly-cli] command = "npx" args = ["-y", "trackly-cli"]
Install Trackly CLI MCP in Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"trackly-cli": {
"command": "npx",
"args": [
"-y",
"trackly-cli"
]
}
}
}Configuration
TRACKLY_API_KEY
| Name | Description | |
|---|---|---|
| TRACKLY_API_KEY | — |
Automated checks
Ran Nov 12, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablePass
- Open source license (OSI)Pass
- Commit or release in the last yearPass
- Package name not close to a popular packagePass
- Remote endpoint uses HTTPSPass
- Destructive tools are labelledNot checked
- No hidden instructions to the modelPass
- No critical advisory in the package or its dependenciesPass
README
View on GitHubtrackly-cli
The only job tracking CLI built for AI agents.
Search 250K+ jobs across 5,400+ companies and 40+ ATS types. Track applications, get AI-powered recommendations, and manage your job search -- from the terminal or through Claude, ChatGPT, Cursor, and other MCP-compatible AI agents.
Two ways to connect
🚀 Option 1: One-click in Claude co-work, Claude Desktop, ChatGPT (no install)
Use Trackly directly inside your AI — zero config:
- Open Settings → Connectors → Add custom connector
- URL:
https://mcp.usetrackly.app/api/mcp - Click Add → sign in with Google → done
Full setup guide with screenshots →
Works in: Claude co-work (web), Claude Desktop, ChatGPT Connectors, and any MCP client that supports remote/streamable-http connectors.
💻 Option 2: CLI install (for Cursor, Windsurf, or terminal use)
npm install -g trackly-cli # may need: sudo npm install -g trackly-cli
trackly login
trackly jobs --function product
Prerequisites: Node.js 20.20+ or 22.22+ (LTS recommended). On macOS with the official
.pkginstaller, global npm installs may requiresudo.
At a Glance
5,400+ companies | 250K+ jobs | 40+ ATS types | CLI + MCP | 65 local + 62 hosted MCP tools
CLI Commands
Trackly offers three different ways to handle an application. They are never mixed up:
| What happens | How | |
|---|---|---|
| Trackly Apply (local) | Your own AI agent (Claude in Chrome, Codex or computer use) fills the application in your browser on your computer and stops before Submit. You submit. | trackly agent setup installs the Trackly Apply (local) skill and MCP; then ask your agent to use Trackly Apply (local). |
| Trackly Apply (cloud) | You only request it. Trackly applies to the employer for you with your default resume (or --resume-id) and every saved profile answer, sensitive ones included, and notifies you; nothing runs on your computer. US Greenhouse, Lever and Ashby postings; each request counts toward your Trackly Apply (cloud) allowance. |
trackly auto-apply <jobId>; check progress with trackly auto-apply --status. Agents use the MCP tools trackly_auto_apply and trackly_auto_apply_status. |
| Mark applied | You applied on your own and record it. The job also goes on your Tracker board. | trackly mark-applied <jobId> (trackly apply <jobId> does the same, for existing scripts). |
trackly apply with no job ID prints this summary.
Plan response errors in --json mode emit a structured object
on stdout and exit nonzero; check the exit code before treating output as a
successful result.
trackly jobs # List jobs
trackly jobs --remote # Filter remote jobs (sets usStates=REMOTE)
trackly jobs --region us # Filter by region (us, non_us, all, or a region tag: europe, canada, remote, ...)
trackly jobs --job-type internship # Filter by employment type (full_time, internship, all)
trackly jobs --work-arrangement hybrid,remote # Filter by work arrangement independently
trackly jobs --function product # Filter by function
trackly jobs --sponsorship exclude_no # Visa sponsorship filter (all, exclude_no, only_yes)
trackly jobs --company 243 # Filter by company ID
trackly job 1234 # Get job details
trackly jobs 1234 # Alias for job details
trackly companies # List companies
trackly companies search "fintech" # Semantic company search
trackly search "fintech" # Alias for semantic company search
trackly stats # Show metrics
trackly status # Alias for stats
trackly preferences # Show discovery preferences and experience limits
trackly preferences experience product=2 strategy=5 # Replace role-specific limits
trackly preferences experience clear # Turn role-specific experience filtering off
trackly apply # How to apply with Trackly (Trackly Apply (local), Trackly Apply (cloud), mark applied)
trackly mark-applied 1234 # Record a job you applied to yourself
trackly apply 1234 # Same as mark-applied (kept for existing scripts)
trackly auto-apply 1234 # Request Trackly Apply (cloud): Trackly applies for you
trackly auto-apply --status # List your Trackly Apply (cloud) requests
trackly auto-apply --help # What Trackly Apply (cloud) does, next to the other two ways
trackly save 1234 # Save a job
trackly dismiss 1234 # Dismiss a job
trackly ask "PM jobs in SF" # Natural language search
trackly contacts "Stripe" # Search contacts at a company
trackly brief 1234 # Get network brief for a job
trackly referral start 1234 # Start a referral campaign
trackly referral status 1234 # Check referral campaign status
trackly company-brief 243 # Get company brief (--refresh to regenerate)
trackly company-workspace 243 # Full company workspace view
trackly request-company "eBay" # Request a company be added (--url, --notes optional)
trackly api-key create # Generate API key
trackly api-key list # List API keys
trackly config # Show current CLI config
trackly config --api-key trk_xxx # Save an API key for future commands
trackly version # Show installed version
trackly whoami # Show current user
trackly logout # Clear credentials
trackly agent setup --client both # Install Trackly Apply (local) for Codex + Claude Code
trackly agent doctor # Verify setup, profile, resume, and compatibility
trackly agent diagnose-path /path/to/upload.pdf --errno ENOSPC --json # Diagnose one exact local path
Search results set autoApplySupported to true for jobs Trackly Apply (cloud) can apply to (active US Greenhouse, Lever and Ashby postings); it does not decide Trackly Apply (local) eligibility. trackly whoami shows your plan when the server returns it. Plan refusals display server usage and reset information, plus an upgrade link only when the server provides one. Searches have no daily cap.
Add --json to any command for JSON output. Use --api-key <key> or --base-url <url> as one-off global flags when needed.
trackly preferences --json returns only success, experienceFilterV2Available, and preferences. The availability flag controls whether this client may edit role-specific limits; it does not claim that feed or alert enforcement is active. Every update checks that flag and the latest preference revision before writing.
MCP Server Setup
Hosted (Claude co-work, Claude Desktop, ChatGPT)
No install. In your AI tool, open Settings → Connectors → Add custom connector and enter:
https://mcp.usetrackly.app/api/mcp
Sign in with Google when prompted. Full visual guide →
Claude Code can use the same hosted server over OAuth:
claude mcp add --transport http trackly https://mcp.usetrackly.app/api/mcp
OAuth sign-in is the default for every client. An API key is optional and only
needed for headless clients that cannot complete an interactive sign-in: send
Authorization: Bearer trk_... with a key from Settings → API Keys.
Remote connections get 62 hosted tools. They share the search, company, status,
Tracker, and Apply tools with the local server and add trackly_chat; the 4 local-only
tools listed below are not available remotely. Hosted setup and tool details
are at usetrackly.app/connector.
Trackly Apply (local) skill for Claude
If you connected Trackly from the Claude directory, the Trackly Apply (local) skill
teaches Claude to finish your Apply setup and fill applications you approved
in your own browser with Claude in Chrome. It stops before Submit; you always
submit yourself. Each GitHub release
attaches two downloads built from plugins/trackly-claude:
trackly-apply-claude-skill-<version>.zip: upload it in claude.ai under Settings, Capabilities, Skills.trackly-claude-plugin-<version>.zip: a Claude Code plugin with the skill and the Claude connector. See its README to install it.
Trackly Apply (local) on the Claude connector is enabled per account while the updated directory listing is in review.
Local (CLI via stdio, for Cursor / Windsurf / Claude Code)
For agent-assisted form filling on macOS, install the public skill and local MCP together:
trackly agent setup --client codex # or claude / both
trackly agent doctor
For an existing MCP configuration or a Cloud harness, use trackly agent setup --client both --skills-only. This installs the same checksummed skill for both native clients without invoking their MCP commands or changing authentication. CLI 0.20.1 carries universal skill 4.9.1; its policy revision is the same numeric version, superseding the personal revisions. The policy accepts a documented markHandoff() guarantee with awaited calls, exact current tab checks, and revalidation on later turns. These observations are never reported as returned persistence receipts. Browser capabilities and manual Submit remain separate requirements; installation does not make a Linux browser supported. The separately installed trackly:trackly-apply plugin is updated through its plugin manager; plugin 1.1.1 carries the same browser and profile lookup policies. This setup command does not patch plugin caches.
The skill uses the profile and default resume in your Trackly account, asks only missing questions, fills user-approved saved jobs, and always stops before Submit. “Fill the next N” continues through the original recent-first Check Later snapshot until N unauthenticated forms are durably ready for your manual review; authentication walls and exclusions are reported separately and do not consume the target. An explicit “inspect the next N records” request still uses one fixed immutable batch. Support is fetched from Trackly at the start of every run: Greenhouse is full, Ashby and Lever are best effort, and 27 additional named ATS/provider classes use constrained guided mode. Employer-hosted unknown forms run only when Trackly binds them to a verified company domain. LinkedIn-hosted forms and unverified origins remain manual-only; a separately stored external application URL is evaluated under its own ATS and origin policy.
Guided mode is deliberately fail-closed. The agent stops on credential entry, OTP/email verification, CAPTCHA/human verification, an unexpected employer or origin, a submit-only transition, or any field whose committed state cannot be observed. trackly agent doctor checks the local skill, MCP registration, protocol compatibility, declared browser/computer-use configuration, profile completeness, and default-resume metadata. Live semantic browser capability and the exact resume bytes are verified at the start of a real run.
Claude Code one-liner
claude mcp add --scope user trackly -- trackly mcp
Or equivalently:
claude mcp add-json --scope user trackly '{"command":"trackly","args":["mcp"]}'
Claude Code manual config
Add to a project-scoped .mcp.json:
{
"mcpServers": {
"trackly": {
"command": "trackly",
"args": ["mcp"]
}
}
}
Cursor / Windsurf
Add to .cursor/mcp.json or ~/.cursor/mcp.json (same schema works for Windsurf):
{
"mcpServers": {
"trackly": {
"command": "trackly",
"args": ["mcp"]
}
}
}
Then use natural language in any of these clients:
- "Find me PM jobs at fintech companies"
- "What remote engineering roles are available?"
- "Mark job 1234 as applied"
Search filters and updates
trackly_search_jobs supports multiple roles and regions, US states and Canadian
provinces, internship education levels, favorite companies, posting windows,
annual USD salary floors, incremental sync, work arrangement, sponsorship and
pipeline status. Exact values and examples.
Search returns 20 jobs by default; request up to 100 and use offset to page.
For sponsorship, “exclude no” keeps yes and not mentioned. Use exclude_no;
only_yes excludes jobs with unknown sponsorship. Ask the user when intent is
ambiguous. Salary floors also keep unknown and non-comparable salaries visible.
Unsupported industry/specialization/literal-search controls are rejected.
For a local server without a global package install, run npx -y trackly-cli mcp.
For Codex, use codex mcp add trackly -- npx -y trackly-cli mcp; Cursor and
Windsurf can use "command": "npx", "args": ["-y", "trackly-cli", "mcp"].
Authenticate with npx -y trackly-cli login first, or configure TRACKLY_API_KEY.
Existing global installs require npm install --global trackly-cli@latest.
Restart the MCP process/client and refresh tool discovery after updating.
For native skills and marketplace plugin updates, follow the
release and update guide.
Hosted and local releases are separate: the current client schema is authoritative.
MCP Tools Reference
The local stdio server (trackly mcp) registers the 65 tools below. Four are
local-only because they run their checks on your machine:
trackly_diagnose_local_path, trackly_lint_application_text,
trackly_validate_apply_resume_upload, and trackly_validate_apply_tab_keep_set.
The currently deployed hosted server has 62 hosted tools, including the five Tracker tools and the two Trackly Apply (cloud) tools.
Every tool has a family title (<Family> · <Action>), and its description starts with the family tag, for example [Tracker]. Tool names never change.
Jobs
| Title | Tool | Description |
|---|---|---|
| Jobs · Search | trackly_search_jobs | Search by roles, regions, states/provinces, internship level, favorites, recency, annual USD salary floor, sponsorship, work arrangement, and pipeline status |
| Jobs · Get details | trackly_get_job | Get details by Trackly ID, with availability and retry guidance |
| Jobs · Ask in plain language | trackly_ask | Natural language job search |
Companies
| Title | Tool | Description |
|---|---|---|
| Companies · Search | trackly_search_companies | Semantic company search |
| Companies · List tracked | trackly_list_companies | List all tracked companies |
| Companies · Request monitoring | trackly_request_company | Request a company be added to Trackly (rate-limited to 5 pending) |
Network
| Title | Tool | Description |
|---|---|---|
| Network · Get job brief | trackly_get_job_brief | Get a network brief, with availability and retry guidance |
| Network · Find contacts | trackly_contacts_at_company | Search contacts at a specific company |
| Network · Get company workspace | trackly_get_company_workspace | Full company workspace (jobs, contacts, hiring managers, campaigns) |
Preferences
| Title | Tool | Description |
|---|---|---|
| Preferences · Get | trackly_get_preferences | Read bounded discovery preferences, edit availability, and save revision |
| Preferences · Set experience limits | trackly_update_experience_limits | Atomically replace role-specific limits on a job's stated minimum years |
Profile
| Title | Tool | Description |
|---|---|---|
| Profile · Get | trackly_get_application_profile | Get versioned profile answers and provenance |
| Profile · Get setup status | trackly_get_profile_onboarding | Get schema plus missing questions |
| Profile · Update answers | trackly_update_application_profile | Save scoped answers with optimistic concurrency; revoking sensitive storage takes a two-step confirmation |
| Profile · Check answer text | trackly_lint_application_text | Locally lint application writing and return only value-free violations plus a draft hash |
Job status
| Title | Tool | Description |
|---|---|---|
| Job status · Mark applied, saved or dismissed | trackly_update_status | Record applied, saved or dismissed on your job list. Applied also records the job on the Tracker (one entry, never a duplicate) and returns trackerEntry |
| Job status · Get counts | trackly_get_stats | Job tracker metrics and status counts |
Tracker
| Title | Tool | Description |
|---|---|---|
| Tracker · List entries | trackly_list_tracker_applications | List Tracker board entries by stage, company or role text, or job ID; one entry with its events by applicationId |
| Tracker · Add a job | trackly_create_tracker_application | Add an application to the Tracker board without duplicates, mainly one that is not a Trackly job (trackly_update_status applied already adds Trackly jobs) |
| Tracker · Move stage | trackly_update_tracker_stage | Move one Tracker entry to a stage (rejected, interview, offer...) with an optional dated note |
| Tracker · Add note | trackly_add_tracker_note | Add a dated note to one Tracker entry without changing its stage |
| Tracker · Undo an event | trackly_retract_tracker_event | Undo one Tracker event the user names |
Trackly Apply (local)
Your own AI agent fills the form in your browser and stops before Submit; you submit.
| Title | Tool | Description |
|---|---|---|
| Trackly Apply (local) · Get queue | trackly_get_apply_queue | Get user-approved jobs ready for execution |
| Trackly Apply (local) · List deferments | trackly_list_apply_access_deferments | List persistent user access deferments |
| Trackly Apply (local) · Defer a job, company or provider | trackly_defer_apply_access | Persist a job or company deferment from a Trackly jobId |
| Trackly Apply (local) · Clear a deferment | trackly_clear_apply_access_deferment | Clear one discovered user access deferment |
| Trackly Apply (local) · Stop a run | trackly_stop_apply_execution | Stop an execution without changing saved-job state |
Trackly CLI MCP questions
How do I add Trackly CLI MCP to Claude Code?
Run claude mcp add trackly-cli -- npx -y trackly-cli in your terminal. Add --scope user to make it available in every project.
How do I add Trackly CLI MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
Does Trackly support job searches with daily limits?
No, searches through the platform do not have a daily cap.