ashby-mcp 1.0.0 → 1.2.0

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
@@ -82,6 +82,7 @@ Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:
82
82
  | `ashby_search_candidates` | Search candidates by name or email |
83
83
  | `ashby_list_interview_stages` | List all interview stages (pipeline reference) |
84
84
  | `ashby_get_feedback` | Submitted feedback/scorecards for an application |
85
+ | `ashby_get_resume` | Download and extract text from a candidate's resume (PDF, text) |
85
86
 
86
87
  ### Write tools
87
88
 
@@ -105,6 +106,8 @@ Review the feedback submitted for application abc-123 and summarize the intervie
105
106
  Add a note to candidate xyz-456: "Strong technical skills demonstrated in system design round. Recommend advancing to final interview."
106
107
 
107
108
  Move application abc-123 to the "Final Interview" stage.
109
+
110
+ Read the resume for candidate Jane Smith and summarize her experience.
108
111
  ```
109
112
 
110
113
  ## Testing
@@ -134,5 +137,6 @@ The server communicates over stdio — it will start silently and wait for MCP p
134
137
  ```bash
135
138
  npm install
136
139
  npm run build # compile TypeScript to dist/
140
+ npm test # run tests
137
141
  npm start # run the built server
138
142
  ```
@@ -1,6 +1,10 @@
1
1
  export declare class AshbyClient {
2
2
  private authHeader;
3
3
  constructor();
4
+ /** Shared fetch with timeout, retry on 429/5xx, and error handling. */
5
+ private post;
6
+ /** Parse an error response into an AshbyApiError. */
7
+ private parseError;
4
8
  /**
5
9
  * Make a single request to an Ashby API endpoint.
6
10
  * All Ashby endpoints are POST with JSON bodies.
@@ -15,11 +19,6 @@ export declare class AshbyClient {
15
19
  moreDataAvailable: boolean;
16
20
  nextCursor?: string;
17
21
  }>;
18
- /**
19
- * Async generator that yields items across all pages.
20
- * Useful when you need to collect all results.
21
- */
22
- paginate<T>(endpoint: string, params?: Record<string, unknown>): AsyncGenerator<T>;
23
22
  }
24
23
  export declare class AshbyApiError extends Error {
25
24
  readonly httpStatus?: number | undefined;
@@ -1,4 +1,8 @@
1
+ import { logger } from "./logger.js";
1
2
  const BASE_URL = "https://api.ashbyhq.com";
3
+ const API_TIMEOUT_MS = 30_000;
4
+ const MAX_RETRIES = 3;
5
+ const BASE_DELAY_MS = 1_000;
2
6
  export class AshbyClient {
3
7
  authHeader;
4
8
  constructor() {
@@ -9,31 +13,61 @@ export class AshbyClient {
9
13
  }
10
14
  this.authHeader = `Basic ${Buffer.from(`${apiKey}:`).toString("base64")}`;
11
15
  }
16
+ /** Shared fetch with timeout, retry on 429/5xx, and error handling. */
17
+ async post(endpoint, params) {
18
+ const url = `${BASE_URL}/${endpoint}`;
19
+ const body = JSON.stringify(params ?? {});
20
+ for (let attempt = 0; attempt < MAX_RETRIES; attempt++) {
21
+ const t0 = Date.now();
22
+ const response = await fetch(url, {
23
+ method: "POST",
24
+ headers: {
25
+ "Content-Type": "application/json",
26
+ Accept: "application/json",
27
+ Authorization: this.authHeader,
28
+ },
29
+ body,
30
+ signal: AbortSignal.timeout(API_TIMEOUT_MS),
31
+ });
32
+ const ms = Date.now() - t0;
33
+ if (response.ok) {
34
+ logger.debug("api request", { endpoint, status: response.status, ms });
35
+ return response;
36
+ }
37
+ const retryable = response.status === 429 || response.status >= 500;
38
+ if (!retryable || attempt === MAX_RETRIES - 1) {
39
+ logger.error("api request failed", { endpoint, status: response.status, attempt: attempt + 1, ms });
40
+ throw new AshbyApiError(`HTTP ${response.status}: ${response.statusText}`, response.status);
41
+ }
42
+ // Respect Retry-After header, otherwise use exponential backoff
43
+ const retryAfter = response.headers.get("retry-after");
44
+ const delayMs = retryAfter
45
+ ? parseInt(retryAfter, 10) * 1000 || BASE_DELAY_MS
46
+ : BASE_DELAY_MS * 2 ** attempt;
47
+ logger.warn("api retry", { endpoint, status: response.status, attempt: attempt + 1, delayMs });
48
+ await new Promise((r) => setTimeout(r, delayMs));
49
+ }
50
+ // Unreachable, but satisfies TypeScript
51
+ throw new AshbyApiError("Max retries exceeded");
52
+ }
53
+ /** Parse an error response into an AshbyApiError. */
54
+ parseError(data) {
55
+ const message = data.errorInfo?.message ??
56
+ data.errors?.join(", ") ??
57
+ "Unknown Ashby API error";
58
+ return new AshbyApiError(message, 200, data.errorInfo?.code);
59
+ }
12
60
  /**
13
61
  * Make a single request to an Ashby API endpoint.
14
62
  * All Ashby endpoints are POST with JSON bodies.
15
63
  */
16
64
  async request(endpoint, params) {
17
- const url = `${BASE_URL}/${endpoint}`;
18
- const response = await fetch(url, {
19
- method: "POST",
20
- headers: {
21
- "Content-Type": "application/json",
22
- Accept: "application/json",
23
- Authorization: this.authHeader,
24
- },
25
- body: JSON.stringify(params ?? {}),
26
- });
27
- if (!response.ok) {
28
- throw new AshbyApiError(`HTTP ${response.status}: ${response.statusText}`, response.status);
29
- }
65
+ const response = await this.post(endpoint, params);
30
66
  const data = (await response.json());
31
67
  if (!data.success) {
32
- const err = data;
33
- const message = err.errorInfo?.message ??
34
- err.errors?.join(", ") ??
35
- "Unknown Ashby API error";
36
- throw new AshbyApiError(message, 200, err.errorInfo?.code);
68
+ const err = this.parseError(data);
69
+ logger.error("api error", { endpoint, code: err.code, message: err.message });
70
+ throw err;
37
71
  }
38
72
  return data.results;
39
73
  }
@@ -42,26 +76,12 @@ export class AshbyClient {
42
76
  * along with pagination metadata.
43
77
  */
44
78
  async requestList(endpoint, params) {
45
- const url = `${BASE_URL}/${endpoint}`;
46
- const response = await fetch(url, {
47
- method: "POST",
48
- headers: {
49
- "Content-Type": "application/json",
50
- Accept: "application/json",
51
- Authorization: this.authHeader,
52
- },
53
- body: JSON.stringify(params ?? {}),
54
- });
55
- if (!response.ok) {
56
- throw new AshbyApiError(`HTTP ${response.status}: ${response.statusText}`, response.status);
57
- }
79
+ const response = await this.post(endpoint, params);
58
80
  const data = (await response.json());
59
81
  if (!data.success) {
60
- const err = data;
61
- const message = err.errorInfo?.message ??
62
- err.errors?.join(", ") ??
63
- "Unknown Ashby API error";
64
- throw new AshbyApiError(message, 200, err.errorInfo?.code);
82
+ const err = this.parseError(data);
83
+ logger.error("api error", { endpoint, code: err.code, message: err.message });
84
+ throw err;
65
85
  }
66
86
  const ok = data;
67
87
  return {
@@ -70,26 +90,6 @@ export class AshbyClient {
70
90
  nextCursor: ok.nextCursor,
71
91
  };
72
92
  }
73
- /**
74
- * Async generator that yields items across all pages.
75
- * Useful when you need to collect all results.
76
- */
77
- async *paginate(endpoint, params) {
78
- let cursor;
79
- let hasMore = true;
80
- while (hasMore) {
81
- const reqParams = { ...params };
82
- if (cursor) {
83
- reqParams.cursor = cursor;
84
- }
85
- const page = await this.requestList(endpoint, reqParams);
86
- for (const item of page.results) {
87
- yield item;
88
- }
89
- hasMore = page.moreDataAvailable;
90
- cursor = page.nextCursor;
91
- }
92
- }
93
93
  }
94
94
  export class AshbyApiError extends Error {
95
95
  httpStatus;
@@ -1 +1 @@
1
- {"version":3,"file":"ashby-client.js","sourceRoot":"","sources":["../src/ashby-client.ts"],"names":[],"mappings":"AAMA,MAAM,QAAQ,GAAG,yBAAyB,CAAC;AAE3C,MAAM,OAAO,WAAW;IACd,UAAU,CAAS;IAE3B;QACE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CACb,kDAAkD;gBAChD,gDAAgD,CACnD,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,SAAS,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;IAC5E,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,OAAO,CACX,QAAgB,EAChB,MAAgC;QAEhC,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAEtC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;gBAC1B,aAAa,EAAE,IAAI,CAAC,UAAU;aAC/B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,aAAa,CACrB,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,EACjD,QAAQ,CAAC,MAAM,CAChB,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAqB,CAAC;QAEzD,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,IAA0B,CAAC;YACvC,MAAM,OAAO,GACX,GAAG,CAAC,SAAS,EAAE,OAAO;gBACtB,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;gBACtB,yBAAyB,CAAC;YAC5B,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7D,CAAC;QAED,OAAQ,IAAsC,CAAC,OAAO,CAAC;IACzD,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,WAAW,CACf,QAAgB,EAChB,MAAgC;QAMhC,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,QAAQ,EAAE,CAAC;QAEtC,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,EAAE;YAChC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,MAAM,EAAE,kBAAkB;gBAC1B,aAAa,EAAE,IAAI,CAAC,UAAU;aAC/B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC;SACnC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,aAAa,CACrB,QAAQ,QAAQ,CAAC,MAAM,KAAK,QAAQ,CAAC,UAAU,EAAE,EACjD,QAAQ,CAAC,MAAM,CAChB,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAyB,CAAC;QAE7D,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAClB,MAAM,GAAG,GAAG,IAA0B,CAAC;YACvC,MAAM,OAAO,GACX,GAAG,CAAC,SAAS,EAAE,OAAO;gBACtB,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC;gBACtB,yBAAyB,CAAC;YAC5B,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE,GAAG,EAAE,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC7D,CAAC;QAED,MAAM,EAAE,GAAG,IAKV,CAAC;QAEF,OAAO;YACL,OAAO,EAAE,EAAE,CAAC,OAAO;YACnB,iBAAiB,EAAE,EAAE,CAAC,iBAAiB;YACvC,UAAU,EAAE,EAAE,CAAC,UAAU;SAC1B,CAAC;IACJ,CAAC;IAED;;;OAGG;IACH,KAAK,CAAC,CAAC,QAAQ,CACb,QAAgB,EAChB,MAAgC;QAEhC,IAAI,MAA0B,CAAC;QAC/B,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,OAAO,OAAO,EAAE,CAAC;YACf,MAAM,SAAS,GAA4B,EAAE,GAAG,MAAM,EAAE,CAAC;YACzD,IAAI,MAAM,EAAE,CAAC;gBACX,SAAS,CAAC,MAAM,GAAG,MAAM,CAAC;YAC5B,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,WAAW,CAAI,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC5D,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;gBAChC,MAAM,IAAI,CAAC;YACb,CAAC;YAED,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC;YACjC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAC3B,CAAC;IACH,CAAC;CACF;AAED,MAAM,OAAO,aAAc,SAAQ,KAAK;IAGpB;IACA;IAHlB,YACE,OAAe,EACC,UAAmB,EACnB,IAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,eAAU,GAAV,UAAU,CAAS;QACnB,SAAI,GAAJ,IAAI,CAAS;QAG7B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;IAC9B,CAAC;CACF"}
1
+ {"version":3,"file":"ashby-client.js","sourceRoot":"","sources":["../src/ashby-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export declare const logger: {
2
+ debug: (msg: string, data?: Record<string, unknown>) => void;
3
+ info: (msg: string, data?: Record<string, unknown>) => void;
4
+ warn: (msg: string, data?: Record<string, unknown>) => void;
5
+ error: (msg: string, data?: Record<string, unknown>) => void;
6
+ };
package/dist/logger.js ADDED
@@ -0,0 +1,14 @@
1
+ const LEVELS = { debug: 0, info: 1, warn: 2, error: 3 };
2
+ const threshold = LEVELS[(process.env.LOG_LEVEL ?? "info").toLowerCase()] ?? LEVELS.info;
3
+ function log(level, msg, data) {
4
+ if (LEVELS[level] < threshold)
5
+ return;
6
+ process.stderr.write(JSON.stringify({ ts: new Date().toISOString(), level, msg, ...data }) + "\n");
7
+ }
8
+ export const logger = {
9
+ debug: (msg, data) => log("debug", msg, data),
10
+ info: (msg, data) => log("info", msg, data),
11
+ warn: (msg, data) => log("warn", msg, data),
12
+ error: (msg, data) => log("error", msg, data),
13
+ };
14
+ //# sourceMappingURL=logger.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAW,CAAC;AAGjE,MAAM,SAAS,GAAG,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC,CAAC,WAAW,EAAW,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC;AAElG,SAAS,GAAG,CAAC,KAAY,EAAE,GAAW,EAAE,IAA8B;IACpE,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,SAAS;QAAE,OAAO;IACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;AACrG,CAAC;AAED,MAAM,CAAC,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,CAAC,GAAW,EAAE,IAA8B,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC;IAC/E,IAAI,EAAE,CAAC,GAAW,EAAE,IAA8B,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAC7E,IAAI,EAAE,CAAC,GAAW,EAAE,IAA8B,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,EAAE,IAAI,CAAC;IAC7E,KAAK,EAAE,CAAC,GAAW,EAAE,IAA8B,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC;CAChF,CAAC"}
package/dist/pdf.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Extract text from a PDF buffer.
3
+ * Handles FlateDecode compressed streams and CMap Unicode mappings.
4
+ * Returns the extracted text, or empty string if no text found.
5
+ */
6
+ export declare function extractPdfText(buffer: Buffer): string;
package/dist/pdf.js ADDED
@@ -0,0 +1,141 @@
1
+ import { inflateSync } from "node:zlib";
2
+ import { logger } from "./logger.js";
3
+ /**
4
+ * Extract text from a PDF buffer.
5
+ * Handles FlateDecode compressed streams and CMap Unicode mappings.
6
+ * Returns the extracted text, or empty string if no text found.
7
+ */
8
+ export function extractPdfText(buffer) {
9
+ const raw = buffer.toString("latin1");
10
+ // Decode all streams (decompress FlateDecode where needed)
11
+ const decodedStreams = [];
12
+ const streamRegex = /stream\r?\n([\s\S]*?)endstream/g;
13
+ let sMatch;
14
+ while ((sMatch = streamRegex.exec(raw)) !== null) {
15
+ const before = raw.substring(Math.max(0, sMatch.index - 300), sMatch.index);
16
+ const isFlate = /\/Filter\s*\/FlateDecode/.test(before);
17
+ if (isFlate) {
18
+ try {
19
+ decodedStreams.push(inflateSync(Buffer.from(sMatch[1], "latin1")).toString("latin1"));
20
+ }
21
+ catch (e) {
22
+ logger.warn("pdf: FlateDecode decompression failed", {
23
+ streamOffset: sMatch.index,
24
+ error: e instanceof Error ? e.message : String(e),
25
+ });
26
+ }
27
+ }
28
+ else {
29
+ decodedStreams.push(sMatch[1]);
30
+ }
31
+ }
32
+ // Build CMap: parse beginbfchar/beginbfrange sections to map glyph codes to Unicode
33
+ const cmap = new Map();
34
+ for (const s of decodedStreams) {
35
+ // bfchar: <src> <dst>
36
+ const charBlock = /beginbfchar([\s\S]*?)endbfchar/g;
37
+ let cb;
38
+ while ((cb = charBlock.exec(s)) !== null) {
39
+ const pairs = /\s*<([0-9A-Fa-f]+)>\s*<([0-9A-Fa-f]+)>/g;
40
+ let p;
41
+ while ((p = pairs.exec(cb[1])) !== null) {
42
+ const hex = p[2];
43
+ let ch = "";
44
+ for (let i = 0; i < hex.length; i += 4) {
45
+ ch += String.fromCodePoint(parseInt(hex.substring(i, i + 4), 16));
46
+ }
47
+ cmap.set(p[1].toLowerCase(), ch);
48
+ }
49
+ }
50
+ // bfrange: <srcLo> <srcHi> <dstStart>
51
+ const rangeBlock = /beginbfrange([\s\S]*?)endbfrange/g;
52
+ let rb;
53
+ while ((rb = rangeBlock.exec(s)) !== null) {
54
+ const ranges = /\s*<([0-9A-Fa-f]+)>\s*<([0-9A-Fa-f]+)>\s*<([0-9A-Fa-f]+)>/g;
55
+ let r;
56
+ while ((r = ranges.exec(rb[1])) !== null) {
57
+ const lo = parseInt(r[1], 16);
58
+ const hi = parseInt(r[2], 16);
59
+ let dst = parseInt(r[3], 16);
60
+ const padLen = r[1].length;
61
+ for (let code = lo; code <= hi; code++) {
62
+ cmap.set(code.toString(16).padStart(padLen, "0").toLowerCase(), String.fromCodePoint(dst++));
63
+ }
64
+ }
65
+ }
66
+ }
67
+ // Decode a hex string using CMap, falling back to raw char codes
68
+ function decodeHex(hex) {
69
+ const keyLen = cmap.size > 0 ? [...cmap.keys()][0].length : 2;
70
+ let result = "";
71
+ for (let i = 0; i < hex.length; i += keyLen) {
72
+ const code = hex.substring(i, i + keyLen).toLowerCase();
73
+ if (cmap.has(code)) {
74
+ result += cmap.get(code);
75
+ }
76
+ else {
77
+ const cp = parseInt(code, 16);
78
+ if (cp >= 0x20 && cp < 0x7f)
79
+ result += String.fromCharCode(cp);
80
+ }
81
+ }
82
+ return result;
83
+ }
84
+ // Extract text from content streams
85
+ const textChunks = [];
86
+ for (const s of decodedStreams) {
87
+ // Skip CMap and font streams
88
+ if (/beginbfchar|beginbfrange|\/CIDInit/.test(s))
89
+ continue;
90
+ // Hex string Tj: <hex> Tj
91
+ const hexTj = /<([0-9A-Fa-f]+)>\s*Tj/g;
92
+ let hm;
93
+ while ((hm = hexTj.exec(s)) !== null) {
94
+ textChunks.push(decodeHex(hm[1]));
95
+ }
96
+ // Parenthesized string Tj: (text) Tj
97
+ const parenTj = /\(([^)]*)\)\s*Tj/g;
98
+ let pm;
99
+ while ((pm = parenTj.exec(s)) !== null) {
100
+ textChunks.push(pm[1]);
101
+ }
102
+ // TJ arrays with hex: [<hex> num <hex> ...] TJ
103
+ const tjArr = /\[((?:<[0-9A-Fa-f]+>|\([^)]*\)|[^\]])*)\]\s*TJ/g;
104
+ let am;
105
+ while ((am = tjArr.exec(s)) !== null) {
106
+ const inner = am[1];
107
+ const hexInner = /<([0-9A-Fa-f]+)>/g;
108
+ let hi;
109
+ while ((hi = hexInner.exec(inner)) !== null) {
110
+ textChunks.push(decodeHex(hi[1]));
111
+ }
112
+ const parenInner = /\(([^)]*)\)/g;
113
+ let pi;
114
+ while ((pi = parenInner.exec(inner)) !== null) {
115
+ textChunks.push(pi[1]);
116
+ }
117
+ }
118
+ }
119
+ // Join chunks: don't insert spaces between single-char chunks (glyph-per-Tj PDFs)
120
+ let joined = "";
121
+ for (let i = 0; i < textChunks.length; i++) {
122
+ const chunk = textChunks[i];
123
+ const prev = i > 0 ? textChunks[i - 1] : "";
124
+ if (i > 0 && (prev.length > 1 || chunk.length > 1)) {
125
+ joined += " ";
126
+ }
127
+ joined += chunk;
128
+ }
129
+ // Clean up PDF escape sequences (backslash-backslash first to avoid double-processing)
130
+ return joined
131
+ .replace(/\\\\/g, "\x00")
132
+ .replace(/\\n/g, "\n")
133
+ .replace(/\\r/g, "")
134
+ .replace(/\\t/g, " ")
135
+ .replace(/\\\(/g, "(")
136
+ .replace(/\\\)/g, ")")
137
+ .replace(/\x00/g, "\\")
138
+ .replace(/ +/g, " ")
139
+ .trim();
140
+ }
141
+ //# sourceMappingURL=pdf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdf.js","sourceRoot":"","sources":["../src/pdf.ts"],"names":[],"mappings":"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"}
package/dist/server.js CHANGED
@@ -1,6 +1,8 @@
1
1
  import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
2
  import { z } from "zod";
3
3
  import { AshbyClient, AshbyApiError } from "./ashby-client.js";
4
+ import { extractPdfText } from "./pdf.js";
5
+ import { logger } from "./logger.js";
4
6
  function error(e) {
5
7
  const msg = e instanceof AshbyApiError
6
8
  ? `Ashby API error: ${e.message}${e.code ? ` (code: ${e.code})` : ""}`
@@ -16,7 +18,7 @@ function json(data) {
16
18
  export function createServer() {
17
19
  const server = new McpServer({
18
20
  name: "ashby",
19
- version: "1.0.0",
21
+ version: "1.2.0",
20
22
  });
21
23
  const client = new AshbyClient();
22
24
  // ── 1. ashby_list_jobs ──────────────────────────────────────────────────
@@ -24,7 +26,6 @@ export function createServer() {
24
26
 
25
27
  Use this to discover what positions exist before looking at candidates.
26
28
  Returns a paginated list — pass the next_cursor value to fetch more results.
27
- The status filter is applied client-side since the Ashby API returns all jobs.
28
29
 
29
30
  Response: items[] (id, title, status, locationId, departmentId), has_more, next_cursor.`, {
30
31
  status: z
@@ -46,12 +47,11 @@ Response: items[] (id, title, status, locationId, departmentId), has_more, next_
46
47
  const params = { limit };
47
48
  if (cursor)
48
49
  params.cursor = cursor;
50
+ if (status !== "All")
51
+ params.status = status;
49
52
  const page = await client.requestList("job.list", params);
50
- const filtered = status === "All"
51
- ? page.results
52
- : page.results.filter((j) => j.status === status);
53
53
  return json({
54
- items: filtered.map((j) => ({
54
+ items: page.results.map((j) => ({
55
55
  id: j.id,
56
56
  title: j.title,
57
57
  status: j.status,
@@ -84,7 +84,10 @@ Response: job (id, title, status, hiringTeam, customFields, locationId, departme
84
84
  const stageResults = await Promise.all(planIds.map((planId) => client
85
85
  .requestList("interviewStage.list", { interviewPlanId: planId })
86
86
  .then((r) => r.results)
87
- .catch(() => [])));
87
+ .catch((e) => {
88
+ logger.warn("failed to fetch interview stages", { planId, error: e instanceof Error ? e.message : String(e) });
89
+ return [];
90
+ })));
88
91
  const stages = stageResults.flat();
89
92
  return json({
90
93
  job: {
@@ -184,7 +187,10 @@ Response: candidate (id, name, email, phone, socialLinks, tags, source, profileU
184
187
  if (appIds.length > 0) {
185
188
  const appResults = await Promise.all(appIds.map((appId) => client
186
189
  .request("application.info", { applicationId: appId })
187
- .catch(() => null)));
190
+ .catch((e) => {
191
+ logger.warn("failed to resolve application", { appId, error: e instanceof Error ? e.message : String(e) });
192
+ return null;
193
+ })));
188
194
  applications = appResults.filter((a) => a !== null);
189
195
  }
190
196
  return json({
@@ -238,13 +244,22 @@ Response: application (id, status, candidate, job, current_stage, hiringTeam, so
238
244
  client.request("application.info", { applicationId: application_id }),
239
245
  client
240
246
  .requestList("application.listHistory", { applicationId: application_id })
241
- .catch(() => ({ results: [], moreDataAvailable: false })),
247
+ .catch((e) => {
248
+ logger.warn("failed to fetch application history", { applicationId: application_id, error: e instanceof Error ? e.message : String(e) });
249
+ return { results: [], moreDataAvailable: false };
250
+ }),
242
251
  client
243
252
  .requestList("application.listCriteriaEvaluations", { applicationId: application_id })
244
- .catch(() => ({ results: [], moreDataAvailable: false })),
253
+ .catch((e) => {
254
+ logger.warn("failed to fetch criteria evaluations", { applicationId: application_id, error: e instanceof Error ? e.message : String(e) });
255
+ return { results: [], moreDataAvailable: false };
256
+ }),
245
257
  client
246
258
  .requestList("applicationFeedback.list", { applicationId: application_id })
247
- .catch(() => ({ results: [], moreDataAvailable: false })),
259
+ .catch((e) => {
260
+ logger.warn("failed to fetch feedback", { applicationId: application_id, error: e instanceof Error ? e.message : String(e) });
261
+ return { results: [], moreDataAvailable: false };
262
+ }),
248
263
  ]);
249
264
  return json({
250
265
  application: {
@@ -366,7 +381,10 @@ Response: plans[] (plan_id, plan_title, stages[] (id, title, type, order)).`, {}
366
381
  const plansWithStages = await Promise.all(planPage.results.map(async (plan) => {
367
382
  const stagePage = await client
368
383
  .requestList("interviewStage.list", { interviewPlanId: plan.id })
369
- .catch(() => ({ results: [], moreDataAvailable: false }));
384
+ .catch((e) => {
385
+ logger.warn("failed to fetch stages for plan", { planId: plan.id, error: e instanceof Error ? e.message : String(e) });
386
+ return { results: [], moreDataAvailable: false };
387
+ });
370
388
  return {
371
389
  plan_id: plan.id,
372
390
  plan_title: plan.title,
@@ -455,7 +473,73 @@ Response: updated application with new current_stage.`, {
455
473
  return error(e);
456
474
  }
457
475
  });
458
- // ── 12. ashby_add_candidate_tag ─────────────────────────────────────────
476
+ // ── 12. ashby_get_resume ───────────────────────────────────────────────
477
+ server.tool("ashby_get_resume", `Download and read a candidate's resume or uploaded file.
478
+
479
+ Use this after ashby_get_candidate to read the actual content of a resume or file.
480
+ Takes a file handle string from the candidate's fileHandles array.
481
+ Fetches the file URL from Ashby, downloads the file, and returns the text content.
482
+
483
+ Supports PDF, DOCX (as plain text), and plain text files. For other formats, returns the download URL.
484
+
485
+ Response: filename, content (extracted text), or url (for unsupported formats).`, {
486
+ file_handle: z.string().describe("The file handle string from a candidate's fileHandles array."),
487
+ file_name: z.string().optional().describe("Original filename (helps determine format). Optional."),
488
+ }, async ({ file_handle, file_name }) => {
489
+ try {
490
+ // Get the download URL from Ashby
491
+ const result = await client.request("file.info", {
492
+ fileHandle: file_handle,
493
+ });
494
+ const url = result.url;
495
+ if (!url) {
496
+ return json({ error: "No download URL returned by Ashby." });
497
+ }
498
+ // Download the file (60s timeout for large files)
499
+ const response = await fetch(url, {
500
+ signal: AbortSignal.timeout(60_000),
501
+ });
502
+ if (!response.ok) {
503
+ return json({
504
+ error: `Failed to download file: HTTP ${response.status}`,
505
+ url,
506
+ });
507
+ }
508
+ const contentType = response.headers.get("content-type") ?? "";
509
+ const name = file_name ?? "unknown";
510
+ const ext = name.split(".").pop()?.toLowerCase() ?? "";
511
+ // For plain text files, return content directly
512
+ if (contentType.includes("text/") || ["txt", "md", "csv"].includes(ext)) {
513
+ const text = await response.text();
514
+ return json({ filename: name, content: text });
515
+ }
516
+ // For PDFs, extract text from the binary
517
+ if (contentType.includes("pdf") || ext === "pdf") {
518
+ const buffer = Buffer.from(await response.arrayBuffer());
519
+ const text = extractPdfText(buffer);
520
+ if (text.length > 0) {
521
+ return json({ filename: name, format: "pdf", content: text });
522
+ }
523
+ return json({
524
+ filename: name,
525
+ format: "pdf",
526
+ content: "(Could not extract text — PDF may be scanned/image-only. Use the URL to view it directly.)",
527
+ url,
528
+ });
529
+ }
530
+ // For other formats, just return the URL
531
+ return json({
532
+ filename: name,
533
+ format: ext || contentType,
534
+ content: "(Unsupported format for text extraction. Use the URL to view it directly.)",
535
+ url,
536
+ });
537
+ }
538
+ catch (e) {
539
+ return error(e);
540
+ }
541
+ });
542
+ // ── 13. ashby_add_candidate_tag ─────────────────────────────────────────
459
543
  server.tool("ashby_add_candidate_tag", `Tag a candidate with a label (e.g. "Strong Hire", "Needs Review").
460
544
 
461
545
  Use this to categorize candidates during evaluation. You need the tag ID from Ashby admin settings.
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ashby-mcp",
3
- "version": "1.0.0",
3
+ "version": "1.2.0",
4
4
  "description": "MCP server for Ashby ATS — candidate evaluation workflow",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -13,15 +13,23 @@
13
13
  ],
14
14
  "repository": {
15
15
  "type": "git",
16
- "url": "https://github.com/dewierwan/ashby-mcp"
16
+ "url": "git+https://github.com/dewierwan/ashby-mcp.git"
17
17
  },
18
18
  "scripts": {
19
19
  "build": "tsc",
20
20
  "prepublishOnly": "npm run build",
21
21
  "start": "node dist/index.js",
22
+ "test": "vitest run",
22
23
  "test-api": "tsx scripts/test-api.ts"
23
24
  },
24
- "keywords": ["mcp", "ashby", "ats", "recruiting", "hiring", "applicant-tracking"],
25
+ "keywords": [
26
+ "mcp",
27
+ "ashby",
28
+ "ats",
29
+ "recruiting",
30
+ "hiring",
31
+ "applicant-tracking"
32
+ ],
25
33
  "license": "MIT",
26
34
  "dependencies": {
27
35
  "@modelcontextprotocol/sdk": "^1.12.1",
@@ -30,6 +38,7 @@
30
38
  "devDependencies": {
31
39
  "@types/node": "^22.13.4",
32
40
  "tsx": "^4.19.3",
33
- "typescript": "^5.7.3"
41
+ "typescript": "^5.7.3",
42
+ "vitest": "^3.2.4"
34
43
  }
35
44
  }