@ttctl/mcp 0.1.0-rc.2 → 0.1.0-rc.4

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.
Files changed (58) hide show
  1. package/README.md +28 -0
  2. package/dist/tools/_shared.d.ts +16 -14
  3. package/dist/tools/_shared.d.ts.map +1 -1
  4. package/dist/tools/_shared.js +31 -20
  5. package/dist/tools/_shared.js.map +1 -1
  6. package/dist/tools/applications.d.ts +10 -0
  7. package/dist/tools/applications.d.ts.map +1 -1
  8. package/dist/tools/applications.js +87 -9
  9. package/dist/tools/applications.js.map +1 -1
  10. package/dist/tools/engagements.d.ts.map +1 -1
  11. package/dist/tools/engagements.js +44 -2
  12. package/dist/tools/engagements.js.map +1 -1
  13. package/dist/tools/index.d.ts +3 -2
  14. package/dist/tools/index.d.ts.map +1 -1
  15. package/dist/tools/index.js +9 -2
  16. package/dist/tools/index.js.map +1 -1
  17. package/dist/tools/interest_requests.d.ts +77 -0
  18. package/dist/tools/interest_requests.d.ts.map +1 -0
  19. package/dist/tools/interest_requests.js +219 -0
  20. package/dist/tools/interest_requests.js.map +1 -0
  21. package/dist/tools/jobs.d.ts +18 -3
  22. package/dist/tools/jobs.d.ts.map +1 -1
  23. package/dist/tools/jobs.js +177 -39
  24. package/dist/tools/jobs.js.map +1 -1
  25. package/dist/tools/payments.d.ts.map +1 -1
  26. package/dist/tools/payments.js +51 -2
  27. package/dist/tools/payments.js.map +1 -1
  28. package/dist/tools/profile/education.d.ts.map +1 -1
  29. package/dist/tools/profile/education.js +0 -4
  30. package/dist/tools/profile/education.js.map +1 -1
  31. package/dist/tools/profile/employment.d.ts.map +1 -1
  32. package/dist/tools/profile/employment.js +52 -12
  33. package/dist/tools/profile/employment.js.map +1 -1
  34. package/dist/tools/profile/industries.d.ts.map +1 -1
  35. package/dist/tools/profile/industries.js +0 -3
  36. package/dist/tools/profile/industries.js.map +1 -1
  37. package/dist/tools/profile/resume.d.ts.map +1 -1
  38. package/dist/tools/profile/resume.js +0 -2
  39. package/dist/tools/profile/resume.js.map +1 -1
  40. package/dist/tools/profile/shared.d.ts +12 -11
  41. package/dist/tools/profile/shared.d.ts.map +1 -1
  42. package/dist/tools/profile/shared.js +9 -8
  43. package/dist/tools/profile/shared.js.map +1 -1
  44. package/dist/tools/profile_basic_photo_upload.d.ts.map +1 -1
  45. package/dist/tools/profile_basic_photo_upload.js +0 -2
  46. package/dist/tools/profile_basic_photo_upload.js.map +1 -1
  47. package/dist/tools/profile_basic_update.d.ts.map +1 -1
  48. package/dist/tools/profile_basic_update.js +0 -2
  49. package/dist/tools/profile_basic_update.js.map +1 -1
  50. package/dist/tools/timesheet.d.ts +15 -5
  51. package/dist/tools/timesheet.d.ts.map +1 -1
  52. package/dist/tools/timesheet.js +89 -6
  53. package/dist/tools/timesheet.js.map +1 -1
  54. package/package.json +2 -2
  55. package/dist/tools/output-schemas.d.ts +0 -129
  56. package/dist/tools/output-schemas.d.ts.map +0 -1
  57. package/dist/tools/output-schemas.js +0 -138
  58. package/dist/tools/output-schemas.js.map +0 -1
package/README.md CHANGED
@@ -44,6 +44,34 @@ The server registers 88 tools (at time of writing) spanning the full Toptal Tale
44
44
 
