@togglhq/mcp 1.11.65 → 1.11.67

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
@@ -76,7 +76,7 @@ claude mcp add toggl-focus \
76
76
 
77
77
  ### Entity tools
78
78
 
79
- One tool per domain (for example `tasks`, `projects`, `time-blocks`, `time-entries`, `organization`). Each tool accepts:
79
+ One tool per domain (for example `tasks`, `projects`, `time-entries`, `organization`). Each tool accepts:
80
80
 
81
81
  - **`action`** (required)
82
82
  - **`data`** (optional)
package/build/cli.js CHANGED
@@ -1,5 +1,5 @@
1
1
  #!/usr/bin/env node
2
- import { a as initProductAnalytics, c as shutdownProductAnalytics, i as getProductAnalyticsDistinctId, n as runMcpCli, o as redactUnsafeSentryMessages, r as captureToolInvocation, s as resolveProductAnalyticsDistinctId } from "./src-fcnXquo_.js";
2
+ import { a as initProductAnalytics, c as shutdownProductAnalytics, i as getProductAnalyticsDistinctId, n as runMcpCli, o as redactUnsafeSentryMessages, r as captureToolInvocation, s as resolveProductAnalyticsDistinctId } from "./src-C45SLn6O.js";
3
3
  import * as Sentry from "@sentry/node";
4
4
  //#region src/analytics-tool-metadata.ts
5
5
  /**
@@ -165,7 +165,7 @@ function wrapServerWithProductAnalytics(server) {
165
165
  }
166
166
  //#endregion
167
167
  //#region src/cli.ts
168
- const packageVersion = "1.11.65";
168
+ const packageVersion = "1.11.67";
169
169
  let sentryEnabled = false;
170
170
  let productAnalyticsEnabled = false;
171
171
  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-fcnXquo_.js";
2
+ import { n as runMcpCli, t as bootstrapServer } from "./src-C45SLn6O.js";
3
3
  export { bootstrapServer, runMcpCli };
@@ -34975,29 +34975,7 @@ const ProjectSchema = /* @__PURE__ */ object({
34975
34975
  start_date: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDate())),
34976
34976
  updated_at: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime()))
34977
34977
  });
34978
- const TimeBlockPayloadSchema = /* @__PURE__ */ object({
34979
- start: /* @__PURE__ */ string(),
34980
- completed: /* @__PURE__ */ optional(/* @__PURE__ */ boolean()),
34981
- duration: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ number(), /* @__PURE__ */ minValue(0))),
34982
- outbound_sync: /* @__PURE__ */ optional(/* @__PURE__ */ boolean())
34983
- });
34984
34978
  const TimeEntryTypeSchema = /* @__PURE__ */ picklist(["activity", "break"]);
34985
- const TimeBlockSchema = /* @__PURE__ */ object({
34986
- created_at: /* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime()),
34987
- id: /* @__PURE__ */ number(),
34988
- start: /* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime()),
34989
- task_id: /* @__PURE__ */ number(),
34990
- toggl_user_id: /* @__PURE__ */ number(),
34991
- workspace_id: /* @__PURE__ */ number(),
34992
- archived_at: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime())),
34993
- calendar_event_id: /* @__PURE__ */ optional(/* @__PURE__ */ number()),
34994
- completed_at: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime())),
34995
- deleted_at: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime())),
34996
- description: /* @__PURE__ */ optional(/* @__PURE__ */ string()),
34997
- duration: /* @__PURE__ */ optional(/* @__PURE__ */ number()),
34998
- timezone: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ description("Timezone is the creator's IANA timezone snapshotted at creation; NULL when unresolved."))),
34999
- updated_at: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime()))
35000
- });
35001
34979
  const BillableSourceSchema = /* @__PURE__ */ picklist(["manual", "task_default"]);
