@togglhq/mcp 1.11.95 → 1.11.97

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/build/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { a as getProductAnalyticsDistinctId, c as resolvePublicSentryDsn, i as captureToolInvocation, l as shutdownProductAnalytics, n as runMcpCli, o as initProductAnalytics, r as PUBLIC_SENTRY_PRIVACY_OPTIONS, s as resolveProductAnalyticsDistinctId } from "./src-BWlws-dv.js";
2
+ import { a as getProductAnalyticsDistinctId, c as resolvePublicSentryDsn, i as captureToolInvocation, l as shutdownProductAnalytics, n as runMcpCli, o as initProductAnalytics, r as PUBLIC_SENTRY_PRIVACY_OPTIONS, s as resolveProductAnalyticsDistinctId } from "./src-Cc9dAyM7.js";
3
3
  import * as Sentry from "@sentry/node";
4
4
  //#region src/analytics-tool-metadata.ts
5
5
  /**
@@ -162,7 +162,7 @@ function wrapServerWithProductAnalytics(server) {
162
162
  }
163
163
  //#endregion
164
164
  //#region src/cli.ts
165
- const packageVersion = "1.11.95";
165
+ const packageVersion = "1.11.97";
166
166
  let sentryEnabled = false;
167
167
  let productAnalyticsEnabled = false;
168
168
  runMcpCli({
package/build/index.js CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env node
2
- import { n as runMcpCli, t as bootstrapServer } from "./src-BWlws-dv.js";
2
+ import { n as runMcpCli, t as bootstrapServer } from "./src-Cc9dAyM7.js";
3
3
  export { bootstrapServer, runMcpCli };
@@ -32773,10 +32773,6 @@ function _joinExpects$1(values$1, separator) {
32773
32773
  */
32774
32774
  const ISO_DATE_REGEX$1 = /^\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\d|0[1-9]|3[01])$/u;
32775
32775
  /**
32776
- * [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) date-time regex.
32777
- */
32778
- const ISO_DATE_TIME_REGEX$1 = /^\d{4}-(?:0[1-9]|1[0-2])-(?:[12]\d|0[1-9]|3[01])[T ](?:0\d|1\d|2[0-3]):[0-5]\d$/u;
32779
- /**
32780
32776
  * [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) timestamp regex. Allows a
32781
32777
  * space as a date/time separator and an optional space before the UTC offset.
32782
32778
  */
@@ -32830,22 +32826,6 @@ function isoDate$1(message$1) {
32830
32826
  };
32831
32827
  }
32832
32828
  /* @__NO_SIDE_EFFECTS__ */
32833
- function isoDateTime$1(message$1) {
32834
- return {
32835
- kind: "validation",
32836
- type: "iso_date_time",
32837
- reference: isoDateTime$1,
32838
- async: false,
32839
- expects: null,
32840
- requirement: ISO_DATE_TIME_REGEX$1,
32841
- message: message$1,
32842
- "~run"(dataset, config$1) {
32843
- if (dataset.typed && !this.requirement.test(dataset.value)) _addIssue$1(this, "date-time", dataset, config$1);
32844
- return dataset;
32845
- }
32846
- };
32847
- }
32848
- /* @__NO_SIDE_EFFECTS__ */
32849
32829
  function isoTimestamp(message$1) {
32850
32830
  return {
32851
32831
  kind: "validation",
@@ -34810,14 +34790,8 @@ const TaskWithParentAndAggregationsSchema = /* @__PURE__ */ object({
34810
34790
  sub_task_total_count: /* @__PURE__ */ number(),
34811
34791
  tag_ids: /* @__PURE__ */ array(/* @__PURE__ */ number()),
34812
34792
  tags: /* @__PURE__ */ array(TagLiteSchema),
34813
- time_block_completed_count: /* @__PURE__ */ number(),
34814
- time_block_scheduled_completed_count: /* @__PURE__ */ number(),
34815
- time_block_scheduled_total_count: /* @__PURE__ */ number(),
34816
- time_block_total_count: /* @__PURE__ */ number(),
34817
34793
  time_entry_total_count: /* @__PURE__ */ number(),
34818
34794
  toggl_user_id: /* @__PURE__ */ number(),
34819
- total_blocked_time: /* @__PURE__ */ number(),
34820
- total_scheduled_blocked_time: /* @__PURE__ */ number(),
34821
34795
  total_tracked_time: /* @__PURE__ */ number(),
34822
34796
  workspace_id: /* @__PURE__ */ number(),
34823
34797
  archived_at: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime())),
@@ -38282,7 +38256,7 @@ const PublicMeEntryRequestSchema = /* @__PURE__ */ object$2({
38282
38256
  ]))
38283
38257
  });
38284
38258
  //#endregion
38285
- //#region ../../node_modules/.pnpm/@toggl+queries@2.2.93_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_8767c9c715db49250ef3e49c4f8630a0/node_modules/@toggl/queries/dist/org/invitation/requests.mjs
38259
+ //#region ../../node_modules/.pnpm/@toggl+queries@2.2.94_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_68f18c971e8f60df53ae800c6addc338/node_modules/@toggl/queries/dist/org/invitation/requests.mjs
38286
38260
  async function getInvitations(httpClient, signal) {
38287
38261
  return (await httpClient.get(`invitations`, { signal })).json();
38288
38262
  }
@@ -38299,7 +38273,7 @@ async function resendInvitation(httpClient, organization_id, organization_user_i
38299
38273
  return (await httpClient.post(`organizations/${organization_id}/invitations/${organization_user_id}/resend`, { signal })).json();
38300
38274
  }
38301
38275
  //#endregion