45
45
  Tools use canonical sub-domain names — CLI aliases (`certs`, `experience`) are CLI-only and do NOT appear in the MCP catalog. The full registry is wired in [`tools/index.ts`](https://github.com/alexey-pelykh/ttctl/blob/main/packages/mcp/src/tools/index.ts).
46
46
 
47
+ ### Glossary — Toptal portal label → MCP / API enum
48
+
49
+ Tool descriptions reference wire-canonical names (`AVAILABILITY_REQUEST_PENDING`, `eligibleJobs`, …); the Toptal portal surfaces the same concepts with user-facing labels. This table is the cross-reference.
50
+
51
+ #### Activity items (`ttctl_applications_*`)
52
+
53
+ The Toptal portal sidebar groups activity rows by **status group**; each row also carries a finer-grained **status**. The MCP `ttctl_applications_list --statusGroups` flag takes the status-group enum. Group assignment is server-side — the `statusV2.value` examples below are representative (✓ = observed in research captures; others inferred from portal observation and enum semantics).
54
+
55
+ | Portal label | `statusGroups` enum | Representative `statusV2.value` |
56
+ | ---------------------------------------- | --------------------- | ------------------------------------------------------------------------------------------------------------- |
57
+ | Interest Requests / Job Interest Request | `ON_RECRUITER_REVIEW` | ✓ `AVAILABILITY_REQUEST_PENDING` (verbose: "Job Interest Request") |
58
+ | On Client Review | `ON_CLIENT_REVIEW` | `PROFILE_SENT_TO_CLIENT`, `APPLIED`, `INTERVIEW_*` |
59
+ | Active Engagement | `ACTIVE_ENGAGEMENT` | ✓ `ACTIVE`; also `ON_TRIAL`, `ON_BREAK`, `PENDING_START` |
60
+ | Closed Engagement | `CLOSED_ENGAGEMENT` | `COMPLETED`, `REJECTED_AFTER_TRIAL` |
61
+ | Archive / Archived | `ARCHIVED` | ✓ `AVAILABILITY_REQUEST_EXPIRED`, ✓ `AVAILABILITY_REQUEST_REJECTED`, ✓ `JOB_CANCELED`, ✓ `POSITION_FULFILLED` |
62
+
63
+ Each response row's `statusV2.verbose` is the exact label the portal renders ("Job Interest Request", "Active", "Archived", …); `statusV2.value` is the wire enum.
64
+
65
+ #### Jobs (`ttctl_jobs_*`)
66
+
67
+ | Portal concept | MCP tool | Notes |
68
+ | -------------------------- | ----------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
69
+ | Job board "N of M" counter | `ttctl_jobs_list` returns the N (eligible) pool | M − N = already-applied + position-fulfilled + not-interested + apply-blocked (skill / specialization mismatch, missing ID verification, insufficient hours, legacy-client restriction, etc. — see `JobOperationsApplyErrorsEnum` for the apply-error taxonomy); the M − N remainder is not exposed by this tool. |
70
+ | Saved jobs | `ttctl_jobs_saved` | Server-side `saved=true` filter on `eligibleJobs`. |
71
+ | Not-interested jobs | `ttctl_jobs_not_interested_list` | Server-side `notInterested=true` filter. |
72
+ | Viewed jobs | `ttctl_jobs_viewed` | Best-effort: wire has no `viewed` filter; client-side filter over a paginated `eligibleJobs` fetch (see the tool's R1 caveat). |
73
+ | Job-search subscription | `ttctl_jobs_search_*` | Single subscription per user (wire cardinality R2). |
74
+
47
75
  ### Trust model
48
76
 
49
77
  Process-level: any process that can spawn `ttctl mcp` gets full access to the user's Toptal Talent session via the configured config file. The 88-tool catalog includes destructive surfaces (`timesheet submit`, profile mutations, job-interest signals, rate-change requests, etc.) — the blast radius is the user's full profile and platform-side activity, not just reads. Don't grant MCP access to untrusted AI agents — see the project [`SECURITY.md`](https://github.com/alexey-pelykh/ttctl/blob/main/SECURITY.md).
@@ -31,11 +31,11 @@ import type { ToolErrorResponse } from "../errors.js";
31
31
  * structurally compatible with the SDK's `CallToolResult` (whose own type
32
32
  * carries the same signature for forward-compatibility with new optional
33
33
  * fields). The `structuredContent` field is populated by
34
- * {@link jsonResponse} so tools that declare an `outputSchema` (#226) get
35
- * SDK-validated structured payload alongside the `text` slot.
36
- * `structuredContent` is harmless metadata for tools without
37
- * `outputSchema` the SDK skips validation when `outputSchema` is
38
- * absent.
34
+ * {@link jsonResponse} as advisory metadata for MCP clients that prefer a
35
+ * pre-parsed object over decoding the `text` slot. No tool declares an
36
+ * `outputSchema` (removed in #379 see {@link dryRunResponse}), so the
37
+ * SDK never validates `structuredContent` against a schema; it is
38
+ * convenience data, not a validated contract.
39
39
  */
40
40
  export interface ToolSuccessResponse {
41
41
  content: [{
@@ -48,14 +48,15 @@ export interface ToolSuccessResponse {
48
48
  /**
49
49
  * Render a JSON-shaped payload as a tool-success response. Stringifies
50
50
  * with two-space indentation so LLM clients see an easy-to-read response,
51
- * and mirrors the payload into `structuredContent` so tools that declare
52
- * an `outputSchema` (#226) get SDK-validated structured output without
53
- * each tool having to plumb the field manually.
51
+ * and mirrors the payload into `structuredContent` as advisory pre-parsed
52
+ * metadata (no tool declares an `outputSchema` post-#379, so the SDK does
53
+ * not validate it it is a convenience for clients that prefer an object
54
+ * over decoding the `text` slot).
54
55
  *
55
56
  * `structuredContent` is only populated when `payload` is an object — the
56
57
  * MCP SDK's `structuredContent` slot expects an object shape per
57
58
  * `CallToolResult`, and arrays / primitives are encoded only via the
58
- * `text` slot (callers that emit array payloads can still validate the
59
+ * `text` slot (callers that emit array payloads can still parse the
59
60
  * JSON-decoded `text` field client-side).
60
61
  */
61
62
  export declare function jsonResponse(payload: unknown): ToolSuccessResponse;
@@ -63,15 +64,16 @@ export declare function jsonResponse(payload: unknown): ToolSuccessResponse;
63
64
  * Render a plain string as a tool-success response (e.g., for tools that
64
65
  * return a confirmation rather than structured data). Use
65
66
  * {@link textWithStructuredResponse} when both a human-readable line and
66
- * a typed acknowledgment are desired (e.g., `*_remove` tools per #226).
67
+ * a structured acknowledgment are desired (e.g., `*_remove` tools).
67
68
  */
68
69
  export declare function textResponse(text: string): ToolSuccessResponse;
69
70
  /**
70
71
  * Render a confirmation line as the `text` content slot while also
71
- * publishing a typed acknowledgment via `structuredContent`. Used by
72
- * `*_remove` tools (#226) where the human-readable text stays for
73
- * compatibility and the structured payload is `{ id, removed: true }`
74
- * matching the tool's declared `outputSchema`.
72
+ * publishing an advisory structured acknowledgment via
73
+ * `structuredContent`. Used by `*_remove` tools where the human-readable
74
+ * text stays for compatibility and the structured payload is
75
+ * `{ id, removed: true }` for clients that prefer a pre-parsed object.
76
+ * Not SDK-validated (no tool declares an `outputSchema` post-#379).
75
77
  */
76
78
  export declare function textWithStructuredResponse(text: string, structuredContent: Record<string, unknown>): ToolSuccessResponse;
77
79
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../src/tools/_shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_shared.d.ts","sourceRoot":"","sources":["../../src/tools/_shared.ts"],"names":[],"mappings":"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"}
@@ -6,14 +6,15 @@ import { ttctlErrorToToolResponseOrNull } from "../errors.js";
6
6
  /**
7
7
  * Render a JSON-shaped payload as a tool-success response. Stringifies
8
8
  * with two-space indentation so LLM clients see an easy-to-read response,
9
- * and mirrors the payload into `structuredContent` so tools that declare
10
- * an `outputSchema` (#226) get SDK-validated structured output without
11
- * each tool having to plumb the field manually.
9
+ * and mirrors the payload into `structuredContent` as advisory pre-parsed
10
+ * metadata (no tool declares an `outputSchema` post-#379, so the SDK does
11
+ * not validate it it is a convenience for clients that prefer an object
12
+ * over decoding the `text` slot).
12
13
  *
13
14
  * `structuredContent` is only populated when `payload` is an object — the
14
15
  * MCP SDK's `structuredContent` slot expects an object shape per
15
16
  * `CallToolResult`, and arrays / primitives are encoded only via the
16
- * `text` slot (callers that emit array payloads can still validate the
17
+ * `text` slot (callers that emit array payloads can still parse the
17
18
  * JSON-decoded `text` field client-side).
18
19
  */
19
20
  export function jsonResponse(payload) {
@@ -29,17 +30,18 @@ export function jsonResponse(payload) {
29
30
  * Render a plain string as a tool-success response (e.g., for tools that
30
31
  * return a confirmation rather than structured data). Use
31
32
  * {@link textWithStructuredResponse} when both a human-readable line and
32
- * a typed acknowledgment are desired (e.g., `*_remove` tools per #226).
33
+ * a structured acknowledgment are desired (e.g., `*_remove` tools).
33
34
  */
34
35
  export function textResponse(text) {
35
36
  return { content: [{ type: "text", text }] };
36
37
  }
37
38
  /**
38
39
  * Render a confirmation line as the `text` content slot while also
39
- * publishing a typed acknowledgment via `structuredContent`. Used by
40
- * `*_remove` tools (#226) where the human-readable text stays for
41
- * compatibility and the structured payload is `{ id, removed: true }`
42
- * matching the tool's declared `outputSchema`.
40
+ * publishing an advisory structured acknowledgment via
41
+ * `structuredContent`. Used by `*_remove` tools where the human-readable
42
+ * text stays for compatibility and the structured payload is
43
+ * `{ id, removed: true }` for clients that prefer a pre-parsed object.
44
+ * Not SDK-validated (no tool declares an `outputSchema` post-#379).
43
45
  */
44
46
  export function textWithStructuredResponse(text, structuredContent) {
45
47
  return {
@@ -61,15 +63,25 @@ export function textWithStructuredResponse(text, structuredContent) {
61
63
  * `availability.*Set`).
62
64
  */
63
65
  export function dryRunResponse(preview) {
64
- // Intentionally emits ONLY the `text` content slot — no
65
- // `structuredContent`. The dry-run envelope shape does NOT match the
66
- // success-path `outputSchema` declared by #226 tools, and the MCP SDK
67
- // validates `structuredContent` against `outputSchema` when both are
68
- // present. Leaving `structuredContent` absent lets the SDK skip
69
- // validation for dry-run responses (per `_validateOutput`: "if
70
- // `!result.structuredContent` return"), preserving the universal
71
- // `{ ok, dryRun, preview }` envelope contract without forcing every
72
- // tool's `outputSchema` to absorb the dry-run shape.
66
+ // Emits ONLY the `text` content slot — no `structuredContent`. The
67
+ // dry-run envelope shape (`{ ok, dryRun, preview }`) is distinct from
68
+ // every tool's success-path payload by design.
69
+ //
70
+ // #379 history: #226 added strict success-shape `outputSchema`s to the
71
+ // write tools. MCP SDK ≥1.29 then HARD-THROWS
72
+ // `Output validation error: Tool <name> has an output schema but no
73
+ // structured content was provided` whenever an `outputSchema` is
74
+ // declared and a result omits `structuredContent` which this
75
+ // (correctly) does for the dry-run envelope. Earlier SDKs skipped
76
+ // validation in that case; ≥1.29 does not. The fix removed
77
+ // `outputSchema` from every tool (the dry-run envelope cannot share a
78
+ // single ZodObject schema with the success shape, and the SDK does not
79
+ // support union/`oneOf` output schemas). So this helper stays
80
+ // structuredContent-free and the absence of any `outputSchema` keeps
81
+ // the universal `{ ok, dryRun, preview }` envelope contract intact.
82
+ // A `registration.test.ts` guard fails if any tool re-declares an
83
+ // `outputSchema`; an end-to-end client round-trip
84
+ // (`dryrun-output-validation.test.ts`) asserts this path is reachable.
73
85
  const envelope = { ok: true, dryRun: true, preview };
74
86
  return {
75
87
  content: [{ type: "text", text: JSON.stringify(envelope, null, 2) }],
@@ -92,8 +104,7 @@ export function dryRunResponse(preview) {
92
104
  */
93
105
  export function dryRunMultiResponse(previews) {
94
106
  // Same rationale as `dryRunResponse` — emits ONLY `content`, no
95
- // `structuredContent`, so #226 tools with declared `outputSchema`
96
- // don't fail validation on the dry-run shape.
107
+ // `structuredContent` (see that function's note re: #379 / SDK ≥1.29).
97
108
  const envelope = { ok: true, dryRun: true, previews };
98
109
  return {
99
110
  content: [{ type: "text", text: JSON.stringify(envelope, null, 2) }],
@@ -1 +1 @@
1
- {"version":3,"file":"_shared.js","sourceRoot":"","sources":["../../src/tools/_shared.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"_shared.js","sourceRoot":"","sources":["../../src/tools/_shared.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,16 @@ import { type ToolRegistrationContext } from "./_shared.js";
13
13
  * of fields. The list tool's `keywords` and `statusGroups` mirror the
14
14
  * `--keywords` / `--status-group` CLI flags.
15
15
  *
16
+ * **Pagination (#377)**: `ttctl_applications_list` accepts optional
17
+ * `page` (1-indexed) and `perPage` (server-capped) integers — mirroring
18
+ * the CLI's `--page` / `--per-page` flags and the four paginating
19
+ * `ttctl_jobs_*` tools (#369). The apply-path response is
20
+ * `{ items, pageInfo }` where `pageInfo` mirrors the CLI's
21
+ * `EnvelopePageInfo` shape so LLM callers detect `hasNextPage` and
22
+ * iterate. `#377` added the `$page` / `$pageSize` wire args to the
23
+ * hand-authored `JobActivityItems` document (a wire-shape change gated
24
+ * by the mandatory live E2E per the schema/contract rule).
25
+ *
16
26
  * **Read-only** — per project non-goals (#15), no apply / withdraw /
17
27
  * edit tools are exposed. `applications` is intentionally a smaller
18
28
  * surface than the profile sub-domains.
@@ -1 +1 @@
1
- {"version":3,"file":"applications.d.ts","sourceRoot":"","sources":["../../src/tools/applications.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,OAAO,EAA8D,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;AASxH;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,uBAAuB,GAAG,IAAI,CAwH/F"}
1
+ {"version":3,"file":"applications.d.ts","sourceRoot":"","sources":["../../src/tools/applications.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,OAAO,EAA8D,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAsExH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,uBAAuB,GAAG,IAAI,CA8J/F"}
@@ -8,6 +8,42 @@ const DRY_RUN_FIELD = z
8
8
  .boolean()
9
9
  .optional()
10
10
  .describe("Preview the request without executing. Returns `{ ok: true, dryRun: true, preview }` with operationName + variables + redacted bearer header. Default: false.");
11
+ /**
12
+ * Pagination input fields for `ttctl_applications_list` (issue #377).
13
+ * Constraints mirror the CLI's `parsePaginationFlag` (positive integer
14
+ * ≥ 1); the per-page upper bound is server-enforced. The service-layer
15
+ * defaults (`page: 1, perPage: 20`) kick in when either field is
16
+ * omitted, so existing MCP callers see no behavioral change. Same
17
+ * shape as the four paginating `ttctl_jobs_*` tools (#369).
18
+ */
19
+ const PAGE_FIELD = z.number().int().min(1).optional().describe("1-indexed page number (≥ 1). Default: 1.");
20
+ const PER_PAGE_FIELD = z.number().int().min(1).optional().describe("Items per page (≥ 1; server-capped). Default: 20.");
21
+ /**
22
+ * Build the variables payload the core `applications.list()` sends to
23
+ * `JobActivityItems` so a dry-run preview matches the apply path's
24
+ * wire shape EXACTLY (issue #377). Mirrors the core's "empty/undefined
25
+ * → null" coercion for `keywords` / `onlyStatusGroupFilter` plus the
26
+ * resolved `page` / `pageSize` (defaults applied via
27
+ * `applications.DEFAULT_PAGE` / `DEFAULT_PER_PAGE`). Structural twin of
28
+ * jobs.ts's `buildJobsListVariables` (#369).
29
+ */
30
+ function buildApplicationsListVariables(opts) {
31
+ return {
32
+ keywords: opts.keywords && opts.keywords.length > 0 ? opts.keywords : null,
33
+ onlyStatusGroupFilter: opts.statusGroups && opts.statusGroups.length > 0 ? opts.statusGroups : null,
34
+ page: opts.page ?? applications.DEFAULT_PAGE,
35
+ pageSize: opts.perPage ?? applications.DEFAULT_PER_PAGE,
36
+ };
37
+ }
38
+ function buildApplicationsPageInfo(page) {
39
+ const totalPages = Math.max(1, Math.ceil(page.totalCount / page.perPage));
40
+ return {
41
+ currentPage: page.page,
42
+ perPage: page.perPage,
43
+ totalPages,
44
+ hasNextPage: page.page < totalPages,
45
+ };
46
+ }
11
47
  /**
12
48
  * Register the three `ttctl_applications_*` MCP tools per the #15 spec.
13
49
  * Tool names use the `ttctl_` prefix and the canonical CLI path joined
@@ -21,6 +57,16 @@ const DRY_RUN_FIELD = z
21
57
  * of fields. The list tool's `keywords` and `statusGroups` mirror the
22
58
  * `--keywords` / `--status-group` CLI flags.
23
59
  *
60
+ * **Pagination (#377)**: `ttctl_applications_list` accepts optional
61
+ * `page` (1-indexed) and `perPage` (server-capped) integers — mirroring
62
+ * the CLI's `--page` / `--per-page` flags and the four paginating
63
+ * `ttctl_jobs_*` tools (#369). The apply-path response is
64
+ * `{ items, pageInfo }` where `pageInfo` mirrors the CLI's
65
+ * `EnvelopePageInfo` shape so LLM callers detect `hasNextPage` and
66
+ * iterate. `#377` added the `$page` / `$pageSize` wire args to the
67
+ * hand-authored `JobActivityItems` document (a wire-shape change gated
68
+ * by the mandatory live E2E per the schema/contract rule).
69
+ *
24
70
  * **Read-only** — per project non-goals (#15), no apply / withdraw /
25
71
  * edit tools are exposed. `applications` is intentionally a smaller
26
72
  * surface than the profile sub-domains.
@@ -43,8 +89,28 @@ export function registerApplicationsTools(server, ctx) {
43
89
  " - `keywords`: free-text search against indexed job fields",
44
90
  " - `statusGroups`: restrict to one or more JobActivityItemStatusGroupEnum values",
45
91
  "",
92
+ "UI ↔ API status-group mapping (portal label → `statusGroups` enum value):",
93
+ " - 'Interest Requests' / 'Job Interest Request' → `ON_RECRUITER_REVIEW`",
94
+ " (specifically `statusV2.value: AVAILABILITY_REQUEST_PENDING`,",
95
+ ' `statusV2.verbose: "Job Interest Request"`)',
96
+ " - 'On Client Review' → `ON_CLIENT_REVIEW`",
97
+ " - 'Active Engagement' → `ACTIVE_ENGAGEMENT`",
98
+ " - 'Closed Engagement' → `CLOSED_ENGAGEMENT`",
99
+ " - 'Archive' / 'Archived' → `ARCHIVED`",
100
+ "",
101
+ "Each row's response `statusV2.verbose` is the exact label the portal shows",
102
+ '(e.g. "Job Interest Request", "Active", "Archived"); `statusV2.value` is the',
103
+ "wire enum (e.g. `AVAILABILITY_REQUEST_PENDING`).",
104
+ "",
105
+ "Pagination (#377): returns one page of activity items plus offset-style",
106
+ "`pageInfo` (`currentPage`, `perPage`, `totalPages`, `hasNextPage`) so callers",
107
+ "can iterate beyond the default first page (≤20).",
108
+ " - `page`: 1-indexed page number (≥ 1). Default: 1.",
109
+ " - `perPage`: items per page (≥ 1; server-capped). Default: 20.",
110
+ "",
46
111
  "Example user prompts:",
47
112
  ' - "Show me my recent Toptal applications."',
113
+ ' - "Where are my interest requests?" (filter `statusGroups: [ON_RECRUITER_REVIEW]`)',
48
114
  ' - "What active engagements do I have on Toptal?"',
49
115
  ' - "List my archived Toptal job activity."',
50
116
  ].join("\n"),
@@ -54,6 +120,8 @@ export function registerApplicationsTools(server, ctx) {
54
120
  .array(z.enum([...applications.STATUS_GROUPS]))
55
121
  .optional()
56
122
  .describe("Restrict to one or more JobActivityItemStatusGroupEnum values: ACTIVE_ENGAGEMENT, ARCHIVED, CLOSED_ENGAGEMENT, ON_CLIENT_REVIEW, ON_RECRUITER_REVIEW"),
123
+ page: PAGE_FIELD,
124
+ perPage: PER_PAGE_FIELD,
57
125
  dryRun: DRY_RUN_FIELD,
58
126
  },
59
127
  }, async (args) => {
@@ -65,17 +133,19 @@ export function registerApplicationsTools(server, ctx) {
65
133
  opts.keywords = args.keywords;
66
134
  if (args.statusGroups !== undefined)
67
135
  opts.statusGroups = args.statusGroups;
136
+ if (args.page !== undefined)
137
+ opts.page = args.page;
138
+ if (args.perPage !== undefined)
139
+ opts.perPage = args.perPage;
68
140
  if (args.dryRun === true) {
69
- const variables = {};
70
- if (opts.keywords !== undefined)
71
- variables["keywords"] = opts.keywords;
72
- if (opts.statusGroups !== undefined)
73
- variables["onlyStatusGroupFilter"] = opts.statusGroups;
74
- return dryRunResponse(buildMcpDryRunPreview("JobActivityItems", "mobile-gateway", variables, auth.token));
141
+ // Mirror the apply path's wire shape EXACTLY (incl. the
142
+ // resolved page/pageSize and null-coerced filters) so the
143
+ // preview is faithful — #377 / #369 dry-run discipline.
144
+ return dryRunResponse(buildMcpDryRunPreview("JobActivityItems", "mobile-gateway", buildApplicationsListVariables(opts), auth.token));
75
145
  }
76
146
  try {
77
- const items = await applications.list(auth.token, opts);
78
- return successResponse(items);
147
+ const page = await applications.list(auth.token, opts);
148
+ return successResponse({ items: page.items, pageInfo: buildApplicationsPageInfo(page) });
79
149
  }
80
150
  catch (err) {
81
151
  return mapApplicationsError(err);
@@ -132,7 +202,15 @@ export function registerApplicationsTools(server, ctx) {
132
202
  if (!auth.ok)
133
203
  return auth.response;
134
204
  if (args.dryRun === true) {
135
- const previews = applications.STATUS_GROUPS.map((group) => buildMcpDryRunPreview("JobActivityItems", "mobile-gateway", { onlyStatusGroupFilter: [group] }, auth.token));
205
+ const previews = applications.STATUS_GROUPS.map((group) =>
206
+ // Mirror the apply-path wire shape EXACTLY (#377 / #369 dry-run
207
+ // discipline): `applications.stats` issues 5 parallel calls each
208
+ // with `{ keywords: null, onlyStatusGroupFilter: [group],
209
+ // page: null, pageSize: null }`. The explicit-null page /
210
+ // pageSize is the post-#377 deterministic wire-shape contract
211
+ // (lets the gateway apply its own defaults); the preview must
212
+ // mirror it.
213
+ buildMcpDryRunPreview("JobActivityItems", "mobile-gateway", { keywords: null, onlyStatusGroupFilter: [group], page: null, pageSize: null }, auth.token));
136
214
  return dryRunMultiResponse(previews);
137
215
  }
138
216
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"applications.js","sourceRoot":"","sources":["../../src/tools/applications.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"applications.js","sourceRoot":"","sources":["../../src/tools/applications.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"engagements.d.ts","sourceRoot":"","sources":["../../src/tools/engagements.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,OAAO,EAA8D,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;AASxH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,uBAAuB,GAAG,IAAI,CA6V9F"}
1
+ {"version":3,"file":"engagements.d.ts","sourceRoot":"","sources":["../../src/tools/engagements.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAOzE,OAAO,EAA8D,KAAK,uBAAuB,EAAE,MAAM,cAAc,CAAC;AA6CxH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,uBAAuB,GAAG,IAAI,CAkX9F"}
@@ -8,6 +8,25 @@ const DRY_RUN_FIELD = z
8
8
  .boolean()
9
9
  .optional()
10
10
  .describe("Preview the request without executing. Returns `{ ok: true, dryRun: true, preview }` with operationName + variables + redacted bearer header. Default: false.");
11
+ /**
12
+ * Pagination input fields for `ttctl_engagements_list` (issue #375),
13
+ * mirroring the four paginating `ttctl_jobs_*` tools (#369).
14
+ * Constraints match the CLI's `parsePaginationFlag` (positive integer
15
+ * ≥ 1); the wire's per-page upper bound is server-enforced. The
16
+ * service-layer defaults (`page: 1, perPage: 20`) kick in when either
17
+ * field is omitted, so existing MCP callers see no behavioral change.
18
+ */
19
+ const PAGE_FIELD = z.number().int().min(1).optional().describe("1-indexed page number (≥ 1). Default: 1.");
20
+ const PER_PAGE_FIELD = z.number().int().min(1).optional().describe("Items per page (≥ 1; server-capped). Default: 20.");
21
+ function buildEngagementsPageInfo(page) {
22
+ const totalPages = Math.max(1, Math.ceil(page.totalCount / page.perPage));
23
+ return {
24
+ currentPage: page.page,
25
+ perPage: page.perPage,
26
+ totalPages,
27
+ hasNextPage: page.page < totalPages,
28
+ };
29
+ }
11
30
  /**
12
31
  * Register the `ttctl_engagements_*` MCP tools (initial #147 spec
13
32
  * extended by #155 with `breaks_reschedule`). Tool names use the
@@ -55,10 +74,16 @@ export function registerEngagementsTools(server, ctx) {
55
74
  "",
56
75
  "Optional `keywords` is a free-text filter (AND across multiple).",
57
76
  "",
77
+ "Pagination (#375): pass `page` (1-indexed) / `perPage` to walk",
78
+ "beyond the default first slice. Returns `{ items, pageInfo }`",
79
+ "where `pageInfo` is `{ currentPage, perPage, totalPages,",
80
+ "hasNextPage }` — iterate while `hasNextPage` is true.",
81
+ "",
58
82
  "Example user prompts:",
59
83
  ' - "What are my active Toptal engagements?"',
60
84
  ' - "Show me my past Toptal contracts."',
61
85
  ' - "List all my Toptal jobs, current and past."',
86
+ ' - "Show me page 2 of my past engagements."',
62
87
  ].join("\n"),
63
88
  inputSchema: {
64
89
  status: z
@@ -66,6 +91,8 @@ export function registerEngagementsTools(server, ctx) {
66
91
  .optional()
67
92
  .describe("Filter by engagement status: active (default), past, or all"),
68
93
  keywords: z.array(z.string()).optional().describe("Free-text keyword filter (AND across multiple)"),
94
+ page: PAGE_FIELD,
95
+ perPage: PER_PAGE_FIELD,
69
96
  dryRun: DRY_RUN_FIELD,
70
97
  },
71
98
  }, async (args) => {
@@ -77,6 +104,10 @@ export function registerEngagementsTools(server, ctx) {
77
104
  opts.status = args.status;
78
105
  if (args.keywords !== undefined)
79
106
  opts.keywords = args.keywords;
107
+ if (args.page !== undefined)
108
+ opts.page = args.page;
109
+ if (args.perPage !== undefined)
110
+ opts.perPage = args.perPage;
80
111
  if (args.dryRun === true) {
81
112
  // Mirror the apply-path mapping from `--status` to
82
113
  // JobActivityItemStatusGroupEnum so the preview's
@@ -88,15 +119,26 @@ export function registerEngagementsTools(server, ctx) {
88
119
  : status === "past"
89
120
  ? ["CLOSED_ENGAGEMENT"]
90
121
  : ["ACTIVE_ENGAGEMENT", "CLOSED_ENGAGEMENT"];
122
+ // Resolve page/pageSize to the same DEFAULT_* constants the
123
+ // core's apply path uses (#375), so the dry-run preview renders
124
+ // the EXACT variables the live call would send — mirroring
125
+ // `buildJobsListVariables` in `tools/jobs.ts`.
91
126
  const variables = {
92
127
  keywords: opts.keywords !== undefined && opts.keywords.length > 0 ? opts.keywords : null,
93
128
  onlyStatusGroupFilter: statusGroups,
129
+ page: opts.page ?? engagements.DEFAULT_PAGE,
130
+ pageSize: opts.perPage ?? engagements.DEFAULT_PER_PAGE,
94
131
  };
95
132
  return dryRunResponse(buildMcpDryRunPreview("JobActivityItems", "mobile-gateway", variables, auth.token));
96
133
  }
97
134
  try {
98
- const items = await engagements.list(auth.token, opts);
99
- return successResponse(items);
135
+ // Issue #375: surface pagination metadata alongside items so
136
+ // LLM callers can detect `hasNextPage` and iterate. The wrapped
137
+ // `{ items, pageInfo }` shape mirrors the `ttctl_jobs_*` tools
138
+ // (#369); `result.items` is byte-identical to the pre-#375
139
+ // bare-array payload (payload addition, not a shape break).
140
+ const page = await engagements.list(auth.token, opts);
141
+ return successResponse({ items: page.items, pageInfo: buildEngagementsPageInfo(page) });
100
142
  }
101
143
  catch (err) {
102
144
  return mapEngagementsError(err);
@@ -1 +1 @@
1
- {"version":3,"file":"engagements.js","sourceRoot":"","sources":["../../src/tools/engagements.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engagements.js","sourceRoot":"","sources":["../../src/tools/engagements.ts"],"names":[],"mappings":"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"}
@@ -15,8 +15,9 @@ export type { ToolRegistrationContext } from "./_shared.js";
15
15
  * sub-domain registering its full leaf set) + 8 `profile.portfolio` +
16
16
  * 4 `profile.visas` + 2 `profile.resume` (#75) + 6 `profile.external` +
17
17
  * 4 `profile.reviews` (#76, one tool per file) = 56 profile tools, plus
18
- * 3 `applications` (#15) + 8 `engagements` (#147 + #155 + #156) + 5 `availability`
19
- * (#146 amended) + 13 `jobs` (#148) + 3 `timesheet` (#13) = 88 tools total.
18
+ * 3 `applications` (#15) + 1 `interest_requests` (#371) + 8 `engagements`
19
+ * (#147 + #155 + #156) + 5 `availability` (#146 amended) + 13 `jobs` (#148)
20
+ * + 3 `timesheet` (#13) = 89 tools total.
20
21
  *
21
22
  * Post-#113: takes a `ToolRegistrationContext` carrying the per-session
22
23
  * auth resolvers bound to the config path captured at `buildServer()`
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAsC5D,YAAY,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,uBAAuB,GAAG,IAAI,CAkFtF"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAEzE,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAuC5D,YAAY,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAE5D;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,uBAAuB,GAAG,IAAI,CAwFtF"}