35002
34980
  const TimeEntrySchema = /* @__PURE__ */ object({
35003
34981
  created_at: /* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime()),
@@ -35128,28 +35106,6 @@ const PaginatedStatussSchema = /* @__PURE__ */ object({
35128
35106
  page: /* @__PURE__ */ number(),
35129
35107
  per_page: /* @__PURE__ */ number()
35130
35108
  });
35131
- const PaginatedTimeBlockAggregateWithTasksSchema = /* @__PURE__ */ object({
35132
- data: /* @__PURE__ */ array(/* @__PURE__ */ object({
35133
- created_at: /* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime()),
35134
- has_time_entry: /* @__PURE__ */ boolean(),
35135
- id: /* @__PURE__ */ number(),
35136
- start: /* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime()),
35137
- task_id: /* @__PURE__ */ number(),
35138
- toggl_user_id: /* @__PURE__ */ number(),
35139
- workspace_id: /* @__PURE__ */ number(),
35140
- archived_at: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime())),
35141
- calendar_event_id: /* @__PURE__ */ optional(/* @__PURE__ */ number()),
35142
- completed_at: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime())),
35143
- deleted_at: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime())),
35144
- description: /* @__PURE__ */ optional(/* @__PURE__ */ string()),
35145
- duration: /* @__PURE__ */ optional(/* @__PURE__ */ number()),
35146
- task: /* @__PURE__ */ optional(TaskSchema),
35147
- timezone: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ description("Timezone is the creator's IANA timezone snapshotted at creation; NULL when unresolved."))),
35148
- updated_at: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime()))
35149
- })),
35150
- page: /* @__PURE__ */ number(),
35151
- per_page: /* @__PURE__ */ number()
35152
- });
35153
35109
  const PaginatedTimeEntryWithTasksSchema = /* @__PURE__ */ object({
35154
35110
  data: /* @__PURE__ */ array(/* @__PURE__ */ object({
35155
35111
  created_at: /* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime()),
@@ -35449,28 +35405,6 @@ const TaskPartialUpdatePayloadWithIDSchema = /* @__PURE__ */ object({
35449
35405
  tag_ids: /* @__PURE__ */ optional(/* @__PURE__ */ nullable(/* @__PURE__ */ array(/* @__PURE__ */ number()))),
35450
35406
  team_assignee_ids: /* @__PURE__ */ optional(/* @__PURE__ */ nullable(/* @__PURE__ */ array(/* @__PURE__ */ number())))
35451
35407
  });
35452
- const TimeBlockBulkCreatePayloadSchema = /* @__PURE__ */ object({ time_blocks: /* @__PURE__ */ pipe(/* @__PURE__ */ array(/* @__PURE__ */ object({
35453
- start: /* @__PURE__ */ string(),
35454
- task_id: /* @__PURE__ */ number(),
35455
- completed: /* @__PURE__ */ optional(/* @__PURE__ */ boolean()),
35456
- duration: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ number(), /* @__PURE__ */ minValue(0))),
35457
- outbound_sync: /* @__PURE__ */ optional(/* @__PURE__ */ boolean())
35458
- })), /* @__PURE__ */ minLength(1)) });
35459
- const TimeBlockPartialUpdatePayloadSchema = /* @__PURE__ */ object({
35460
- completed: /* @__PURE__ */ optional(/* @__PURE__ */ boolean()),
35461
- duration: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ number(), /* @__PURE__ */ minValue(0))),
35462
- outbound_sync: /* @__PURE__ */ optional(/* @__PURE__ */ boolean()),
35463
- start: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime())),
35464
- task_id: /* @__PURE__ */ optional(/* @__PURE__ */ number())
35465
- });
35466
- const TimeBlockPartialUpdatePayloadWithIDSchema = /* @__PURE__ */ object({
35467
- id: /* @__PURE__ */ number(),
35468
- completed: /* @__PURE__ */ optional(/* @__PURE__ */ boolean()),
35469
- duration: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ number(), /* @__PURE__ */ minValue(0))),
35470
- outbound_sync: /* @__PURE__ */ optional(/* @__PURE__ */ boolean()),
35471
- start: /* @__PURE__ */ optional(/* @__PURE__ */ pipe(/* @__PURE__ */ string(), /* @__PURE__ */ isoDateTime())),
35472
- task_id: /* @__PURE__ */ optional(/* @__PURE__ */ number())
35473
- });
35474
35408
  const TimeEntryBulkCreatePayloadSchema = /* @__PURE__ */ object({
35475
35409
  type: /* @__PURE__ */ pipe(TimeEntryTypeSchema, /* @__PURE__ */ description("The type of time entry. This could either be an activity, or a break.")),
35476
35410
  billable: /* @__PURE__ */ optional(/* @__PURE__ */ boolean()),
@@ -38042,104 +37976,6 @@ async function unarchiveTask(httpClient, organization_id, workspace_id, task_id,
38042
37976
  return await httpClient.post(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/unarchive`, { signal }).json();
38043
37977
  }
38044
37978
  //#endregion
38045
- //#region ../focus-queries/dist/time-blocks/requests.ts
38046
- async function getTaskTimeBlocksWithOrgClassic(httpClient, organization_id, workspace_id, task_id, { page, per_page, order_by, archived } = {}, signal) {
38047
- return await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/time-blocks`, {
38048
- signal,
38049
- searchParams: buildSearchParams$2({
38050
- page,
38051
- per_page,
38052
- order_by,
38053
- archived
38054
- })
38055
- }).json();
38056
- }
38057
- async function createTimeBlockWithOrg(httpClient, organization_id, workspace_id, task_id, data, signal) {
38058
- return await httpClient.post(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/time-blocks`, {
38059
- signal,
38060
- json: data
38061
- }).json();
38062
- }
38063
- async function getTimeBlockWithOrg(httpClient, organization_id, workspace_id, task_id, time_block_id, signal) {
38064
- return await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/time-blocks/${time_block_id}`, { signal }).json();
38065
- }
38066
- async function updateTimeBlockWithOrg(httpClient, organization_id, workspace_id, task_id, time_block_id, data, signal) {
38067
- return await httpClient.put(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/time-blocks/${time_block_id}`, {
38068
- signal,
38069
- json: data
38070
- }).json();
38071
- }
38072
- async function deleteTimeBlockWithOrg(httpClient, organization_id, workspace_id, task_id, time_block_id, outbound_sync, signal) {
38073
- return await httpClient.delete(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/time-blocks/${time_block_id}`, {
38074
- signal,
38075
- searchParams: buildSearchParams$2({ outbound_sync })
38076
- }).json();
38077
- }
38078
- async function partialUpdateTimeBlockWithOrg(httpClient, organization_id, workspace_id, task_id, time_block_id, data, signal) {
38079
- return await httpClient.patch(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/time-blocks/${time_block_id}`, {
38080
- signal,
38081
- json: data
38082
- }).json();
38083
- }
38084
- async function archiveTimeBlockWithOrg(httpClient, organization_id, workspace_id, task_id, time_block_id, signal) {
38085
- return await httpClient.post(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/time-blocks/${time_block_id}/archive`, { signal }).json();
38086
- }
38087
- async function restoreTimeBlockWithOrg(httpClient, organization_id, workspace_id, task_id, time_block_id, signal) {
38088
- return await httpClient.patch(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/time-blocks/${time_block_id}/restore`, { signal }).json();
38089
- }
38090
- async function unarchiveTimeBlockWithOrg(httpClient, organization_id, workspace_id, task_id, time_block_id, signal) {
38091
- return await httpClient.post(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/time-blocks/${time_block_id}/unarchive`, { signal }).json();
38092
- }
38093
- async function getTimeBlocksRangeWithOrgClassic(httpClient, organization_id, workspace_id, { date_from, date_to, task_id, status_id, page, per_page, archived, order_by }, signal) {
38094
- return await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/time-blocks`, {
38095
- signal,
38096
- searchParams: buildSearchParams$2({
38097
- date_from,
38098
- date_to,
38099
- task_id,
38100
- status_id,
38101
- page,
38102
- per_page,
38103
- archived,
38104
- order_by
38105
- })
38106
- }).json();
38107
- }
38108
- async function bulkCreateTimeBlockWithOrg(httpClient, organization_id, workspace_id, data, signal) {
38109
- return await httpClient.post(`organizations/${organization_id}/workspaces/${workspace_id}/time-blocks/bulk`, {
38110
- signal,
38111
- json: data
38112
- }).json();
38113
- }
38114
- async function bulkDeleteTimeBlockWithOrg(httpClient, organization_id, workspace_id, ids, outbound_sync, signal) {
38115
- return await httpClient.delete(`organizations/${organization_id}/workspaces/${workspace_id}/time-blocks/bulk`, {
38116
- signal,
38117
- searchParams: buildSearchParams$2({
38118
- ids,
38119
- outbound_sync
38120
- })
38121
- }).json();
38122
- }
38123
- async function bulkPartialUpdateTimeBlockWithOrg(httpClient, organization_id, workspace_id, data, signal) {
38124
- return await httpClient.patch(`organizations/${organization_id}/workspaces/${workspace_id}/time-blocks/bulk`, {
38125
- signal,
38126
- json: data
38127
- }).json();
38128
- }
38129
- async function getTimeBlocksRangeStreamWithOrg(httpClient, organization_id, workspace_id, { date_from, date_to, task_id, status_id, archived, order_by }, signal) {
38130
- return await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/time-blocks/stream`, {
38131
- signal,
38132
- searchParams: buildSearchParams$2({
38133
- date_from,
38134
- date_to,
38135
- task_id,
38136
- status_id,
38137
- archived,
38138
- order_by
38139
- })
38140
- }).json();
38141
- }
38142
- //#endregion
38143
37979
  //#region ../focus-queries/dist/time-entries/requests.ts
38144
37980
  async function getTaskTimeEntriesWithOrgClassic(httpClient, organization_id, workspace_id, task_id, { page, per_page, order_by, type, archived, time_block_id } = {}, signal) {
38145
37981
  return await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/time-entries`, {
@@ -38372,7 +38208,7 @@ const PublicMeEntryRequestSchema = /* @__PURE__ */ object$2({
38372
38208
  ]))
38373
38209
  });
38374
38210
  //#endregion
38375
- //#region ../../node_modules/.pnpm/@toggl+queries@2.2.63_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_3085063bba60f639e8aa7f3285add2c2/node_modules/@toggl/queries/dist/org/invitation/requests.mjs
38211
+ //#region ../../node_modules/.pnpm/@toggl+queries@2.2.64_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_9a6a00428921d756e77d8976c0226cf3/node_modules/@toggl/queries/dist/org/invitation/requests.mjs
38376
38212
  async function getInvitations(httpClient, signal) {
38377
38213
  return (await httpClient.get(`invitations`, { signal })).json();
38378
38214
  }
@@ -38389,7 +38225,7 @@ async function resendInvitation(httpClient, organization_id, organization_user_i
38389
38225
  return (await httpClient.post(`organizations/${organization_id}/invitations/${organization_user_id}/resend`, { signal })).json();
38390
38226
  }
38391
38227
  //#endregion
38392
- //#region ../../node_modules/.pnpm/@toggl+queries@2.2.63_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_3085063bba60f639e8aa7f3285add2c2/node_modules/@toggl/queries/dist/org/utils/requests.mjs
38228
+ //#region ../../node_modules/.pnpm/@toggl+queries@2.2.64_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_9a6a00428921d756e77d8976c0226cf3/node_modules/@toggl/queries/dist/org/utils/requests.mjs
38393
38229
  function buildSearchParams(params, flattenArrays = false) {
38394
38230
  const searchParams = new URLSearchParams();
38395
38231
  Object.entries(params).forEach(([key, value]) => {
@@ -38401,7 +38237,7 @@ function buildSearchParams(params, flattenArrays = false) {
38401
38237
  return searchParams;
38402
38238
  }
38403
38239
  //#endregion
38404
- //#region ../../node_modules/.pnpm/@toggl+queries@2.2.63_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_3085063bba60f639e8aa7f3285add2c2/node_modules/@toggl/queries/dist/org/organization-user/requests.mjs
38240
+ //#region ../../node_modules/.pnpm/@toggl+queries@2.2.64_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_9a6a00428921d756e77d8976c0226cf3/node_modules/@toggl/queries/dist/org/organization-user/requests.mjs
38405
38241
  async function getOrganizationUser(httpClient, organization_id, organization_user_id, signal) {
38406
38242
  return (await httpClient.get(`organizations/${organization_id}/users/${organization_user_id}`, { signal })).json();
38407
38243
  }
@@ -38415,7 +38251,7 @@ async function patchOrganizationUserActive(httpClient, organization_id, organiza
38415
38251
  return (await httpClient.patch(`organizations/${organization_id}/users/${organization_user_id}/active_status/${status}`, { signal })).json();
38416
38252
  }
38417
38253
  //#endregion
38418
- //#region ../../node_modules/.pnpm/@toggl+queries@2.2.63_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_3085063bba60f639e8aa7f3285add2c2/node_modules/@toggl/queries/dist/org/workspace/requests.mjs
38254
+ //#region ../../node_modules/.pnpm/@toggl+queries@2.2.64_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_9a6a00428921d756e77d8976c0226cf3/node_modules/@toggl/queries/dist/org/workspace/requests.mjs
38419
38255
  async function getWorkspaces(httpClient, organization_id, signal) {
38420
38256
  return (await httpClient.get(`organizations/${organization_id}/workspaces`, { signal })).json();
38421
38257
  }
@@ -38435,7 +38271,7 @@ const WorkingHoursUpdateInputSchema = /* @__PURE__ */ object$2({
38435
38271
  });
38436
38272
  const StatusOKSchema = /* @__PURE__ */ object$2({ status: /* @__PURE__ */ string$1() });
38437
38273
  //#endregion
38438
- //#region ../../node_modules/.pnpm/@toggl+queries@2.2.63_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_3085063bba60f639e8aa7f3285add2c2/node_modules/@toggl/queries/dist/org/holiday-calendar/requests.mjs
38274
+ //#region ../../node_modules/.pnpm/@toggl+queries@2.2.64_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_9a6a00428921d756e77d8976c0226cf3/node_modules/@toggl/queries/dist/org/holiday-calendar/requests.mjs
38439
38275
  async function holidayListDates(httpClient, organization_id, { year, country }, signal) {
38440
38276
  return (await httpClient.get(`holidays/organizations/${organization_id}/calendar/dates`, {
38441
38277
  signal,
@@ -38446,12 +38282,12 @@ async function holidayListDates(httpClient, organization_id, { year, country },
38446
38282
  })).json();
38447
38283
  }
38448
38284
  //#endregion
38449
- //#region ../../node_modules/.pnpm/@toggl+queries@2.2.63_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_3085063bba60f639e8aa7f3285add2c2/node_modules/@toggl/queries/dist/shared-data/status/requests.mjs
38285
+ //#region ../../node_modules/.pnpm/@toggl+queries@2.2.64_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_9a6a00428921d756e77d8976c0226cf3/node_modules/@toggl/queries/dist/shared-data/status/requests.mjs
38450
38286
  async function getStatus(httpClient, signal) {
38451
38287
  return (await httpClient.get(`shared_data/api/status`, { signal })).json();
38452
38288
  }
38453
38289
  //#endregion
38454
- //#region ../../node_modules/.pnpm/@toggl+queries@2.2.63_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_3085063bba60f639e8aa7f3285add2c2/node_modules/@toggl/queries/dist/org/timeoff/requests.mjs
38290
+ //#region ../../node_modules/.pnpm/@toggl+queries@2.2.64_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_9a6a00428921d756e77d8976c0226cf3/node_modules/@toggl/queries/dist/org/timeoff/requests.mjs
38455
38291
  async function timeoffListMyEntries(httpClient, organization_id, { from, to }, signal) {
38456
38292
  return (await httpClient.get(`timeoff/organizations/${organization_id}/me`, {
38457
38293
  signal,
@@ -38479,7 +38315,7 @@ async function timeoffDeleteMyEntry(httpClient, organization_id, id, signal) {
38479
38315
  return response.json();
38480
38316
  }
38481
38317
  //#endregion
38482
- //#region ../../node_modules/.pnpm/@toggl+queries@2.2.63_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_3085063bba60f639e8aa7f3285add2c2/node_modules/@toggl/queries/dist/shared-data/working-hours/requests.mjs
38318
+ //#region ../../node_modules/.pnpm/@toggl+queries@2.2.64_@tanstack+react-query@5.99.0_react@19.2.5__@toggl+sync@0.2.4_reac_9a6a00428921d756e77d8976c0226cf3/node_modules/@toggl/queries/dist/shared-data/working-hours/requests.mjs
38483
38319
  async function getMyWorkingHours(httpClient, organization_id, signal) {
38484
38320
  return (await httpClient.get(`shared_data/api/workinghours/${organization_id}/me`, { signal })).json();
38485
38321
  }
@@ -38504,7 +38340,7 @@ async function deleteMyWorkingHours(httpClient, organization_id, data, signal) {
38504
38340
  return response.json();
38505
38341
  }
38506
38342
  //#endregion
38507
- //#region ../cli-core/build/focus-client-Ba1HhujK.js
38343
+ //#region ../cli-core/build/focus-client-D9JzuIl3.js
38508
38344
  /** Request header the API reads to attribute traffic to MCP or CLI. */
38509
38345
  const TOGGL_CLIENT_HEADER = "X-Toggl-Client";
38510
38346
  /** Header the Focus API reads for analytics and presence `platform_origin`. */
@@ -38673,14 +38509,12 @@ async function downloadAttachment(ctx, scope, params) {
38673
38509
  const TimeOffMeUpdateInputSchema$1 = /* @__PURE__ */ intersect([/* @__PURE__ */ object$2({ timeoff_id: /* @__PURE__ */ number$2() }), PublicMeEntryRequestSchema]);
38674
38510
  const TaskPatchSchema = withCustomFieldValues(/* @__PURE__ */ partial(TaskPartialUpdatePayloadSchema));
38675
38511
  const ProjectPatchSchema = withCustomFieldValues(/* @__PURE__ */ partial(ProjectPartialUpdatePayloadSchema));
38676
- const TimeBlockPatchSchema = /* @__PURE__ */ partial(TimeBlockPartialUpdatePayloadSchema);
38677
38512
  const BulkIdsSchema = /* @__PURE__ */ object$2({
38678
38513
  ids: /* @__PURE__ */ pipe$2(/* @__PURE__ */ array$1(/* @__PURE__ */ number$2()), /* @__PURE__ */ minLength$1(1)),
38679
38514
  outbound_sync: /* @__PURE__ */ optional$1(/* @__PURE__ */ boolean$1())
38680
38515
  });
38681
38516
  const BulkTaskPatchItemsSchema = /* @__PURE__ */ pipe$2(/* @__PURE__ */ array$1(withCustomFieldValues(TaskPartialUpdatePayloadWithIDSchema)), /* @__PURE__ */ minLength$1(1));
38682
38517
  const BulkProjectPatchItemsSchema = /* @__PURE__ */ pipe$2(/* @__PURE__ */ array$1(withCustomFieldValues(ProjectPartialUpdatePayloadWithIDSchema)), /* @__PURE__ */ minLength$1(1));
38683
- const BulkTimeBlockPatchItemsSchema = /* @__PURE__ */ pipe$2(/* @__PURE__ */ array$1(TimeBlockPartialUpdatePayloadWithIDSchema), /* @__PURE__ */ minLength$1(1));
38684
38518
  const BulkTimeEntryPatchItemsSchema = /* @__PURE__ */ pipe$2(/* @__PURE__ */ array$1(TimeEntryPartialUpdatePayloadWithIDSchema$1), /* @__PURE__ */ minLength$1(1));
38685
38519
  const BulkTimeEntryCreateItemsSchema = /* @__PURE__ */ pipe$2(/* @__PURE__ */ array$1(TimeEntryBulkCreatePayloadSchema$1), /* @__PURE__ */ minLength$1(1));
38686
38520
  const BulkTimeEntryIdsSchema = /* @__PURE__ */ object$2({ ids: /* @__PURE__ */ pipe$2(/* @__PURE__ */ array$1(/* @__PURE__ */ number$2()), /* @__PURE__ */ minLength$1(1)) });
@@ -39058,71 +38892,6 @@ var FocusClient = class {
39058
38892
  return await bulkUnarchiveProjects(this.http, this.organizationIdNum, this.workspaceIdNum, input.data);
39059
38893
  });
39060
38894
  }
39061
- async listTimeBlocks(params = {}) {
39062
- const rawFrom = typeof params.date_from === "string" ? params.date_from : "";
39063
- const rawTo = typeof params.date_to === "string" ? params.date_to : "";
39064
- if (!rawFrom || !rawTo) return {
39065
- ok: false,
39066
- status: 400,
39067
- message: "date_from and date_to are required"
39068
- };
39069
- const date_from = normalizeDateFrom(rawFrom);
39070
- const date_to = normalizeDateTo(rawTo);
39071
- const response = await this.run("listTimeBlocks", () => getTimeBlocksRangeWithOrgClassic(this.http, this.organizationIdNum, this.workspaceIdNum, {
39072
- date_from,
39073
- date_to,
39074
- task_id: parseOptionalInt(params.task_id),
39075
- page: parseOptionalInt(params.page),
39076
- per_page: parseOptionalInt(params.per_page)
39077
- }));
39078
- return this.softValidateResponse("listTimeBlocks", PaginatedTimeBlockAggregateWithTasksSchema, response);
39079
- }
39080
- async getTimeBlock(taskId, timeBlockId) {
39081
- const response = await this.run("getTimeBlock", () => getTimeBlockWithOrg(this.http, this.organizationIdNum, this.workspaceIdNum, taskId, timeBlockId));
39082
- return this.softValidateResponse("getTimeBlock", TimeBlockSchema, response);
39083
- }
39084
- async createTimeBlock(taskId, payload) {
39085
- const input = validatePayload(TimeBlockPayloadSchema, payload, "createTimeBlock payload");
39086
- if (!input.ok) return input;
39087
- const response = await this.run("createTimeBlock", () => createTimeBlockWithOrg(this.http, this.organizationIdNum, this.workspaceIdNum, taskId, input.data));
39088
- return this.softValidateResponse("createTimeBlock", TimeBlockSchema, response);
39089
- }
39090
- async updateTimeBlock(taskId, timeBlockId, payload) {
39091
- const input = validatePayload(TimeBlockPatchSchema, payload, "updateTimeBlock payload");
39092
- if (!input.ok) return input;
39093
- return this.run("updateTimeBlock", async () => {
39094
- return await partialUpdateTimeBlockWithOrg(this.http, this.organizationIdNum, this.workspaceIdNum, taskId, timeBlockId, input.data);
39095
- });
39096
- }
39097
- async deleteTimeBlock(taskId, timeBlockId) {
39098
- return this.run("deleteTimeBlock", async () => {
39099
- await deleteTimeBlockWithOrg(this.http, this.organizationIdNum, this.workspaceIdNum, taskId, timeBlockId);
39100
- return null;
39101
- });
39102
- }
39103
- async bulkCreateTimeBlocks(payload) {
39104
- const input = validatePayload(TimeBlockBulkCreatePayloadSchema, payload, "bulkCreateTimeBlocks payload");
39105
- if (!input.ok) return input;
39106
- const response = await this.run("bulkCreateTimeBlocks", () => bulkCreateTimeBlockWithOrg(this.http, this.organizationIdNum, this.workspaceIdNum, input.data));
39107
- return this.softValidateResponse("bulkCreateTimeBlocks", /* @__PURE__ */ array$1(TimeBlockSchema), response);
39108
- }
39109
- async bulkPartialUpdateTimeBlocks(items) {
39110
- const input = validatePayload(BulkTimeBlockPatchItemsSchema, items, "bulkPartialUpdateTimeBlocks items");
39111
- if (!input.ok) return input;
39112
- return this.run("bulkPartialUpdateTimeBlocks", async () => {
39113
- return await bulkPartialUpdateTimeBlockWithOrg(this.http, this.organizationIdNum, this.workspaceIdNum, input.data);
39114
- });
39115
- }
39116
- async bulkDeleteTimeBlocks(ids, outbound_sync) {
39117
- const input = validatePayload(BulkIdsSchema, {
39118
- ids,
39119
- outbound_sync
39120
- }, "bulkDeleteTimeBlocks input");
39121
- if (!input.ok) return input;
39122
- return this.run("bulkDeleteTimeBlocks", async () => {
39123
- return await bulkDeleteTimeBlockWithOrg(this.http, this.organizationIdNum, this.workspaceIdNum, input.data.ids, input.data.outbound_sync);
39124
- });
39125
- }
39126
38895
  async listTimeEntries(params = {}) {
39127
38896
  const rawFrom = typeof params.date_from === "string" ? params.date_from : "";
39128
38897
  const rawTo = typeof params.date_to === "string" ? params.date_to : "";
@@ -40602,7 +40371,7 @@ function createAuthenticatedClientProxy() {
40602
40371
  } });
40603
40372
  }
40604
40373
  //#endregion
40605
- //#region ../operations/build/validation-DK7SDWIU.js
40374
+ //#region ../operations/build/validation-CLozpAO5.js
40606
40375
  const optionalNumber = /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2());
40607
40376
  const perPageField = (max) => /* @__PURE__ */ optional$1(/* @__PURE__ */ pipe$2(/* @__PURE__ */ number$2(), /* @__PURE__ */ integer(), /* @__PURE__ */ minValue$1(1), /* @__PURE__ */ maxValue$1(max), /* @__PURE__ */ description$1(`Results per page (1-${max})`)));
40608
40377
  const perPageSchema = perPageField(100);
@@ -40617,13 +40386,6 @@ const rateSchedulePayloadSchema = /* @__PURE__ */ pipe$2(/* @__PURE__ */ strictO
40617
40386
  end_date: /* @__PURE__ */ optional$1(rateDateSchema)
40618
40387
  }), /* @__PURE__ */ forward(/* @__PURE__ */ partialCheck([["start_date"], ["end_date"]], ({ start_date, end_date }) => end_date === void 0 || end_date >= start_date, "must be on or after start_date"), ["end_date"]));
40619
40388
  const tagIdFilterSchema = /* @__PURE__ */ union$1([/* @__PURE__ */ pipe$2(/* @__PURE__ */ number$2(), /* @__PURE__ */ transform$1((tagId) => [tagId])), /* @__PURE__ */ pipe$2(/* @__PURE__ */ array$1(/* @__PURE__ */ number$2()), /* @__PURE__ */ minLength$1(1))]);
40620
- const timeBlockListSchema = /* @__PURE__ */ object$2({
40621
- date_from: dateField("Range start — date-only (e.g. '2025-01-01') or RFC3339 datetime. Date-only is expanded to T00:00:00Z."),
40622
- date_to: dateField("Range end — date-only (e.g. '2025-01-07') or RFC3339 datetime. Date-only is expanded to T23:59:59Z."),
40623
- task_id: /* @__PURE__ */ optional$1(/* @__PURE__ */ pipe$2(/* @__PURE__ */ number$2(), /* @__PURE__ */ description$1("Filter by task ID"))),
40624
- page: /* @__PURE__ */ optional$1(/* @__PURE__ */ pipe$2(/* @__PURE__ */ number$2(), /* @__PURE__ */ description$1("Page number"))),
40625
- per_page: perPageSchema
40626
- });
40627
40389
  const timeEntryListSchema = /* @__PURE__ */ object$2({
40628
40390
  date_from: dateField("Range start — date-only (e.g. '2025-01-01') or RFC3339 datetime. Date-only is expanded to T00:00:00Z."),
40629
40391
  date_to: dateField("Range end — date-only (e.g. '2025-01-07') or RFC3339 datetime. Date-only is expanded to T23:59:59Z."),
@@ -40752,19 +40514,6 @@ const projectUpdateSchema = /* @__PURE__ */ object$2({
40752
40514
  project_id: /* @__PURE__ */ number$2(),
40753
40515
  payload: withCustomFieldValues(/* @__PURE__ */ partial(ProjectPartialUpdatePayloadSchema))
40754
40516
  });
40755
- const timeBlockCreateSchema = /* @__PURE__ */ object$2({
40756
- task_id: /* @__PURE__ */ number$2(),
40757
- payload: TimeBlockPayloadSchema
40758
- });
40759
- const timeBlockUpdateSchema = /* @__PURE__ */ object$2({
40760
- task_id: /* @__PURE__ */ number$2(),
40761
- time_block_id: /* @__PURE__ */ number$2(),
40762
- payload: /* @__PURE__ */ partial(TimeBlockPartialUpdatePayloadSchema)
40763
- });
40764
- const timeBlockIdSchema = /* @__PURE__ */ object$2({
40765
- task_id: /* @__PURE__ */ number$2(),
40766
- time_block_id: /* @__PURE__ */ number$2()
40767
- });
40768
40517
  const taskIdSchema = /* @__PURE__ */ object$2({ task_id: /* @__PURE__ */ number$2() });
40769
40518
  const projectIdSchema = /* @__PURE__ */ object$2({ project_id: /* @__PURE__ */ number$2() });
40770
40519
  const emptySchema$1 = /* @__PURE__ */ object$2({});
@@ -40814,7 +40563,6 @@ const bulkIdsWithOutboundSchema = /* @__PURE__ */ object$2({
40814
40563
  const bulkProjectDeleteSchema = /* @__PURE__ */ object$2({ ids: /* @__PURE__ */ pipe$2(/* @__PURE__ */ array$1(/* @__PURE__ */ number$2()), /* @__PURE__ */ minLength$1(1)) });
40815
40564
  const bulkTaskPatchBodySchema = /* @__PURE__ */ pipe$2(/* @__PURE__ */ array$1(withCustomFieldValues(TaskPartialUpdatePayloadWithIDSchema)), /* @__PURE__ */ minLength$1(1));
40816
40565
  const bulkProjectPatchBodySchema = /* @__PURE__ */ pipe$2(/* @__PURE__ */ array$1(withCustomFieldValues(ProjectPartialUpdatePayloadWithIDSchema)), /* @__PURE__ */ minLength$1(1));
40817
- const bulkTimeBlockPatchBodySchema = /* @__PURE__ */ pipe$2(/* @__PURE__ */ array$1(TimeBlockPartialUpdatePayloadWithIDSchema), /* @__PURE__ */ minLength$1(1));
40818
40566
  const bulkTimeEntryPatchBodySchema = /* @__PURE__ */ pipe$2(/* @__PURE__ */ array$1(TimeEntryPartialUpdatePayloadWithIDSchema$1), /* @__PURE__ */ minLength$1(1));
40819
40567
  const bulkTimeEntryCreateBodySchema = /* @__PURE__ */ pipe$2(/* @__PURE__ */ array$1(TimeEntryBulkCreatePayloadSchema$1), /* @__PURE__ */ minLength$1(1));
40820
40568
  const bulkTimeEntryIdsSchema = /* @__PURE__ */ object$2({ ids: /* @__PURE__ */ pipe$2(/* @__PURE__ */ array$1(/* @__PURE__ */ number$2()), /* @__PURE__ */ minLength$1(1)) });
@@ -40917,7 +40665,7 @@ const compositeOverrides = {
40917
40665
  mcp: { entityTool: "projects" }
40918
40666
  },
40919
40667
  "focus.composite.create-task": {
40920
- description: "Create a task with related data such as subtasks, time blocks, and an initial time entry.",
40668
+ description: "Create a task with related data such as subtasks and an initial time entry.",
40921
40669
  cli: {
40922
40670
  group: ["tasks"],
40923
40671
  command: "create-with-children",
@@ -41506,103 +41254,6 @@ const taskOverrides = {
41506
41254
  }]
41507
41255
  }
41508
41256
  };
41509
- const timeBlockOverrides = {
41510
- "focus.time-blocks.list": {
41511
- agentGuidance: "Returns scheduled time blocks in a date range. Requires date_from and date_to. Accepts date-only strings (YYYY-MM-DD) or RFC3339 datetimes — date-only is automatically expanded: date_from to T00:00:00Z, date_to to T23:59:59Z. Results include associated task summaries.",
41512
- examples: [{
41513
- description: "List time blocks for a date range (date-only, expanded to full-day range)",
41514
- data: {
41515
- date_from: "2025-01-01",
41516
- date_to: "2025-01-07"
41517
- }
41518
- }, {
41519
- description: "List time blocks with explicit RFC3339 timestamps",
41520
- data: {
41521
- date_from: "2025-01-01T00:00:00Z",
41522
- date_to: "2025-01-07T23:59:59Z"
41523
- }
41524
- }]
41525
- },
41526
- "focus.time-blocks.get": {
41527
- agentGuidance: "Fetch a single time block by task ID and time block ID.",
41528
- examples: [{
41529
- description: "Get a time block",
41530
- data: {
41531
- task_id: 12345,
41532
- time_block_id: 67890
41533
- }
41534
- }]
41535
- },
41536
- "focus.time-blocks.create": {
41537
- agentGuidance: "Required: task_id and payload.start (ISO 8601 datetime). Optionally set payload.duration (minutes) and payload.completed.",
41538
- examples: [{
41539
- description: "Schedule a 1-hour time block",
41540
- data: {
41541
- task_id: 12345,
41542
- payload: {
41543
- start: "2025-01-15T09:00:00Z",
41544
- duration: 60
41545
- }
41546
- }
41547
- }]
41548
- },
41549
- "focus.time-blocks.update": {
41550
- agentGuidance: "Partial update — provide task_id, time_block_id, and fields to change in payload.",
41551
- examples: [{
41552
- description: "Mark a time block as completed",
41553
- data: {
41554
- task_id: 12345,
41555
- time_block_id: 67890,
41556
- payload: { completed: true }
41557
- }
41558
- }]
41559
- },
41560
- "focus.time-blocks.delete": {
41561
- agentGuidance: "Permanently removes the scheduled time block from the task.",
41562
- examples: [{
41563
- description: "Delete a time block",
41564
- data: {
41565
- task_id: 12345,
41566
- time_block_id: 67890
41567
- }
41568
- }]
41569
- },
41570
- "focus.time-blocks.bulk-create": {
41571
- agentGuidance: "Body shape: { time_blocks: [{ task_id, start, duration?, completed? }, ...] }. Creates many blocks in one request.",
41572
- examples: [{
41573
- description: "Schedule two blocks",
41574
- data: { time_blocks: [{
41575
- task_id: 12345,
41576
- start: "2025-01-15T09:00:00Z",
41577
- duration: 60
41578
- }, {
41579
- task_id: 12345,
41580
- start: "2025-01-15T11:00:00Z",
41581
- duration: 30
41582
- }] }
41583
- }]
41584
- },
41585
- "focus.time-blocks.bulk-patch": {
41586
- agentGuidance: "JSON array of { id: timeBlockId, ...partial fields }; same fields as single time-block update.",
41587
- examples: [{
41588
- description: "Mark two blocks complete",
41589
- data: [{
41590
- id: 101,
41591
- completed: true
41592
- }, {
41593
- id: 102,
41594
- completed: true
41595
- }]
41596
- }]
41597
- },
41598
- "focus.time-blocks.bulk-delete": {
41599
- agentGuidance: "Deletes time blocks by numeric id list in one HTTP call (not task_id/time_block_id pairs).",
41600
- examples: [{
41601
- description: "Delete two blocks",
41602
- data: { ids: [101, 102] }
41603
- }]
41604
- }
41605
- };
41606
41257
  const timeEntryOverrides = {
41607
41258
  "focus.time-entries.list": {
41608
41259
  agentGuidance: "Returns tracked time entries in a date range, including taskless entries (tracked on a project with no task). Requires date_from and date_to. Accepts date-only strings (YYYY-MM-DD) or RFC3339 datetimes — date-only is automatically expanded: date_from to T00:00:00Z, date_to to T23:59:59Z. Optional project_id keeps only entries on that project (sent to the API; client also scans up to 50 list pages of 100, then slices page/per_page; not a full workspace scan). If truncated is true, more unfiltered rows exist than were scanned — narrow date_from/date_to. Pass include_taskless:false to hide taskless rows. Includes task and project context.",
@@ -43135,6 +42786,104 @@ async function getProjectSuggestionsForMultipleTasks(httpClient, organization_id
43135
42786
  }).json();
43136
42787
  }
43137
42788
  //#endregion
42789
+ //#region ../focus-queries/dist/time-blocks/requests.ts
42790
+ async function getTaskTimeBlocksWithOrgClassic(httpClient, organization_id, workspace_id, task_id, { page, per_page, order_by, archived } = {}, signal) {
42791
+ return await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/time-blocks`, {
42792
+ signal,
42793
+ searchParams: buildSearchParams$2({
42794
+ page,
42795
+ per_page,
42796
+ order_by,
42797
+ archived
42798
+ })
42799
+ }).json();
42800
+ }
42801
+ async function createTimeBlockWithOrg(httpClient, organization_id, workspace_id, task_id, data, signal) {
42802
+ return await httpClient.post(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/time-blocks`, {
42803
+ signal,
42804
+ json: data
42805
+ }).json();
42806
+ }
42807
+ async function getTimeBlockWithOrg(httpClient, organization_id, workspace_id, task_id, time_block_id, signal) {
42808
+ return await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/time-blocks/${time_block_id}`, { signal }).json();
42809
+ }
42810
+ async function updateTimeBlockWithOrg(httpClient, organization_id, workspace_id, task_id, time_block_id, data, signal) {
42811
+ return await httpClient.put(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/time-blocks/${time_block_id}`, {
42812
+ signal,
42813
+ json: data
42814
+ }).json();
42815
+ }
42816
+ async function deleteTimeBlockWithOrg(httpClient, organization_id, workspace_id, task_id, time_block_id, outbound_sync, signal) {
42817
+ return await httpClient.delete(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/time-blocks/${time_block_id}`, {
42818
+ signal,
42819
+ searchParams: buildSearchParams$2({ outbound_sync })
42820
+ }).json();
42821
+ }
42822
+ async function partialUpdateTimeBlockWithOrg(httpClient, organization_id, workspace_id, task_id, time_block_id, data, signal) {
42823
+ return await httpClient.patch(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/time-blocks/${time_block_id}`, {
42824
+ signal,
42825
+ json: data
42826
+ }).json();
42827
+ }
42828
+ async function archiveTimeBlockWithOrg(httpClient, organization_id, workspace_id, task_id, time_block_id, signal) {
42829
+ return await httpClient.post(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/time-blocks/${time_block_id}/archive`, { signal }).json();
42830
+ }
42831
+ async function restoreTimeBlockWithOrg(httpClient, organization_id, workspace_id, task_id, time_block_id, signal) {
42832
+ return await httpClient.patch(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/time-blocks/${time_block_id}/restore`, { signal }).json();
42833
+ }
42834
+ async function unarchiveTimeBlockWithOrg(httpClient, organization_id, workspace_id, task_id, time_block_id, signal) {
42835
+ return await httpClient.post(`organizations/${organization_id}/workspaces/${workspace_id}/tasks/${task_id}/time-blocks/${time_block_id}/unarchive`, { signal }).json();
42836
+ }
42837
+ async function getTimeBlocksRangeWithOrgClassic(httpClient, organization_id, workspace_id, { date_from, date_to, task_id, status_id, page, per_page, archived, order_by }, signal) {
42838
+ return await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/time-blocks`, {
42839
+ signal,
42840
+ searchParams: buildSearchParams$2({
42841
+ date_from,
42842
+ date_to,
42843
+ task_id,
42844
+ status_id,
42845
+ page,
42846
+ per_page,
42847
+ archived,
42848
+ order_by
42849
+ })
42850
+ }).json();
42851
+ }
42852
+ async function bulkCreateTimeBlockWithOrg(httpClient, organization_id, workspace_id, data, signal) {
42853
+ return await httpClient.post(`organizations/${organization_id}/workspaces/${workspace_id}/time-blocks/bulk`, {
42854
+ signal,
42855
+ json: data
42856
+ }).json();
42857
+ }
42858
+ async function bulkDeleteTimeBlockWithOrg(httpClient, organization_id, workspace_id, ids, outbound_sync, signal) {
42859
+ return await httpClient.delete(`organizations/${organization_id}/workspaces/${workspace_id}/time-blocks/bulk`, {
42860
+ signal,
42861
+ searchParams: buildSearchParams$2({
42862
+ ids,
42863
+ outbound_sync
42864
+ })
42865
+ }).json();
42866
+ }
42867
+ async function bulkPartialUpdateTimeBlockWithOrg(httpClient, organization_id, workspace_id, data, signal) {
42868
+ return await httpClient.patch(`organizations/${organization_id}/workspaces/${workspace_id}/time-blocks/bulk`, {
42869
+ signal,
42870
+ json: data
42871
+ }).json();
42872
+ }
42873
+ async function getTimeBlocksRangeStreamWithOrg(httpClient, organization_id, workspace_id, { date_from, date_to, task_id, status_id, archived, order_by }, signal) {
42874
+ return await httpClient.get(`organizations/${organization_id}/workspaces/${workspace_id}/time-blocks/stream`, {
42875
+ signal,
42876
+ searchParams: buildSearchParams$2({
42877
+ date_from,
42878
+ date_to,
42879
+ task_id,
42880
+ status_id,
42881
+ archived,
42882
+ order_by
42883
+ })
42884
+ }).json();
42885
+ }
42886
+ //#endregion
43138
42887
  //#region ../focus-queries/dist/time-entry-constraints/requests.ts