38302
- //#region ../../node_modules/.pnpm/@toggl+queries@2.2.93_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_8767c9c715db49250ef3e49c4f8630a0/node_modules/@toggl/queries/dist/org/utils/requests.mjs
38276
+ //#region ../../node_modules/.pnpm/@toggl+queries@2.2.94_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_68f18c971e8f60df53ae800c6addc338/node_modules/@toggl/queries/dist/org/utils/requests.mjs
38303
38277
  function buildSearchParams(params, flattenArrays = false) {
38304
38278
  const searchParams = new URLSearchParams();
38305
38279
  Object.entries(params).forEach(([key, value]) => {
@@ -38311,7 +38285,7 @@ function buildSearchParams(params, flattenArrays = false) {
38311
38285
  return searchParams;
38312
38286
  }
38313
38287
  //#endregion
38314
- //#region ../../node_modules/.pnpm/@toggl+queries@2.2.93_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_8767c9c715db49250ef3e49c4f8630a0/node_modules/@toggl/queries/dist/org/organization-user/requests.mjs
38288
+ //#region ../../node_modules/.pnpm/@toggl+queries@2.2.94_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_68f18c971e8f60df53ae800c6addc338/node_modules/@toggl/queries/dist/org/organization-user/requests.mjs
38315
38289
  async function getOrganizationUser(httpClient, organization_id, organization_user_id, signal) {
38316
38290
  return (await httpClient.get(`organizations/${organization_id}/users/${organization_user_id}`, { signal })).json();
38317
38291
  }
@@ -38325,7 +38299,7 @@ async function patchOrganizationUserActive(httpClient, organization_id, organiza
38325
38299
  return (await httpClient.patch(`organizations/${organization_id}/users/${organization_user_id}/active_status/${status}`, { signal })).json();
38326
38300
  }
38327
38301
  //#endregion
38328
- //#region ../../node_modules/.pnpm/@toggl+queries@2.2.93_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_8767c9c715db49250ef3e49c4f8630a0/node_modules/@toggl/queries/dist/org/workspace/requests.mjs
38302
+ //#region ../../node_modules/.pnpm/@toggl+queries@2.2.94_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_68f18c971e8f60df53ae800c6addc338/node_modules/@toggl/queries/dist/org/workspace/requests.mjs
38329
38303
  async function getWorkspaces(httpClient, organization_id, signal) {
38330
38304
  return (await httpClient.get(`organizations/${organization_id}/workspaces`, { signal })).json();
38331
38305
  }
@@ -38334,7 +38308,7 @@ async function getWorkspaceUserMeRoles(httpClient, organization_id, workspace_id
38334
38308
  }
38335
38309
  const WorkingHoursCreateInputSchema = /* @__PURE__ */ object$2({
38336
38310
  working_hours: /* @__PURE__ */ pipe$2(/* @__PURE__ */ number$2(), /* @__PURE__ */ maxValue$1(168)),
38337
- starting_hours: /* @__PURE__ */ optional$1(/* @__PURE__ */ pipe$2(/* @__PURE__ */ number$2(), /* @__PURE__ */ minValue$1(0), /* @__PURE__ */ maxValue$1(24))),
38311
+ starting_hours: /* @__PURE__ */ optional$1(/* @__PURE__ */ pipe$2(/* @__PURE__ */ number$2(), /* @__PURE__ */ maxValue$1(24))),
38338
38312
  weekday: /* @__PURE__ */ optional$1(/* @__PURE__ */ pipe$2(/* @__PURE__ */ number$2(), /* @__PURE__ */ minValue$1(0), /* @__PURE__ */ maxValue$1(6)))
38339
38313
  });
38340
38314
  const WorkingHoursUpdateInputSchema = /* @__PURE__ */ object$2({
@@ -38345,7 +38319,7 @@ const WorkingHoursUpdateInputSchema = /* @__PURE__ */ object$2({
38345
38319
  });
38346
38320
  const StatusOKSchema = /* @__PURE__ */ object$2({ status: /* @__PURE__ */ string$1() });
38347
38321
  //#endregion
38348
- //#region ../../node_modules/.pnpm/@toggl+queries@2.2.93_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_8767c9c715db49250ef3e49c4f8630a0/node_modules/@toggl/queries/dist/org/holiday-calendar/requests.mjs
38322
+ //#region ../../node_modules/.pnpm/@toggl+queries@2.2.94_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_68f18c971e8f60df53ae800c6addc338/node_modules/@toggl/queries/dist/org/holiday-calendar/requests.mjs
38349
38323
  async function holidayListDates(httpClient, organization_id, { year, country }, signal) {
38350
38324
  return (await httpClient.get(`holidays/organizations/${organization_id}/calendar/dates`, {
38351
38325
  signal,
@@ -38356,12 +38330,12 @@ async function holidayListDates(httpClient, organization_id, { year, country },
38356
38330
  })).json();
38357
38331
  }
38358
38332
  //#endregion
38359
- //#region ../../node_modules/.pnpm/@toggl+queries@2.2.93_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_8767c9c715db49250ef3e49c4f8630a0/node_modules/@toggl/queries/dist/shared-data/status/requests.mjs
38333
+ //#region ../../node_modules/.pnpm/@toggl+queries@2.2.94_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_68f18c971e8f60df53ae800c6addc338/node_modules/@toggl/queries/dist/shared-data/status/requests.mjs
38360
38334
  async function getStatus(httpClient, signal) {
38361
38335
  return (await httpClient.get(`shared_data/api/status`, { signal })).json();
38362
38336
  }
38363
38337
  //#endregion
38364
- //#region ../../node_modules/.pnpm/@toggl+queries@2.2.93_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_8767c9c715db49250ef3e49c4f8630a0/node_modules/@toggl/queries/dist/org/timeoff/requests.mjs
38338
+ //#region ../../node_modules/.pnpm/@toggl+queries@2.2.94_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_68f18c971e8f60df53ae800c6addc338/node_modules/@toggl/queries/dist/org/timeoff/requests.mjs
38365
38339
  async function timeoffListMyEntries(httpClient, organization_id, { from, to }, signal) {
38366
38340
  return (await httpClient.get(`timeoff/organizations/${organization_id}/me`, {
38367
38341
  signal,
@@ -38389,7 +38363,7 @@ async function timeoffDeleteMyEntry(httpClient, organization_id, id, signal) {
38389
38363
  return response.json();
38390
38364
  }
38391
38365
  //#endregion
38392
- //#region ../../node_modules/.pnpm/@toggl+queries@2.2.93_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_8767c9c715db49250ef3e49c4f8630a0/node_modules/@toggl/queries/dist/shared-data/working-hours/requests.mjs
38366
+ //#region ../../node_modules/.pnpm/@toggl+queries@2.2.94_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_68f18c971e8f60df53ae800c6addc338/node_modules/@toggl/queries/dist/shared-data/working-hours/requests.mjs
38393
38367
  async function getMyWorkingHours(httpClient, organization_id, signal) {
38394
38368
  return (await httpClient.get(`shared_data/api/workinghours/${organization_id}/me`, { signal })).json();
38395
38369
  }
@@ -43152,12 +43126,111 @@ async function getTimeoffsByUserIds(httpClient, organization_id, { user_id, star
43152
43126
  })
43153
43127
  }).json();
43154
43128
  }
43129
+ async function getTimeoffBalances(httpClient, organization_id, { user_id, category_id, date } = {}, signal) {
43130
+ return await httpClient.get(`organizations/${organization_id}/timeoff/balances`, {
43131
+ signal,
43132
+ searchParams: buildSearchParams$2({
43133
+ user_id,
43134
+ category_id,
43135
+ date
43136
+ })
43137
+ }).json();
43138
+ }
43139
+ async function createTimeoffBalanceAdjustment(httpClient, organization_id, data, signal) {
43140
+ return await httpClient.post(`organizations/${organization_id}/timeoff/balances`, {
43141
+ signal,
43142
+ json: data
43143
+ }).json();
43144
+ }
43145
+ async function importTimeoffBalances(httpClient, organization_id, data, signal) {
43146
+ return await httpClient.post(`organizations/${organization_id}/timeoff/balances/bulk`, {
43147
+ signal,
43148
+ json: data
43149
+ }).json();
43150
+ }
43155
43151
  async function getTimeoffCategories(httpClient, organization_id, signal) {
43156
43152
  return await httpClient.get(`organizations/${organization_id}/timeoff/categories`, { signal }).json();
43157
43153
  }
43154
+ async function createTimeoffCategory(httpClient, organization_id, data, signal) {
43155
+ return await httpClient.post(`organizations/${organization_id}/timeoff/categories`, {
43156
+ signal,
43157
+ json: data
43158
+ }).json();
43159
+ }
43158
43160
  async function getTimeoffCategory(httpClient, organization_id, category_id, signal) {
43159
43161
  return await httpClient.get(`organizations/${organization_id}/timeoff/categories/${category_id}`, { signal }).json();
43160
43162
  }
43163
+ async function updateTimeoffCategory(httpClient, organization_id, category_id, data, signal) {
43164
+ return await httpClient.put(`organizations/${organization_id}/timeoff/categories/${category_id}`, {
43165
+ signal,
43166
+ json: data
43167
+ }).json();
43168
+ }
43169
+ async function deleteTimeoffCategory(httpClient, organization_id, category_id, signal) {
43170
+ return await httpClient.delete(`organizations/${organization_id}/timeoff/categories/${category_id}`, { signal }).json();
43171
+ }
43172
+ async function archiveTimeoffCategory(httpClient, organization_id, category_id, signal) {
43173
+ return await httpClient.post(`organizations/${organization_id}/timeoff/categories/${category_id}/archive`, { signal }).json();
43174
+ }
43175
+ async function restoreTimeoffCategory(httpClient, organization_id, category_id, signal) {
43176
+ return await httpClient.post(`organizations/${organization_id}/timeoff/categories/${category_id}/restore`, { signal }).json();
43177
+ }
43178
+ async function getTimeoffEntriesClassic(httpClient, organization_id, { user_id, team_id, category_id, status, from, to, page, rows } = {}, signal) {
43179
+ return await httpClient.get(`organizations/${organization_id}/timeoff/entries`, {
43180
+ signal,
43181
+ searchParams: buildSearchParams$2({
43182
+ user_id,
43183
+ team_id,
43184
+ category_id,
43185
+ status,
43186
+ from,
43187
+ to,
43188
+ page,
43189
+ rows
43190
+ })
43191
+ }).json();
43192
+ }
43193
+ async function getTimeoffEntry(httpClient, organization_id, entry_id, signal) {
43194
+ return await httpClient.get(`organizations/${organization_id}/timeoff/entries/${entry_id}`, { signal }).json();
43195
+ }
43196
+ async function approveTimeoffEntry(httpClient, organization_id, entry_id, signal) {
43197
+ return await httpClient.put(`organizations/${organization_id}/timeoff/entries/${entry_id}/approve`, { signal }).json();
43198
+ }
43199
+ async function cancelTimeoffEntry(httpClient, organization_id, entry_id, signal) {
43200
+ return await httpClient.put(`organizations/${organization_id}/timeoff/entries/${entry_id}/cancel`, { signal }).json();
43201
+ }
43202
+ async function rejectTimeoffEntry(httpClient, organization_id, entry_id, data, signal) {
43203
+ return await httpClient.put(`organizations/${organization_id}/timeoff/entries/${entry_id}/reject`, {
43204
+ signal,
43205
+ json: data
43206
+ }).json();
43207
+ }
43208
+ async function getTimeoffAbsenceReport(httpClient, organization_id, { start_date, end_date, user_id, team_id, category_id, include_pending }, signal) {
43209
+ return await httpClient.get(`organizations/${organization_id}/timeoff/reports/absence`, {
43210
+ signal,
43211
+ searchParams: buildSearchParams$2({
43212
+ start_date,
43213
+ end_date,
43214
+ user_id,
43215
+ team_id,
43216
+ category_id,
43217
+ include_pending
43218
+ })
43219
+ }).json();
43220
+ }
43221
+ async function getTimeoffTimeline(httpClient, organization_id, { user_id, team_id, category_id, status, from, to } = {}, signal) {
43222
+ return await httpClient.get(`organizations/${organization_id}/timeoff/timeline`, {
43223
+ signal,
43224
+ searchParams: buildSearchParams$2({
43225
+ user_id,
43226
+ team_id,
43227
+ category_id,
43228
+ status,
43229
+ from,
43230
+ to
43231
+ })
43232
+ }).json();
43233
+ }
43161
43234
  async function getTimeoffForUser(httpClient, organization_id, user_id, { from, to }, signal) {
43162
43235
  return await httpClient.get(`organizations/${organization_id}/timeoff/users/${user_id}`, {
43163
43236
  signal,
@@ -43205,6 +43278,15 @@ async function getTimeoffBalanceChangesForUserClassic(httpClient, organization_i
43205
43278
  })
43206
43279
  }).json();
43207
43280
  }
43281
+ async function getTimeoffWhosOut(httpClient, organization_id, { start_date, end_date }, signal) {
43282
+ return await httpClient.get(`organizations/${organization_id}/timeoff/whos-out`, {
43283
+ signal,
43284
+ searchParams: buildSearchParams$2({
43285
+ start_date,
43286
+ end_date
43287
+ })
43288
+ }).json();
43289
+ }
43208
43290
  //#endregion
43209
43291
  //#region ../focus-queries/dist/timesheet-setups/requests.ts
43210
43292
  async function getTimesheetSetups(httpClient, organization_id, workspace_id, { include_discontinued, user_account_id, approver_user_account_id } = {}, signal) {
@@ -52563,6 +52645,159 @@ const generatedFocusOperations = [
52563
52645
  ]));
52564
52646
  }
52565
52647
  },
52648
+ {
52649
+ id: "focus.time-off.approve-timeoff-entry",
52650
+ family: "focus",
52651
+ resource: "time-off",
52652
+ action: "approve-timeoff-entry",
52653
+ title: "Approve Timeoff Entry Time Off",
52654
+ description: "Approve Timeoff Entry Time Off.",
52655
+ safety: "update",
52656
+ destructive: false,
52657
+ cli: {
52658
+ group: ["time-off"],
52659
+ command: "approve-timeoff-entry",
52660
+ interactive: "default"
52661
+ },
52662
+ mcp: { entityTool: "time-off" },
52663
+ inputSchema: /* @__PURE__ */ looseObject({ entry_id: /* @__PURE__ */ number$2() }),
52664
+ execute: (input, { client }) => {
52665
+ const data = input;
52666
+ return client.runGeneratedRequest("approveTimeoffEntry", () => callGeneratedRequest(approveTimeoffEntry, [
52667
+ client.httpClient,
52668
+ client.organizationId,
52669
+ data.entry_id,
52670
+ void 0
52671
+ ]));
52672
+ }
52673
+ },
52674
+ {
52675
+ id: "focus.time-off.archive-timeoff-category",
52676
+ family: "focus",
52677
+ resource: "time-off",
52678
+ action: "archive-timeoff-category",
52679
+ title: "Archive Timeoff Category Time Off",
52680
+ description: "Archive Timeoff Category Time Off.",
52681
+ safety: "update",
52682
+ destructive: false,
52683
+ cli: {
52684
+ group: ["time-off"],
52685
+ command: "archive-timeoff-category",
52686
+ interactive: "default"
52687
+ },
52688
+ mcp: { entityTool: "time-off" },
52689
+ inputSchema: /* @__PURE__ */ looseObject({ category_id: /* @__PURE__ */ number$2() }),
52690
+ execute: (input, { client }) => {
52691
+ const data = input;
52692
+ return client.runGeneratedRequest("archiveTimeoffCategory", () => callGeneratedRequest(archiveTimeoffCategory, [
52693
+ client.httpClient,
52694
+ client.organizationId,
52695
+ data.category_id,
52696
+ void 0
52697
+ ]));
52698
+ }
52699
+ },
52700
+ {
52701
+ id: "focus.time-off.cancel-timeoff-entry",
52702
+ family: "focus",
52703
+ resource: "time-off",
52704
+ action: "cancel-timeoff-entry",
52705
+ title: "Cancel Timeoff Entry Time Off",
52706
+ description: "Cancel Timeoff Entry Time Off.",
52707
+ safety: "update",
52708
+ destructive: false,
52709
+ cli: {
52710
+ group: ["time-off"],
52711
+ command: "cancel-timeoff-entry",
52712
+ interactive: "default"
52713
+ },
52714
+ mcp: { entityTool: "time-off" },
52715
+ inputSchema: /* @__PURE__ */ looseObject({ entry_id: /* @__PURE__ */ number$2() }),
52716
+ execute: (input, { client }) => {
52717
+ const data = input;
52718
+ return client.runGeneratedRequest("cancelTimeoffEntry", () => callGeneratedRequest(cancelTimeoffEntry, [
52719
+ client.httpClient,
52720
+ client.organizationId,
52721
+ data.entry_id,
52722
+ void 0
52723
+ ]));
52724
+ }
52725
+ },
52726
+ {
52727
+ id: "focus.time-off.create-timeoff-balance-adjustment",
52728
+ family: "focus",
52729
+ resource: "time-off",
52730
+ action: "create-timeoff-balance-adjustment",
52731
+ title: "Create Timeoff Balance Adjustment Time Off",
52732
+ description: "Create Timeoff Balance Adjustment Time Off.",
52733
+ safety: "create",
52734
+ destructive: false,
52735
+ cli: {
52736
+ group: ["time-off"],
52737
+ command: "create-timeoff-balance-adjustment",
52738
+ interactive: "default"
52739
+ },
52740
+ mcp: { entityTool: "time-off" },
52741
+ inputSchema: /* @__PURE__ */ looseObject({ payload: /* @__PURE__ */ looseObject({
52742
+ amount: /* @__PURE__ */ number$2(),
52743
+ time_off_category_id: /* @__PURE__ */ number$2(),
52744
+ user_id: /* @__PURE__ */ number$2(),
52745
+ date: /* @__PURE__ */ optional$1(/* @__PURE__ */ pipe$2(/* @__PURE__ */ string$1(), /* @__PURE__ */ isoDate$1())),
52746
+ note: /* @__PURE__ */ optional$1(/* @__PURE__ */ string$1())
52747
+ }) }),
52748
+ execute: (input, { client }) => {
52749
+ const data = input;
52750
+ return client.runGeneratedRequest("createTimeoffBalanceAdjustment", () => callGeneratedRequest(createTimeoffBalanceAdjustment, [
52751
+ client.httpClient,
52752
+ client.organizationId,
52753
+ data.payload ?? data.data ?? data,
52754
+ void 0
52755
+ ]));
52756
+ }
52757
+ },
52758
+ {
52759
+ id: "focus.time-off.create-timeoff-category",
52760
+ family: "focus",
52761
+ resource: "time-off",
52762
+ action: "create-timeoff-category",
52763
+ title: "Create Timeoff Category Time Off",
52764
+ description: "Create Timeoff Category Time Off.",
52765
+ safety: "create",
52766
+ destructive: false,
52767
+ cli: {
52768
+ group: ["time-off"],
52769
+ command: "create-timeoff-category",
52770
+ interactive: "default"
52771
+ },
52772
+ mcp: { entityTool: "time-off" },
52773
+ inputSchema: /* @__PURE__ */ looseObject({ payload: /* @__PURE__ */ looseObject({
52774
+ allow_negative_balance: /* @__PURE__ */ boolean$1(),
52775
+ auto_approve_under_days: /* @__PURE__ */ number$2(),
52776
+ default_amount_per_year: /* @__PURE__ */ number$2(),
52777
+ description: /* @__PURE__ */ string$1(),
52778
+ emoji: /* @__PURE__ */ string$1(),
52779
+ max_carry_over_amount: /* @__PURE__ */ number$2(),
52780
+ name: /* @__PURE__ */ string$1(),
52781
+ prorate: /* @__PURE__ */ boolean$1(),
52782
+ accrual_frequency: /* @__PURE__ */ optional$1(/* @__PURE__ */ picklist$1([
52783
+ "yearly",
52784
+ "monthly",
52785
+ "one_off"
52786
+ ])),
52787
+ allowance_type: /* @__PURE__ */ optional$1(/* @__PURE__ */ picklist$1(["limited", "unlimited"])),
52788
+ carry_over_expiry_months: /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2()),
52789
+ policy_link: /* @__PURE__ */ optional$1(/* @__PURE__ */ string$1())
52790
+ }) }),
52791
+ execute: (input, { client }) => {
52792
+ const data = input;
52793
+ return client.runGeneratedRequest("createTimeoffCategory", () => callGeneratedRequest(createTimeoffCategory, [
52794
+ client.httpClient,
52795
+ client.organizationId,
52796
+ data.payload ?? data.data ?? data,
52797
+ void 0
52798
+ ]));
52799
+ }
52800
+ },
52566
52801
  {
52567
52802
  id: "focus.time-off.create-timeoff-for-user",
52568
52803
  family: "focus",
@@ -52593,6 +52828,32 @@ const generatedFocusOperations = [
52593
52828
  ]));
52594
52829
  }
