trackly-cli 0.1.6 → 0.1.8

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/bin/trackly CHANGED
@@ -324,14 +324,15 @@ async function cmdJobs(args) {
324
324
  if (!hasAuth()) failNow(AUTH_HELP_TEXT);
325
325
 
326
326
  const params = new URLSearchParams();
327
- if (args.function) params.set('function', args.function);
327
+ if (args.function) params.set('jobFunction', args.function);
328
+ if (args.company) params.set('companyId', args.company);
328
329
  if (args.location) params.set('location', args.location);
329
330
  if (args.modality) params.set('modality', args.modality);
330
331
  if (args.status) params.set('status', args.status);
331
332
  if (args.sort) params.set('sort', args.sort);
332
333
  if (args.limit) params.set('limit', args.limit);
333
334
  if (args.offset) params.set('offset', args.offset);
334
- if (args.keywords) params.set('keywords', args.keywords);
335
+ if (args.keywords) params.set('search', args.keywords);
335
336
 
336
337
  const qs = params.toString();
337
338
  try {
@@ -667,7 +668,7 @@ ${color('bold', 'Commands:')}
667
668
  ${color('cyan', 'login')} Authenticate via Google OAuth
668
669
  ${color('cyan', 'logout')} Clear credentials
669
670
  ${color('cyan', 'whoami')} Show current user
670
- ${color('cyan', 'jobs')} List jobs (--function, --location, --modality, --status, --sort, --limit, --offset)
671
+ ${color('cyan', 'jobs')} List jobs (--function, --company <id>, --location, --modality, --status, --sort, --limit, --offset, --keywords)
671
672
  ${color('cyan', 'job <id>')} Get full job detail
672
673
  ${color('cyan', 'jobs <id>')} Alias for job <id>
673
674
  ${color('cyan', 'companies')} List companies
package/mcp/server.js CHANGED
@@ -66,9 +66,10 @@ function createServer() {
66
66
 
67
67
  server.tool(
68
68
  'trackly_search_jobs',
69
- 'Search and filter job postings. Returns matching jobs with title, company, location, modality.',
69
+ 'Search and filter job postings. Returns matching jobs with title, company, location, modality. Use companyId to filter jobs at a specific company (get companyId from trackly_search_companies first).',
70
70
  {
71
- function: z.enum(['product_management', 'engineering', 'design', 'data_science', 'marketing', 'sales', 'finance', 'operations', 'legal', 'hr', 'other']).optional().describe('Job function filter: product_management, engineering, design, data_science, marketing, sales, finance, operations, legal, hr, other'),
71
+ function: z.enum(['product', 'engineering', 'design', 'data', 'marketing', 'sales', 'finance', 'operations', 'legal', 'people', 'strategy', 'support', 'other']).optional().describe('Job function filter (matches DB column). Common: product, engineering, design, data, marketing, sales, operations, other'),
72
+ companyId: z.number().optional().describe('Filter jobs by company ID (get from trackly_search_companies)'),
72
73
  location: z.string().optional().describe('Location filter (city or state)'),
73
74
  modality: z.enum(['remote', 'hybrid', 'onsite']).optional().describe('Work modality: remote, hybrid, onsite'),
74
75
  status: z.enum(['new', 'saved', 'applied', 'dismissed']).optional().describe('Application status: new, saved, applied, dismissed'),
@@ -78,9 +79,17 @@ function createServer() {
78
79
  keywords: z.string().max(500).optional().describe('Keyword search in title/description'),
79
80
  },
80
81
  wrapTool(async (params) => {
82
+ // Map MCP param names to backend query param names
83
+ const paramMap = {
84
+ function: 'jobFunction',
85
+ keywords: 'search',
86
+ };
81
87
  const qs = new URLSearchParams();
82
88
  for (const [key, value] of Object.entries(params)) {
83
- if (value !== undefined && value !== null) qs.set(key, String(value));
89
+ if (value !== undefined && value !== null) {
90
+ const backendKey = paramMap[key] || key;
91
+ qs.set(backendKey, String(value));
92
+ }
84
93
  }
85
94
  return apiRequest('GET', `/api/jobscout/jobs?${qs.toString()}`, null, false, false, MCP_USER_AGENT);
86
95
  }, 'Failed to search jobs')
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "trackly-cli",
3
- "version": "0.1.6",
3
+ "version": "0.1.8",
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": {
package/server.json CHANGED
@@ -15,12 +15,12 @@
15
15
  "sizes": ["512x512"]
16
16
  }
17
17
  ],
18
- "version": "0.1.5",
18
+ "version": "0.1.8",
19
19
  "packages": [
20
20
  {
21
21
  "registryType": "npm",
22
22
  "identifier": "trackly-cli",
23
- "version": "0.1.5",
23
+ "version": "0.1.8",
24
24
  "runtimeHint": "npx",
25
25
  "runtimeArguments": [
26
26
  {