43139
42888
  async function getTimeEntryConstraints(httpClient, workspace_id, signal) {
43140
42889
  return await httpClient.get(`workspaces/${workspace_id}/time-entry-constraints`, { signal }).json();
@@ -50978,10 +50727,22 @@ const generatedFocusOperations = [
50978
50727
  interactive: "default"
50979
50728
  },
50980
50729
  mcp: { entityTool: "time-blocks" },
50981
- inputSchema: TimeBlockBulkCreatePayloadSchema,
50730
+ inputSchema: /* @__PURE__ */ looseObject({ payload: /* @__PURE__ */ looseObject({ time_blocks: /* @__PURE__ */ array$1(/* @__PURE__ */ looseObject({
50731
+ start: apiDateTimeString,
50732
+ task_id: /* @__PURE__ */ number$2(),
50733
+ completed: /* @__PURE__ */ optional$1(/* @__PURE__ */ boolean$1()),
50734
+ duration: /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2()),
50735
+ outbound_sync: /* @__PURE__ */ optional$1(/* @__PURE__ */ boolean$1())
50736
+ })) }) }),
50982
50737
  execute: (input, { client }) => {
50983
50738
  const data = input;
50984
- return client.bulkCreateTimeBlocks(data);
50739
+ return client.runGeneratedRequest("bulkCreateTimeBlockWithOrg", () => callGeneratedRequest(bulkCreateTimeBlockWithOrg, [
50740
+ client.httpClient,
50741
+ client.organizationId,
50742
+ client.workspaceIdNumber,
50743
+ data.payload ?? data.data ?? data,
50744
+ void 0
50745
+ ]));
50985
50746
  }