52595
52830
  },
52831
+ {
52832
+ id: "focus.time-off.delete-timeoff-category",
52833
+ family: "focus",
52834
+ resource: "time-off",
52835
+ action: "delete-timeoff-category",
52836
+ title: "Delete Timeoff Category Time Off",
52837
+ description: "Delete Timeoff Category Time Off.",
52838
+ safety: "delete",
52839
+ destructive: true,
52840
+ cli: {
52841
+ group: ["time-off"],
52842
+ command: "delete-timeoff-category",
52843
+ interactive: "default"
52844
+ },
52845
+ mcp: { entityTool: "time-off" },
52846
+ inputSchema: /* @__PURE__ */ looseObject({ category_id: /* @__PURE__ */ number$2() }),
52847
+ execute: (input, { client }) => {
52848
+ const data = input;
52849
+ return client.runGeneratedRequest("deleteTimeoffCategory", () => callGeneratedRequest(deleteTimeoffCategory, [
52850
+ client.httpClient,
52851
+ client.organizationId,
52852
+ data.category_id,
52853
+ void 0
52854
+ ]));
52855
+ }
52856
+ },
52596
52857
  {
52597
52858
  id: "focus.time-off.delete-timeoff-for-user",
52598
52859
  family: "focus",
@@ -52623,6 +52884,39 @@ const generatedFocusOperations = [
52623
52884
  ]));
