trackly-cli 0.1.9 → 0.1.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -7,19 +7,21 @@
7
7
 
8
8
  The only job tracking CLI built for AI agents.
9
9
 
10
- Search 99,000+ jobs across 775+ companies and 22 ATS types. Track applications, get AI-powered recommendations, and manage your job search -- from the terminal or through Claude Code, Cursor, and other MCP-compatible AI agents.
10
+ Search 128,000+ jobs across 1,900+ companies and 40+ ATS types. Track applications, get AI-powered recommendations, and manage your job search -- from the terminal or through Claude Code, Cursor, and other MCP-compatible AI agents.
11
11
 
12
12
  ## Quick Start
13
13
 
14
14
  ```bash
15
- npm install -g trackly-cli
15
+ npm install -g trackly-cli # may need: sudo npm install -g trackly-cli
16
16
  trackly login
17
17
  trackly jobs --function product
18
18
  ```
19
19
 
20
+ > **Prerequisites:** [Node.js 18+](https://nodejs.org/) (LTS recommended). On macOS with the official `.pkg` installer, global npm installs may require `sudo`.
21
+
20
22
  ## At a Glance
21
23
 
22
- 775+ companies | 99K+ jobs | 22 ATS types | CLI + MCP | 10 MCP tools
24
+ 1,900+ companies | 128K+ jobs | 40+ ATS types | CLI + MCP | 10 MCP tools
23
25
 
24
26
  ## CLI Commands
25
27
 
@@ -39,6 +41,12 @@ trackly apply 1234 # Mark as applied
39
41
  trackly save 1234 # Save a job
40
42
  trackly dismiss 1234 # Dismiss a job
41
43
  trackly ask "PM jobs in SF" # Natural language search (20/day)
44
+ trackly contacts "Stripe" # Search contacts at a company
45
+ trackly brief 1234 # Get network brief for a job
46
+ trackly referral start 1234 # Start a referral campaign
47
+ trackly referral status 1234 # Check referral campaign status
48
+ trackly company-brief 243 # Get company brief (--refresh to regenerate)
49
+ trackly company-workspace 243 # Full company workspace view
42
50
  trackly api-key create # Generate API key
43
51
  trackly api-key list # List API keys
44
52
  trackly config # Show current CLI config
@@ -55,7 +63,13 @@ Add `--json` to any command for JSON output. Use `--api-key <key>` or `--base-ur
55
63
  ### One-liner (recommended)
56
64
 
57
65
  ```bash
58
- claude mcp add-json trackly '{"command":"trackly","args":["mcp"]}'
66
+ claude mcp add --scope user trackly -- trackly mcp
67
+ ```
68
+
69
+ Or equivalently:
70
+
71
+ ```bash
72
+ claude mcp add-json --scope user trackly '{"command":"trackly","args":["mcp"]}'
59
73
  ```
60
74
 
61
75
  ### Claude Code manual config
@@ -181,7 +195,7 @@ Install trackly-cli (`npm install -g trackly-cli`), authenticate with `trackly l
181
195
 
182
196
  **What MCP servers exist for job searching?**
183
197
 
184
- trackly-cli includes a built-in MCP server with 10 tools for job search, company lookup, and application tracking. Run `trackly mcp` or add it to Claude Code with `claude mcp add-json trackly '{"command":"trackly","args":["mcp"]}'`. It connects to a live database of 99,000+ jobs across 775+ companies.
198
+ trackly-cli includes a built-in MCP server with 10 tools for job search, company lookup, and application tracking. Run `trackly mcp` or add it to Claude Code with `claude mcp add --scope user trackly -- trackly mcp`. It connects to a live database of 128,000+ jobs across 1,900+ companies.
185
199
 
186
200
  **How do I use Claude Code for job hunting?**
187
201
 
@@ -189,7 +203,7 @@ Add trackly as an MCP server in Claude Code. Then ask questions naturally: "Find
189
203
 
190
204
  **What are the best CLI tools for job search?**
191
205
 
192
- trackly-cli is the first dedicated job tracking CLI. It provides direct terminal access to 99,000+ job postings across 775+ companies, with filters for job function, location, and work modality. It also integrates with AI agents via the Model Context Protocol (MCP).
206
+ trackly-cli is the first dedicated job tracking CLI. It provides direct terminal access to 128,000+ job postings across 1,900+ companies, with filters for job function, location, and work modality. It also integrates with AI agents via the Model Context Protocol (MCP).
193
207
 
194
208
  ## Security
195
209
 
package/bin/trackly CHANGED
@@ -214,8 +214,35 @@ async function cmdLogin() {
214
214
  const hadApiKey = Boolean(config.apiKey);
215
215
  delete config.apiKey;
216
216
  saveConfig({ ...config, token, refreshToken, baseUrl });
217
- res.writeHead(200, { 'Content-Type': 'text/html' });
218
- res.end('<html><body><h2>Logged in! You can close this tab.</h2><script>window.close()</script></body></html>');
217
+ res.writeHead(200, { 'Content-Type': 'text/html', 'Referrer-Policy': 'no-referrer' });
218
+ res.end(`<!DOCTYPE html>
219
+ <html lang="en">
220
+ <head>
221
+ <meta charset="utf-8">
222
+ <meta name="viewport" content="width=device-width, initial-scale=1">
223
+ <title>Trackly CLI</title>
224
+ <style>
225
+ *{margin:0;padding:0;box-sizing:border-box}
226
+ body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;background:#0a0a0a;color:#fafafa;display:flex;align-items:center;justify-content:center;min-height:100vh}
227
+ .card{text-align:center;padding:48px 40px;max-width:420px}
228
+ .icon{margin-bottom:24px}
229
+ .check{width:48px;height:48px;border-radius:50%;background:#22c55e;display:inline-flex;align-items:center;justify-content:center;margin-bottom:20px}
230
+ .check svg{width:24px;height:24px}
231
+ h1{font-size:22px;font-weight:600;margin-bottom:8px;letter-spacing:-0.02em}
232
+ p{color:#a1a1aa;font-size:15px;line-height:1.5}
233
+ .hint{margin-top:24px;padding:12px 16px;background:#18181b;border:1px solid #27272a;border-radius:8px;font-family:'SF Mono','Fira Code',monospace;font-size:13px;color:#71717a}
234
+ </style>
235
+ </head>
236
+ <body>
237
+ <div class="card">
238
+ <div class="icon"><svg width="56" height="56" viewBox="0 0 56 56" fill="none"><rect width="56" height="56" rx="14" fill="#18181b"/><path d="M16 20h24v4H16zm0 8h18v4H16zm0 8h22v4H16z" fill="#22c55e" opacity="0.9"/></svg></div>
239
+ <div class="check"><svg fill="none" stroke="white" stroke-width="3" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" d="M5 13l4 4L19 7"/></svg></div>
240
+ <h1>You're logged in</h1>
241
+ <p>You can close this tab and return to your terminal.</p>
242
+ <div class="hint">trackly search "PM jobs in SF"</div>
243
+ </div>
244
+ </body>
245
+ </html>`);
219
246
  console.log(color('green', 'Login successful!'));
220
247
  if (hadApiKey) {
221
248
  console.log('Switched to OAuth. Stored API key cleared.');
@@ -611,8 +638,12 @@ async function cmdConfig(args) {
611
638
 
612
639
  if (args['api-key'] !== undefined) {
613
640
  const keyValue = String(args['api-key']).trim();
614
- if (!keyValue.startsWith('trk_') || keyValue.length < 10) {
615
- console.log(color('yellow', 'Warning: API key does not look like a Trackly key (expected trk_... prefix). Saving anyway.'));
641
+ if (keyValue.startsWith('trk_') && keyValue.length < 14) {
642
+ failNow('Invalid API key: trk_ keys must be at least 14 characters (trk_ + 10). Run "trackly api-key create" to generate a valid key.');
643
+ } else if (!keyValue.startsWith('trk_') && keyValue.length < 20) {
644
+ failNow('Invalid API key: key does not start with trk_ and is too short (must be 20+ characters). Run "trackly api-key create" to generate a valid key.');
645
+ } else if (!keyValue.startsWith('trk_')) {
646
+ console.log(color('yellow', 'Warning: API key does not start with trk_ prefix. Saving as legacy/JWT key.'));
616
647
  }
617
648
  const hadToken = Boolean(config.token);
618
649
  config.apiKey = keyValue;
@@ -702,7 +733,7 @@ ${color('bold', 'Flags:')}
702
733
  --help Show this help
703
734
 
704
735
  ${color('bold', 'MCP Setup:')}
705
- Claude Code: claude mcp add-json trackly '{"command":"trackly","args":["mcp"]}'
736
+ Claude Code: claude mcp add --scope user trackly -- trackly mcp
706
737
  Cursor: add {"command":"trackly","args":["mcp"]} to .cursor/mcp.json
707
738
  `);
708
739
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trackly-cli",
3
- "version": "0.1.9",
3
+ "version": "0.1.12",
4
4
  "mcpName": "io.github.kevinastuhuaman/trackly",
5
5
  "description": "CLI + MCP server for job tracking — search, apply, and manage applications from terminal or AI agents",
6
6
  "bin": {
@@ -35,7 +35,7 @@
35
35
  "career",
36
36
  "terminal"
37
37
  ],
38
- "author": "Kevin Astuhuaman <kevin.astuhuaman.flores@gmail.com>",
38
+ "author": "Kevin Astuhuaman <hello@usetrackly.app>",
39
39
  "license": "MIT",
40
40
  "repository": {
41
41
  "type": "git",
package/server.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
3
3
  "name": "io.github.kevinastuhuaman/trackly",
4
4
  "title": "Trackly CLI",
5
- "description": "Job tracking CLI + MCP server for AI agents. 99K+ jobs, 775+ companies.",
5
+ "description": "Job search and application tracking for AI agents. Search 128K+ jobs across 1,900+ companies and 40+ ATS types. Filter by role, location, visa sponsorship. Natural language queries. Works with Claude Code, Cursor, Windsurf, and any MCP client.",
6
6
  "repository": {
7
7
  "url": "https://github.com/kevinastuhuaman/trackly-cli",
8
8
  "source": "github"
@@ -15,12 +15,12 @@
15
15
  "sizes": ["512x512"]
16
16
  }
17
17
  ],
18
- "version": "0.1.9",
18
+ "version": "0.1.12",
19
19
  "packages": [
20
20
  {
21
21
  "registryType": "npm",
22
22
  "identifier": "trackly-cli",
23
- "version": "0.1.9",
23
+ "version": "0.1.12",
24
24
  "runtimeHint": "npx",
25
25
  "runtimeArguments": [
26
26
  {
@@ -38,5 +38,19 @@
38
38
  "type": "stdio"
39
39
  }
40
40
  }
41
+ ],
42
+ "remotes": [
43
+ {
44
+ "type": "streamable-http",
45
+ "url": "https://mcp.usetrackly.app/api/mcp",
46
+ "headers": [
47
+ {
48
+ "name": "Authorization",
49
+ "description": "Bearer API key (trk_*). Create one at https://usetrackly.app/settings",
50
+ "isRequired": true,
51
+ "isSecret": true
52
+ }
53
+ ]
54
+ }
41
55
  ]
42
56
  }