50986
50747
  },
50987
50748
  {
@@ -50999,31 +50760,47 @@ const generatedFocusOperations = [
50999
50760
  interactive: "default"
51000
50761
  },
51001
50762
  mcp: { entityTool: "time-blocks" },
51002
- inputSchema: bulkIdsWithOutboundSchema,
50763
+ inputSchema: /* @__PURE__ */ looseObject({
50764
+ ids: /* @__PURE__ */ array$1(/* @__PURE__ */ number$2()),
50765
+ outbound_sync: /* @__PURE__ */ optional$1(/* @__PURE__ */ boolean$1())
50766
+ }),
51003
50767
  execute: (input, { client }) => {
51004
50768
  const data = input;
51005
- return client.bulkDeleteTimeBlocks(data.ids, data.outbound_sync);
50769
+ return client.runGeneratedRequest("bulkDeleteTimeBlockWithOrg", () => callGeneratedRequest(bulkDeleteTimeBlockWithOrg, [
50770
+ client.httpClient,
50771
+ client.organizationId,
50772
+ client.workspaceIdNumber,
50773
+ data.ids,
50774
+ data.outbound_sync,
50775
+ void 0
50776
+ ]));
51006
50777
  }
51007
50778
  },
51008
50779
  {
51009
- id: "focus.time-blocks.bulk-patch",
50780
+ id: "focus.time-blocks.bulk-partial-update",
51010
50781
  family: "focus",
51011
50782
  resource: "time-blocks",
51012
- action: "bulk-patch",
51013
- title: "Bulk Patch Time Blocks",
51014
- description: "Bulk Patch Time Blocks.",
50783
+ action: "bulk-partial-update",
50784
+ title: "Bulk Partial Update Time Blocks",
50785
+ description: "Bulk Partial Update Time Blocks.",
51015
50786
  safety: "update",
51016
50787
  destructive: false,
51017
50788
  cli: {
51018
50789
  group: ["time-blocks", "bulk"],
51019
- command: "patch",
51020
- interactive: "default"
50790
+ command: "partial-update",
50791
+ interactive: "hidden"
51021
50792
  },
51022
50793
  mcp: { entityTool: "time-blocks" },
51023
- inputSchema: bulkTimeBlockPatchBodySchema,
50794
+ inputSchema: /* @__PURE__ */ looseObject({ payload: /* @__PURE__ */ unknown$1() }),
51024
50795
  execute: (input, { client }) => {
51025
50796
  const data = input;
51026
- return client.bulkPartialUpdateTimeBlocks(data);
50797
+ return client.runGeneratedRequest("bulkPartialUpdateTimeBlockWithOrg", () => callGeneratedRequest(bulkPartialUpdateTimeBlockWithOrg, [
50798
+ client.httpClient,
50799
+ client.organizationId,
50800
+ client.workspaceIdNumber,
50801
+ data.payload ?? data.data ?? data,
50802
+ void 0
50803
+ ]));
51027
50804
  }
51028
50805
  },