52624
52885
  }
52625
52886
  },
52887
+ {
52888
+ id: "focus.time-off.get-timeoff-absence-report",
52889
+ family: "focus",
52890
+ resource: "time-off",
52891
+ action: "get-timeoff-absence-report",
52892
+ title: "Get Timeoff Absence Report Time Off",
52893
+ description: "Get Timeoff Absence Report Time Off.",
52894
+ safety: "read",
52895
+ destructive: false,
52896
+ cli: {
52897
+ group: ["time-off"],
52898
+ command: "get-timeoff-absence-report",
52899
+ interactive: "hidden"
52900
+ },
52901
+ mcp: { entityTool: "time-off" },
52902
+ inputSchema: /* @__PURE__ */ looseObject({
52903
+ category_id: /* @__PURE__ */ number$2(),
52904
+ end_date: /* @__PURE__ */ pipe$2(/* @__PURE__ */ string$1(), /* @__PURE__ */ isoDate$1()),
52905
+ include_pending: /* @__PURE__ */ unknown$1(),
52906
+ start_date: /* @__PURE__ */ pipe$2(/* @__PURE__ */ string$1(), /* @__PURE__ */ isoDate$1()),
52907
+ team_id: /* @__PURE__ */ number$2(),
52908
+ user_id: /* @__PURE__ */ number$2()
52909
+ }),
52910
+ execute: (input, { client }) => {
52911
+ const data = input;
52912
+ return client.runGeneratedRequest("getTimeoffAbsenceReport", () => callGeneratedRequest(getTimeoffAbsenceReport, [
52913
+ client.httpClient,
52914
+ client.organizationId,
52915
+ data,
52916
+ void 0
52917
+ ]));
52918
+ }
52919
+ },
52626
52920
  {
52627
52921
  id: "focus.time-off.get-timeoff-balance-changes-for-user",
52628
52922
  family: "focus",
@@ -52656,6 +52950,36 @@ const generatedFocusOperations = [
52656
52950
  ]));