51029
50806
  {
@@ -51041,10 +50818,25 @@ const generatedFocusOperations = [
51041
50818
  interactive: "default"
51042
50819
  },
51043
50820
  mcp: { entityTool: "time-blocks" },
51044
- inputSchema: timeBlockCreateSchema,
50821
+ inputSchema: /* @__PURE__ */ looseObject({
50822
+ payload: /* @__PURE__ */ looseObject({
50823
+ start: apiDateTimeString,
50824
+ completed: /* @__PURE__ */ optional$1(/* @__PURE__ */ boolean$1()),
50825
+ duration: /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2()),
50826
+ outbound_sync: /* @__PURE__ */ optional$1(/* @__PURE__ */ boolean$1())
50827
+ }),
50828
+ task_id: /* @__PURE__ */ number$2()
50829
+ }),
51045
50830
  execute: (input, { client }) => {
51046
50831
  const data = input;
51047
- return client.createTimeBlock(data.task_id, data.payload);
50832
+ return client.runGeneratedRequest("createTimeBlockWithOrg", () => callGeneratedRequest(createTimeBlockWithOrg, [
50833
+ client.httpClient,
50834
+ client.organizationId,
50835
+ client.workspaceIdNumber,
50836
+ data.task_id,
50837
+ data.payload ?? data.data ?? data,
50838
+ void 0
50839
+ ]));
51048
50840
  }