52657
52951
  }
52658
52952
  },
52953
+ {
52954
+ id: "focus.time-off.get-timeoff-balances",
52955
+ family: "focus",
52956
+ resource: "time-off",
52957
+ action: "get-timeoff-balances",
52958
+ title: "Get Timeoff Balances Time Off",
52959
+ description: "Get Timeoff Balances Time Off.",
52960
+ safety: "read",
52961
+ destructive: false,
52962
+ cli: {
52963
+ group: ["time-off"],
52964
+ command: "get-timeoff-balances",
52965
+ interactive: "available"
52966
+ },
52967
+ mcp: { entityTool: "time-off" },
52968
+ inputSchema: /* @__PURE__ */ looseObject({
52969
+ category_id: /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2()),
52970
+ date: /* @__PURE__ */ optional$1(/* @__PURE__ */ pipe$2(/* @__PURE__ */ string$1(), /* @__PURE__ */ isoDate$1())),
52971
+ user_id: /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2())
52972
+ }),
52973
+ execute: (input, { client }) => {
52974
+ const data = input;
52975
+ return client.runGeneratedRequest("getTimeoffBalances", () => callGeneratedRequest(getTimeoffBalances, [
52976
+ client.httpClient,
52977
+ client.organizationId,
52978
+ data,
52979
+ void 0
52980
+ ]));
52981
+ }
52982
+ },
52659
52983
  {
52660
52984
  id: "focus.time-off.get-timeoff-balances-for-user",
52661
52985
  family: "focus",
@@ -52735,6 +53059,67 @@ const generatedFocusOperations = [
52735
53059
  ]));