51049
50841
  },
51050
50842
  {
@@ -51062,10 +50854,22 @@ const generatedFocusOperations = [
51062
50854
  interactive: "default"
51063
50855
  },
51064
50856
  mcp: { entityTool: "time-blocks" },
51065
- inputSchema: timeBlockIdSchema,
50857
+ inputSchema: /* @__PURE__ */ looseObject({
50858
+ outbound_sync: /* @__PURE__ */ optional$1(/* @__PURE__ */ boolean$1()),
50859
+ task_id: /* @__PURE__ */ number$2(),
50860
+ time_block_id: /* @__PURE__ */ number$2()
50861
+ }),
51066
50862
  execute: (input, { client }) => {
51067
50863
  const data = input;
51068
- return client.deleteTimeBlock(data.task_id, data.time_block_id);
50864
+ return client.runGeneratedRequest("deleteTimeBlockWithOrg", () => callGeneratedRequest(deleteTimeBlockWithOrg, [
50865
+ client.httpClient,
50866
+ client.organizationId,
50867
+ client.workspaceIdNumber,
50868
+ data.task_id,
50869
+ data.time_block_id,
50870
+ data.outbound_sync,
50871
+ void 0
50872
+ ]));
51069
50873
  }
51070
50874
  },
51071
50875
  {
@@ -51083,10 +50887,56 @@ const generatedFocusOperations = [
51083
50887
  interactive: "available"
51084
50888
  },
51085
50889
  mcp: { entityTool: "time-blocks" },
51086
- inputSchema: timeBlockIdSchema,
50890
+ inputSchema: /* @__PURE__ */ looseObject({
50891
+ task_id: /* @__PURE__ */ number$2(),
50892
+ time_block_id: /* @__PURE__ */ number$2()
50893
+ }),
50894
+ execute: (input, { client }) => {
50895
+ const data = input;
50896
+ return client.runGeneratedRequest("getTimeBlockWithOrg", () => callGeneratedRequest(getTimeBlockWithOrg, [
50897
+ client.httpClient,
50898
+ client.organizationId,
50899
+ client.workspaceIdNumber,
50900
+ data.task_id,
50901
+ data.time_block_id,
50902
+ void 0
50903
+ ]));
50904
+ }
50905
+ },
50906
+ {
50907
+ id: "focus.time-blocks.get-range",
50908
+ family: "focus",
50909
+ resource: "time-blocks",
50910
+ action: "get-range",
50911
+ title: "Get Range Time Blocks",
50912
+ description: "Get Range Time Blocks.",
50913
+ safety: "read",
50914
+ destructive: false,
50915
+ cli: {
50916
+ group: ["time-blocks"],
50917
+ command: "get-range",
50918
+ interactive: "hidden"
50919
+ },
50920
+ mcp: { entityTool: "time-blocks" },
50921
+ inputSchema: /* @__PURE__ */ looseObject({
50922
+ archived: /* @__PURE__ */ unknown$1(),
50923
+ date_from: /* @__PURE__ */ unknown$1(),
50924
+ date_to: /* @__PURE__ */ unknown$1(),
50925
+ order_by: /* @__PURE__ */ unknown$1(),
50926
+ page: /* @__PURE__ */ number$2(),
50927
+ per_page: /* @__PURE__ */ unknown$1(),
50928
+ status_id: /* @__PURE__ */ number$2(),
50929
+ task_id: /* @__PURE__ */ number$2()
50930
+ }),
51087
50931
  execute: (input, { client }) => {
51088
50932
  const data = input;
51089
- return client.getTimeBlock(data.task_id, data.time_block_id);
50933
+ return client.runGeneratedRequest("getTimeBlocksRangeWithOrgClassic", () => callGeneratedRequest(getTimeBlocksRangeWithOrgClassic, [
50934
+ client.httpClient,
50935
+ client.organizationId,
50936
+ client.workspaceIdNumber,
50937
+ data,
50938
+ void 0
50939
+ ]));
51090
50940
  }
51091
50941
  },
51092
50942
  {
@@ -51158,24 +51008,42 @@ const generatedFocusOperations = [
51158
51008
  }
51159
51009
  },
51160
51010
  {
51161
- id: "focus.time-blocks.list",
51011
+ id: "focus.time-blocks.partial-update",
51162
51012
  family: "focus",
51163
51013
  resource: "time-blocks",
51164
- action: "list",
51165
- title: "List Time Blocks",
51166
- description: "List Time Blocks.",
51167
- safety: "read",
51014
+ action: "partial-update",
51015
+ title: "Partial Update Time Blocks",
51016
+ description: "Partial Update Time Blocks.",
51017
+ safety: "update",
51168
51018
  destructive: false,
51169
51019
  cli: {
51170
51020
  group: ["time-blocks"],
51171
- command: "list",
51172
- interactive: "available"
51021
+ command: "partial-update",
51022
+ interactive: "default"
51173
51023
  },
51174
51024
  mcp: { entityTool: "time-blocks" },
51175
- inputSchema: timeBlockListSchema,
51025
+ inputSchema: /* @__PURE__ */ looseObject({
51026
+ payload: /* @__PURE__ */ looseObject({
51027
+ completed: /* @__PURE__ */ optional$1(/* @__PURE__ */ boolean$1()),
51028
+ duration: /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2()),
51029
+ outbound_sync: /* @__PURE__ */ optional$1(/* @__PURE__ */ boolean$1()),
51030
+ start: /* @__PURE__ */ optional$1(apiDateTimeString),
51031
+ task_id: /* @__PURE__ */ optional$1(/* @__PURE__ */ number$2())
51032
+ }),
51033
+ task_id: /* @__PURE__ */ number$2(),
51034
+ time_block_id: /* @__PURE__ */ number$2()
51035
+ }),
51176
51036
  execute: (input, { client }) => {
51177
51037
  const data = input;
51178
- return client.listTimeBlocks(data);
51038
+ return client.runGeneratedRequest("partialUpdateTimeBlockWithOrg", () => callGeneratedRequest(partialUpdateTimeBlockWithOrg, [
51039
+ client.httpClient,
51040
+ client.organizationId,
51041
+ client.workspaceIdNumber,
51042
+ data.task_id,
51043
+ data.time_block_id,
51044
+ data.payload ?? data.data ?? data,
51045
+ void 0
51046
+ ]));
51179
51047
  }