52736
53060
  }
52737
53061
  },
53062
+ {
53063
+ id: "focus.time-off.get-timeoff-entries",
53064
+ family: "focus",
53065
+ resource: "time-off",
53066
+ action: "get-timeoff-entries",
53067
+ title: "Get Timeoff Entries Time Off",
53068
+ description: "Get Timeoff Entries Time Off.",
53069
+ safety: "read",
53070
+ destructive: false,
53071
+ cli: {
53072
+ group: ["time-off"],
53073
+ command: "get-timeoff-entries",
53074
+ interactive: "hidden"
53075
+ },
53076
+ mcp: { entityTool: "time-off" },
53077
+ inputSchema: /* @__PURE__ */ looseObject({
53078
+ category_id: /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2()),
53079
+ from: /* @__PURE__ */ optional$1(/* @__PURE__ */ unknown$1()),
53080
+ page: /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2()),
53081
+ rows: /* @__PURE__ */ optional$1(/* @__PURE__ */ unknown$1()),
53082
+ status: /* @__PURE__ */ optional$1(/* @__PURE__ */ unknown$1()),
53083
+ team_id: /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2()),
53084
+ to: /* @__PURE__ */ optional$1(/* @__PURE__ */ unknown$1()),
53085
+ user_id: /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2())
53086
+ }),
53087
+ execute: (input, { client }) => {
53088
+ const data = input;
53089
+ return client.runGeneratedRequest("getTimeoffEntriesClassic", () => callGeneratedRequest(getTimeoffEntriesClassic, [
53090
+ client.httpClient,
53091
+ client.organizationId,
53092
+ data,
53093
+ void 0
53094
+ ]));
53095
+ }
53096
+ },
53097
+ {
53098
+ id: "focus.time-off.get-timeoff-entry",
53099
+ family: "focus",
53100
+ resource: "time-off",
53101
+ action: "get-timeoff-entry",
53102
+ title: "Get Timeoff Entry Time Off",
53103
+ description: "Get Timeoff Entry Time Off.",
53104
+ safety: "read",
53105
+ destructive: false,
53106
+ cli: {
53107
+ group: ["time-off"],
53108
+ command: "get-timeoff-entry",
53109
+ interactive: "available"
53110
+ },
53111
+ mcp: { entityTool: "time-off" },
53112
+ inputSchema: /* @__PURE__ */ looseObject({ entry_id: /* @__PURE__ */ number$2() }),
53113
+ execute: (input, { client }) => {
53114
+ const data = input;
53115
+ return client.runGeneratedRequest("getTimeoffEntry", () => callGeneratedRequest(getTimeoffEntry, [
53116
+ client.httpClient,
53117
+ client.organizationId,
53118
+ data.entry_id,
53119
+ void 0
53120
+ ]));
53121
+ }
53122
+ },
52738
53123
  {
52739
53124
  id: "focus.time-off.get-timeoff-for-user",
52740
53125
  family: "focus",
@@ -52766,6 +53151,68 @@ const generatedFocusOperations = [
52766
53151
  ]));
52767
53152
  }
52768
53153
  },
53154
+ {
53155
+ id: "focus.time-off.get-timeoff-timeline",
53156
+ family: "focus",
53157
+ resource: "time-off",
53158
+ action: "get-timeoff-timeline",
53159
+ title: "Get Timeoff Timeline Time Off",
53160
+ description: "Get Timeoff Timeline Time Off.",
53161
+ safety: "read",
53162
+ destructive: false,
53163
+ cli: {
53164
+ group: ["time-off"],
53165
+ command: "get-timeoff-timeline",
53166
+ interactive: "hidden"
53167
+ },
53168
+ mcp: { entityTool: "time-off" },
53169
+ inputSchema: /* @__PURE__ */ looseObject({
53170
+ category_id: /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2()),
53171
+ from: /* @__PURE__ */ optional$1(/* @__PURE__ */ unknown$1()),
53172
+ status: /* @__PURE__ */ optional$1(/* @__PURE__ */ unknown$1()),
53173
+ team_id: /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2()),
53174
+ to: /* @__PURE__ */ optional$1(/* @__PURE__ */ unknown$1()),
53175
+ user_id: /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2())
53176
+ }),
53177
+ execute: (input, { client }) => {
53178
+ const data = input;
53179
+ return client.runGeneratedRequest("getTimeoffTimeline", () => callGeneratedRequest(getTimeoffTimeline, [
53180
+ client.httpClient,
53181
+ client.organizationId,
53182
+ data,
53183
+ void 0
53184
+ ]));
53185
+ }
53186
+ },
53187
+ {
53188
+ id: "focus.time-off.get-timeoff-whos-out",
53189
+ family: "focus",
53190
+ resource: "time-off",
53191
+ action: "get-timeoff-whos-out",
53192
+ title: "Get Timeoff Whos Out Time Off",
53193
+ description: "Get Timeoff Whos Out Time Off.",
53194
+ safety: "read",
53195
+ destructive: false,
53196
+ cli: {
53197
+ group: ["time-off"],
53198
+ command: "get-timeoff-whos-out",
53199
+ interactive: "available"
53200
+ },
53201
+ mcp: { entityTool: "time-off" },
53202
+ inputSchema: /* @__PURE__ */ looseObject({
53203
+ end_date: /* @__PURE__ */ pipe$2(/* @__PURE__ */ string$1(), /* @__PURE__ */ isoDate$1()),
53204
+ start_date: /* @__PURE__ */ pipe$2(/* @__PURE__ */ string$1(), /* @__PURE__ */ isoDate$1())
53205
+ }),
53206
+ execute: (input, { client }) => {
53207
+ const data = input;
53208
+ return client.runGeneratedRequest("getTimeoffWhosOut", () => callGeneratedRequest(getTimeoffWhosOut, [
53209
+ client.httpClient,
53210
+ client.organizationId,
53211
+ data,
53212
+ void 0
53213
+ ]));
53214
+ }
53215
+ },
52769
53216
  {
52770
53217
  id: "focus.time-off.get-timeoffs-by-user-ids",
52771
53218
  family: "focus",
@@ -52796,6 +53243,135 @@ const generatedFocusOperations = [
52796
53243
  ]));
52797
53244
  }
52798
53245
  },