51180
51048
  },
51181
51049
  {
@@ -51255,27 +51123,6 @@ const generatedFocusOperations = [
51255
51123
  interactive: "default"
51256
51124
  },
51257
51125
  mcp: { entityTool: "time-blocks" },
51258
- inputSchema: timeBlockUpdateSchema,
51259
- execute: (input, { client }) => {
51260
- const data = input;
51261
- return client.updateTimeBlock(data.task_id, data.time_block_id, data.payload);
51262
- }
51263
- },
51264
- {
51265
- id: "focus.time-blocks.update-with-org",
51266
- family: "focus",
51267
- resource: "time-blocks",
51268
- action: "update-with-org",
51269
- title: "Update With Org Time Blocks",
51270
- description: "Update With Org Time Blocks.",
51271
- safety: "update",
51272
- destructive: false,
51273
- cli: {
51274
- group: ["time-blocks"],
51275
- command: "update-with-org",
51276
- interactive: "default"
51277
- },
51278
- mcp: { entityTool: "time-blocks" },
51279
51126
  inputSchema: /* @__PURE__ */ looseObject({
51280
51127
  payload: /* @__PURE__ */ looseObject({
51281
51128
  start: apiDateTimeString,
@@ -53785,7 +53632,6 @@ const focusOperationOverrides = {
53785
53632
  ...projectAttachmentOverrides,
53786
53633
  ...rateOverrides,
53787
53634
  ...readOnlyPostOverrides,
53788
- ...timeBlockOverrides,
53789
53635
  ...timeEntryOverrides,
53790
53636
  ...versionOverrides,
53791
53637
  ...statusOverrides,
@@ -53860,7 +53706,7 @@ Entity mutations and \`profile-remove\` issue a \`confirm_token\` on the first c
53860
53706
 
53861
53707
  - Tasks are work items; projects group tasks.
53862
53708
  - Task priority levels when setting priority: \`none\`, \`low\`, \`medium\`, \`high\`.
53863
- - Time blocks are planned calendar time; time entries are tracked time.
53709
+ - Time entries are tracked time.
53864
53710
  `;
53865
53711
  if (options.authenticated) return `You are connected to the Toggl 2.0 workspace ${options.workspaceLabel ?? "your workspace"}.
53866
53712
 
@@ -54877,7 +54723,7 @@ function registerWorkspaceTools(server) {
54877
54723
  //#region src/package-version.ts
54878
54724
  function mcpPackageVersion() {
54879
54725
  try {
54880
- return "1.11.65";
54726
+ return "1.11.67";
54881
54727
  } catch {
54882
54728
  return "unknown";
54883
54729
  }
@@ -55052,7 +54898,7 @@ import_main.default.config({
55052
54898
  quiet: true,
55053
54899
  ignore: ["MISSING_ENV_FILE"]
55054
54900
  });
55055
- const packageVersion = "1.11.65";
54901
+ const packageVersion = "1.11.67";
55056
54902
  function resolvePublicUrls() {
55057
54903
  return {
55058
54904
  focusApiUrl: process.env.TOGGL_FOCUS_API_URL ?? "https://focus.toggl.com",
@@ -55117,4 +54963,4 @@ function bootstrapServer(options = {}) {
55117
54963
  //#endregion
55118
54964
  export { initProductAnalytics as a, shutdownProductAnalytics as c, getProductAnalyticsDistinctId as i, runMcpCli as n, redactUnsafeSentryMessages as o, captureToolInvocation as r, resolveProductAnalyticsDistinctId as s, bootstrapServer as t };
55119
54965
 
55120
- //# sourceMappingURL=src-fcnXquo_.js.map
54966
+ //# sourceMappingURL=src-C45SLn6O.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@togglhq/mcp",
3
- "version": "1.11.65",
3
+ "version": "1.11.67",
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",
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: toggl-mcp
3
- description: Use the Toggl 2.0 MCP server to read and mutate Toggl 2.0 data (tasks, projects, time blocks, time entries, saved views, custom fields, attachments, organization and org-* domains, org-time-off-me, shared-status/holidays/working-hours tools), manage workspaces and saved profiles, authenticate, and mirror CLI-style workflows from an MCP client. Trigger when the user connects through Model Context Protocol tools rather than the terminal, or asks how to use toggl-focus MCP tools, confirm_token, dry_run, file uploads/downloads, workspace refresh, or profile switching.
3
+ description: Use the Toggl 2.0 MCP server to read and mutate Toggl 2.0 data (tasks, projects, time entries, saved views, custom fields, attachments, organization and org-* domains, org-time-off-me, shared-status/holidays/working-hours tools), manage workspaces and saved profiles, authenticate, and mirror CLI-style workflows from an MCP client. Trigger when the user connects through Model Context Protocol tools rather than the terminal, or asks how to use toggl-focus MCP tools, confirm_token, dry_run, file uploads/downloads, workspace refresh, or profile switching.
4
4
  ---
5
5
 
6
6
  # Toggl 2.0 MCP