53246
+ {
53247
+ id: "focus.time-off.import-timeoff-balances",
53248
+ family: "focus",
53249
+ resource: "time-off",
53250
+ action: "import-timeoff-balances",
53251
+ title: "Import Timeoff Balances Time Off",
53252
+ description: "Import Timeoff Balances Time Off.",
53253
+ safety: "update",
53254
+ destructive: false,
53255
+ cli: {
53256
+ group: ["time-off"],
53257
+ command: "import-timeoff-balances",
53258
+ interactive: "default"
53259
+ },
53260
+ mcp: { entityTool: "time-off" },
53261
+ inputSchema: /* @__PURE__ */ looseObject({ payload: /* @__PURE__ */ looseObject({
53262
+ category_id: /* @__PURE__ */ number$2(),
53263
+ rows: /* @__PURE__ */ array$1(/* @__PURE__ */ looseObject({
53264
+ amount: /* @__PURE__ */ number$2(),
53265
+ user_account_id: /* @__PURE__ */ number$2()
53266
+ }))
53267
+ }) }),
53268
+ execute: (input, { client }) => {
53269
+ const data = input;
53270
+ return client.runGeneratedRequest("importTimeoffBalances", () => callGeneratedRequest(importTimeoffBalances, [
53271
+ client.httpClient,
53272
+ client.organizationId,
53273
+ data.payload ?? data.data ?? data,
53274
+ void 0
53275
+ ]));
53276
+ }
53277
+ },
53278
+ {
53279
+ id: "focus.time-off.reject-timeoff-entry",
53280
+ family: "focus",
53281
+ resource: "time-off",
53282
+ action: "reject-timeoff-entry",
53283
+ title: "Reject Timeoff Entry Time Off",
53284
+ description: "Reject Timeoff Entry Time Off.",
53285
+ safety: "update",
53286
+ destructive: false,
53287
+ cli: {
53288
+ group: ["time-off"],
53289
+ command: "reject-timeoff-entry",
53290
+ interactive: "default"
53291
+ },
53292
+ mcp: { entityTool: "time-off" },
53293
+ inputSchema: /* @__PURE__ */ looseObject({
53294
+ entry_id: /* @__PURE__ */ number$2(),
53295
+ payload: /* @__PURE__ */ looseObject({ reason: /* @__PURE__ */ string$1() })
53296
+ }),
53297
+ execute: (input, { client }) => {
53298
+ const data = input;
53299
+ return client.runGeneratedRequest("rejectTimeoffEntry", () => callGeneratedRequest(rejectTimeoffEntry, [
53300
+ client.httpClient,
53301
+ client.organizationId,
53302
+ data.entry_id,
53303
+ data.payload ?? data.data ?? data,
53304
+ void 0
53305
+ ]));
53306
+ }
53307
+ },
53308
+ {
53309
+ id: "focus.time-off.restore-timeoff-category",
53310
+ family: "focus",
53311
+ resource: "time-off",
53312
+ action: "restore-timeoff-category",
53313
+ title: "Restore Timeoff Category Time Off",
53314
+ description: "Restore Timeoff Category Time Off.",
53315
+ safety: "update",
53316
+ destructive: false,
53317
+ cli: {
53318
+ group: ["time-off"],
53319
+ command: "restore-timeoff-category",
53320
+ interactive: "default"
53321
+ },
53322
+ mcp: { entityTool: "time-off" },
53323
+ inputSchema: /* @__PURE__ */ looseObject({ category_id: /* @__PURE__ */ number$2() }),
53324
+ execute: (input, { client }) => {
53325
+ const data = input;
53326
+ return client.runGeneratedRequest("restoreTimeoffCategory", () => callGeneratedRequest(restoreTimeoffCategory, [
53327
+ client.httpClient,
53328
+ client.organizationId,
53329
+ data.category_id,
53330
+ void 0
53331
+ ]));
53332
+ }
53333
+ },
53334
+ {
53335
+ id: "focus.time-off.update-timeoff-category",
53336
+ family: "focus",
53337
+ resource: "time-off",
53338
+ action: "update-timeoff-category",
53339
+ title: "Update Timeoff Category Time Off",
53340
+ description: "Update Timeoff Category Time Off.",
53341
+ safety: "update",
53342
+ destructive: false,
53343
+ cli: {
53344
+ group: ["time-off"],
53345
+ command: "update-timeoff-category",
53346
+ interactive: "default"
53347
+ },
53348
+ mcp: { entityTool: "time-off" },
53349
+ inputSchema: /* @__PURE__ */ looseObject({
53350
+ category_id: /* @__PURE__ */ number$2(),
53351
+ payload: /* @__PURE__ */ looseObject({
53352
+ allow_negative_balance: /* @__PURE__ */ boolean$1(),
53353
+ auto_approve_under_days: /* @__PURE__ */ number$2(),
53354
+ default_amount_per_year: /* @__PURE__ */ number$2(),
53355
+ description: /* @__PURE__ */ string$1(),
53356
+ emoji: /* @__PURE__ */ string$1(),
53357
+ max_carry_over_amount: /* @__PURE__ */ number$2(),
53358
+ name: /* @__PURE__ */ string$1(),
53359
+ prorate: /* @__PURE__ */ boolean$1(),
53360
+ carry_over_expiry_months: /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2()),
53361
+ policy_link: /* @__PURE__ */ optional$1(/* @__PURE__ */ string$1())
53362
+ })
53363
+ }),
53364
+ execute: (input, { client }) => {
53365
+ const data = input;
53366
+ return client.runGeneratedRequest("updateTimeoffCategory", () => callGeneratedRequest(updateTimeoffCategory, [
53367
+ client.httpClient,
53368
+ client.organizationId,
53369
+ data.category_id,
53370
+ data.payload ?? data.data ?? data,
53371
+ void 0
53372
+ ]));
53373
+ }
53374
+ },
52799
53375
  {
52800
53376
  id: "focus.time-off.update-timeoff-for-user",
52801
53377
  family: "focus",
@@ -53901,7 +54477,6 @@ const generatedFocusOperations = [
53901
54477
  },
53902
54478
  mcp: { entityTool: "users" },
53903
54479
  inputSchema: /* @__PURE__ */ looseObject({ payload: /* @__PURE__ */ looseObject({
53904
- autocomplete_task_with_time_block: /* @__PURE__ */ optional$1(/* @__PURE__ */ boolean$1()),
53905
54480
  autolog_time: /* @__PURE__ */ optional$1(/* @__PURE__ */ boolean$1()),
53906
54481
  calendar_future_defaults_to_plan: /* @__PURE__ */ optional$1(/* @__PURE__ */ boolean$1()),
53907
54482
  calendar_project_suggestion_fallback: /* @__PURE__ */ optional$1(/* @__PURE__ */ boolean$1()),
@@ -55505,7 +56080,7 @@ function registerWorkspaceTools(server) {
55505
56080
  //#region src/package-version.ts
55506
56081
  function mcpPackageVersion() {
55507
56082
  try {
55508
- return "1.11.95";
56083
+ return "1.11.97";
55509
56084
  } catch {
55510
56085
  return "unknown";
55511
56086
  }
@@ -55680,7 +56255,7 @@ import_main.default.config({
55680
56255
  quiet: true,
55681
56256
  ignore: ["MISSING_ENV_FILE"]
55682
56257
  });
55683
- const packageVersion = "1.11.95";
56258
+ const packageVersion = "1.11.97";
55684
56259
  function resolvePublicUrls() {
55685
56260
  return {
55686
56261
  focusApiUrl: process.env.TOGGL_FOCUS_API_URL ?? "https://focus.toggl.com",
@@ -55745,4 +56320,4 @@ function bootstrapServer(options = {}) {
55745
56320
  //#endregion
55746
56321
  export { getProductAnalyticsDistinctId as a, resolvePublicSentryDsn as c, captureToolInvocation as i, shutdownProductAnalytics as l, runMcpCli as n, initProductAnalytics as o, PUBLIC_SENTRY_PRIVACY_OPTIONS as r, resolveProductAnalyticsDistinctId as s, bootstrapServer as t };
55747
56322
 
55748
- //# sourceMappingURL=src-BWlws-dv.js.map
56323
+ //# sourceMappingURL=src-Cc9dAyM7.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@togglhq/mcp",
3
- "version": "1.11.95",
3
+ "version": "1.11.97",
4
4
  "description": "Toggl 2.0 MCP server for Claude Code, Claude Desktop, and other MCP clients.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",