@daghis/teamcity-mcp 2.9.0 → 2.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # Changelog
2
2
 
3
+ ## [2.11.0](https://github.com/Daghis/teamcity-mcp/compare/teamcity-mcp-v2.10.0...teamcity-mcp-v2.11.0) (2026-05-03)
4
+
5
+
6
+ ### Features
7
+
8
+ * **artifacts:** add list_build_artifacts tool for subdirectory browsing ([#489](https://github.com/Daghis/teamcity-mcp/issues/489)) ([eacad61](https://github.com/Daghis/teamcity-mcp/commit/eacad6115cbb33a6e660bd096e59869c4fcf4ea8))
9
+
10
+ ## [2.10.0](https://github.com/Daghis/teamcity-mcp/compare/teamcity-mcp-v2.9.0...teamcity-mcp-v2.10.0) (2026-04-26)
11
+
12
+
13
+ ### Features
14
+
15
+ * **tools:** disclose principal return and primary error for mutators ([#484](https://github.com/Daghis/teamcity-mcp/issues/484)) ([0a4d747](https://github.com/Daghis/teamcity-mcp/commit/0a4d7479823f034b04d4623446f71b17b4b30d49))
16
+
3
17
  ## [2.9.0](https://github.com/Daghis/teamcity-mcp/compare/teamcity-mcp-v2.8.0...teamcity-mcp-v2.9.0) (2026-04-24)
4
18
 
5
19
 
package/dist/index.js CHANGED
@@ -1205,7 +1205,7 @@ function debug2(message, meta) {
1205
1205
  // package.json
1206
1206
  var package_default = {
1207
1207
  name: "@daghis/teamcity-mcp",
1208
- version: "2.9.0",
1208
+ version: "2.11.0",
1209
1209
  description: "Model Control Protocol server for TeamCity CI/CD integration with AI coding assistants",
1210
1210
  mcpName: "io.github.Daghis/teamcity",
1211
1211
  main: "dist/index.js",
@@ -1278,7 +1278,6 @@ var package_default = {
1278
1278
  zod: "^4.3.5"
1279
1279
  },
1280
1280
  devDependencies: {
1281
- "@codecov/bundle-analyzer": "^2.0.1",
1282
1281
  "@esbuild-plugins/tsconfig-paths": "^0.1.2",
1283
1282
  "@eslint/js": "^10.0.1",
1284
1283
  "@trivago/prettier-plugin-sort-imports": "^6.0.1",
@@ -1295,7 +1294,7 @@ var package_default = {
1295
1294
  "eslint-plugin-prettier": "^5.0.1",
1296
1295
  globals: "^17.4.0",
1297
1296
  jest: "^30.1.3",
1298
- "jest-junit": "^16.0.0",
1297
+ "jest-junit": "^17.0.0",
1299
1298
  "js-yaml": "^4.1.1",
1300
1299
  prettier: "^3.1.0",
1301
1300
  "ts-jest": "^29.4.9",
@@ -1551,13 +1550,20 @@ var ArtifactManager = class _ArtifactManager {
1551
1550
  const buildLocator = toBuildLocator(buildId);
1552
1551
  const response = await this.client.modules.builds.getFilesListOfBuild(
1553
1552
  buildLocator,
1554
- void 0,
1553
+ options.path,
1555
1554
  void 0,
1556
1555
  "file(name,fullName,size,modificationTime,href,children(file(name,fullName,size,modificationTime,href)))"
1557
1556
  );
1558
1557
  const baseUrl = this.getBaseUrl();
1559
1558
  const artifactPayload = this.ensureArtifactListingResponse(response.data, buildId);
1560
- let artifacts = this.parseArtifacts(artifactPayload, buildId, options.includeNested, baseUrl);
1559
+ let artifacts = this.parseArtifacts(
1560
+ artifactPayload,
1561
+ buildId,
1562
+ options.includeNested,
1563
+ baseUrl,
1564
+ [],
1565
+ options.includeDirectories
1566
+ );
1561
1567
  artifacts = this.applyFilters(artifacts, options);
1562
1568
  if (options.limit ?? options.offset) {
1563
1569
  artifacts = this.paginate(
@@ -1789,7 +1795,7 @@ var ArtifactManager = class _ArtifactManager {
1789
1795
  }
1790
1796
  return payload;
1791
1797
  }
1792
- parseArtifacts(data, buildId, includeNested, baseUrl, parentSegments = []) {
1798
+ parseArtifacts(data, buildId, includeNested, baseUrl, parentSegments = [], includeDirectories) {
1793
1799
  const artifacts = [];
1794
1800
  const files = data.file ?? [];
1795
1801
  for (const file of files) {
@@ -1797,13 +1803,24 @@ var ArtifactManager = class _ArtifactManager {
1797
1803
  const resolvedPath = pathSegments.join("/");
1798
1804
  const isDirectory = Boolean(file.children);
1799
1805
  if (isDirectory) {
1806
+ if (includeDirectories && resolvedPath) {
1807
+ artifacts.push({
1808
+ name: file.name ?? pathSegments[pathSegments.length - 1] ?? "",
1809
+ path: resolvedPath,
1810
+ size: file.size ?? 0,
1811
+ modificationTime: file.modificationTime ?? "",
1812
+ downloadUrl: `${baseUrl}/app/rest/builds/id:${buildId}/artifacts/content/${this.encodeArtifactPath(pathSegments)}`,
1813
+ isDirectory: true
1814
+ });
1815
+ }
1800
1816
  if (includeNested && file.children) {
1801
1817
  const nested = this.parseArtifacts(
1802
1818
  file.children,
1803
1819
  buildId,
1804
1820
  includeNested,
1805
1821
  baseUrl,
1806
- pathSegments
1822
+ pathSegments,
1823
+ includeDirectories
1807
1824
  );
1808
1825
  artifacts.push(...nested);
1809
1826
  }
@@ -39284,7 +39301,7 @@ var DEV_TOOLS = [
39284
39301
  idempotentHint: true,
39285
39302
  openWorldHint: false
39286
39303
  },
39287
- description: "Switch MCP mode at runtime. Clients are notified when the tool list changes.",
39304
+ description: "Switch MCP mode at runtime. Returns previous and current modes with the updated tool count; idempotent and notifies clients of the list change.",
39288
39305
  inputSchema: {
39289
39306
  type: "object",
39290
39307
  properties: {
@@ -39580,7 +39597,7 @@ var DEV_TOOLS = [
39580
39597
  idempotentHint: false,
39581
39598
  openWorldHint: true
39582
39599
  },
39583
- description: "Trigger a new build. Returns the queued build id; the build runs asynchronously, use `wait_for_build` to monitor.",
39600
+ description: "Trigger a new build; runs asynchronously, use `wait_for_build` to monitor. Returns the queued build id; returns 404 if buildTypeId is unknown.",
39584
39601
  inputSchema: {
39585
39602
  type: "object",
39586
39603
  properties: {
@@ -39732,7 +39749,7 @@ var DEV_TOOLS = [
39732
39749
  idempotentHint: false,
39733
39750
  openWorldHint: true
39734
39751
  },
39735
- description: "Cancel or stop a running or queued build. Supports an optional comment and requeue flag.",
39752
+ description: "Cancel or stop a running or queued build, with optional comment and requeue flag. Returns the cancelled build; returns 404 if the build is unknown.",
39736
39753
  inputSchema: {
39737
39754
  type: "object",
39738
39755
  properties: {
@@ -40525,7 +40542,7 @@ var DEV_TOOLS = [
40525
40542
  idempotentHint: true,
40526
40543
  openWorldHint: true
40527
40544
  },
40528
- description: "Set a single VCS root property such as branch, branchSpec, or url.",
40545
+ description: "Set a single VCS root property such as branch, branchSpec, or url. Returns the updated value; returns 404 if the VCS root or property is unknown.",
40529
40546
  inputSchema: {
40530
40547
  type: "object",
40531
40548
  properties: {
@@ -40569,7 +40586,7 @@ var DEV_TOOLS = [
40569
40586
  idempotentHint: true,
40570
40587
  openWorldHint: true
40571
40588
  },
40572
- description: "Delete a single VCS root property.",
40589
+ description: "Delete a single VCS root property. Idempotent; returns 404 if the VCS root is unknown.",
40573
40590
  inputSchema: {
40574
40591
  type: "object",
40575
40592
  properties: {
@@ -40606,7 +40623,7 @@ var DEV_TOOLS = [
40606
40623
  idempotentHint: true,
40607
40624
  openWorldHint: true
40608
40625
  },
40609
- description: "Update common VCS root properties in a single call.",
40626
+ description: "Update common VCS root properties in a single call. Returns the updated VCS root; returns 404 if the VCS root is unknown.",
40610
40627
  inputSchema: {
40611
40628
  type: "object",
40612
40629
  properties: {
@@ -41425,6 +41442,72 @@ var DEV_TOOLS = [
41425
41442
  );
41426
41443
  }
41427
41444
  },
41445
+ {
41446
+ name: "list_build_artifacts",
41447
+ annotations: {
41448
+ readOnlyHint: true,
41449
+ destructiveHint: false,
41450
+ idempotentHint: true,
41451
+ openWorldHint: true
41452
+ },
41453
+ description: "List artifact files and directories for a build, optionally browsing into subdirectories. Returns an array of artifact entries with name, path, size, and isDirectory flag.",
41454
+ inputSchema: {
41455
+ type: "object",
41456
+ properties: {
41457
+ ...buildIdentifierInputProperties,
41458
+ path: {
41459
+ type: "string",
41460
+ description: 'Sub-path to list (e.g. "okd" or "okd/subdir"). Omit to list top-level artifacts.'
41461
+ },
41462
+ includeNested: {
41463
+ type: "boolean",
41464
+ description: "Recursively include all files within subdirectories (default: false)"
41465
+ },
41466
+ nameFilter: {
41467
+ type: "string",
41468
+ description: 'Glob pattern to filter artifacts by name (e.g. "*.yaml")'
41469
+ },
41470
+ pathFilter: {
41471
+ type: "string",
41472
+ description: "Glob pattern to filter artifacts by full path"
41473
+ },
41474
+ extension: {
41475
+ type: "string",
41476
+ description: 'Filter by file extension (e.g. "yaml", ".yaml")'
41477
+ }
41478
+ }
41479
+ },
41480
+ handler: async (args) => {
41481
+ const schema = buildIdentifierSchema.and(
41482
+ import_zod4.z.object({
41483
+ path: import_zod4.z.string().trim().min(1).optional(),
41484
+ includeNested: import_zod4.z.boolean().optional(),
41485
+ nameFilter: import_zod4.z.string().trim().min(1).optional(),
41486
+ pathFilter: import_zod4.z.string().trim().min(1).optional(),
41487
+ extension: import_zod4.z.string().trim().min(1).optional()
41488
+ })
41489
+ );
41490
+ return runTool(
41491
+ "list_build_artifacts",
41492
+ schema,
41493
+ async (typed) => {
41494
+ const adapter = createAdapterFromTeamCityAPI(TeamCityAPI.getInstance());
41495
+ const { locator: buildLocator } = resolveBuildLocator(typed);
41496
+ const manager = new ArtifactManager(adapter);
41497
+ const artifacts = await manager.listArtifacts(buildLocator, {
41498
+ path: typed.path,
41499
+ includeNested: typed.includeNested,
41500
+ includeDirectories: true,
41501
+ nameFilter: typed.nameFilter,
41502
+ pathFilter: typed.pathFilter,
41503
+ extension: typed.extension
41504
+ });
41505
+ return json({ artifacts });
41506
+ },
41507
+ args
41508
+ );
41509
+ }
41510
+ },
41428
41511
  {
41429
41512
  name: "download_build_artifact",
41430
41513
  annotations: {
@@ -41433,7 +41516,7 @@ var DEV_TOOLS = [
41433
41516
  idempotentHint: false,
41434
41517
  openWorldHint: true
41435
41518
  },
41436
- description: "Download a single build artifact. Supports base64, text, or streaming output.",
41519
+ description: "Download a single build artifact, with base64, text, or streaming output. Returns the artifact bytes or stream metadata; returns 404 if the build or path is unknown.",
41437
41520
  inputSchema: {
41438
41521
  type: "object",
41439
41522
  properties: {
@@ -41501,7 +41584,7 @@ var DEV_TOOLS = [
41501
41584
  idempotentHint: false,
41502
41585
  openWorldHint: true
41503
41586
  },
41504
- description: "Download multiple build artifacts. Supports base64, text, or streaming output.",
41587
+ description: "Download multiple build artifacts, with base64, text, or streaming output. Returns per-artifact payloads or stream metadata; returns 404 if the build or any path is unknown.",
41505
41588
  inputSchema: {
41506
41589
  type: "object",
41507
41590
  properties: {
@@ -42427,7 +42510,7 @@ var FULL_MODE_TOOLS = [
42427
42510
  idempotentHint: false,
42428
42511
  openWorldHint: true
42429
42512
  },
42430
- description: "Create a new TeamCity project.",
42513
+ description: "Create a new TeamCity project. Returns the created project (id and name); returns 409 if a project with the same id already exists.",
42431
42514
  inputSchema: {
42432
42515
  type: "object",
42433
42516
  properties: {
@@ -42474,7 +42557,7 @@ var FULL_MODE_TOOLS = [
42474
42557
  idempotentHint: true,
42475
42558
  openWorldHint: true
42476
42559
  },
42477
- description: "Delete a TeamCity project.",
42560
+ description: "Delete a TeamCity project. Irreversible; returns 404 if the project does not exist.",
42478
42561
  inputSchema: {
42479
42562
  type: "object",
42480
42563
  properties: {
@@ -42498,7 +42581,7 @@ var FULL_MODE_TOOLS = [
42498
42581
  idempotentHint: true,
42499
42582
  openWorldHint: true
42500
42583
  },
42501
- description: "Update project settings and parameters.",
42584
+ description: "Update project settings and parameters. Returns the updated project; returns 404 if the project does not exist.",
42502
42585
  inputSchema: {
42503
42586
  type: "object",
42504
42587
  properties: {
@@ -42594,7 +42677,7 @@ var FULL_MODE_TOOLS = [
42594
42677
  idempotentHint: false,
42595
42678
  openWorldHint: true
42596
42679
  },
42597
- description: "Create a new build configuration.",
42680
+ description: "Create a new build configuration. Returns the created configuration (id and name); returns 409 if a configuration with the same id already exists.",
42598
42681
  inputSchema: {
42599
42682
  type: "object",
42600
42683
  properties: {
@@ -42629,7 +42712,7 @@ var FULL_MODE_TOOLS = [
42629
42712
  idempotentHint: false,
42630
42713
  openWorldHint: true
42631
42714
  },
42632
- description: "Clone an existing build configuration.",
42715
+ description: "Clone an existing build configuration. Returns the new configuration (id and name); returns 404 if the source configuration is unknown.",
42633
42716
  inputSchema: {
42634
42717
  type: "object",
42635
42718
  properties: {
@@ -42729,7 +42812,7 @@ var FULL_MODE_TOOLS = [
42729
42812
  idempotentHint: true,
42730
42813
  openWorldHint: true
42731
42814
  },
42732
- description: "Update build configuration settings.",
42815
+ description: "Update build configuration settings. Returns the updated configuration; returns 404 if the configuration is unknown.",
42733
42816
  inputSchema: {
42734
42817
  type: "object",
42735
42818
  properties: {
@@ -42828,7 +42911,7 @@ var FULL_MODE_TOOLS = [
42828
42911
  idempotentHint: true,
42829
42912
  openWorldHint: true
42830
42913
  },
42831
- description: "Add, update, or delete artifact and snapshot dependencies for a build configuration.",
42914
+ description: "Add, update, or delete artifact and snapshot dependencies for a build configuration. Returns the affected dependency or a delete confirmation; returns 404 if the configuration or dependency id is unknown.",
42832
42915
  inputSchema: {
42833
42916
  type: "object",
42834
42917
  properties: {
@@ -42976,7 +43059,7 @@ var FULL_MODE_TOOLS = [
42976
43059
  idempotentHint: true,
42977
43060
  openWorldHint: true
42978
43061
  },
42979
- description: "Add, update, or delete build features such as ssh-agent or requirements enforcement.",
43062
+ description: "Add, update, or delete build features such as ssh-agent or requirements enforcement. Returns the affected feature or a delete confirmation; returns 404 if the configuration or feature id is unknown.",
42980
43063
  inputSchema: {
42981
43064
  type: "object",
42982
43065
  properties: {
@@ -43089,7 +43172,7 @@ var FULL_MODE_TOOLS = [
43089
43172
  idempotentHint: true,
43090
43173
  openWorldHint: true
43091
43174
  },
43092
- description: "Add, update, or delete agent requirements for a build configuration.",
43175
+ description: "Add, update, or delete agent requirements for a build configuration. Returns the affected requirement or a delete confirmation; returns 404 if the configuration or requirement id is unknown.",
43093
43176
  inputSchema: {
43094
43177
  type: "object",
43095
43178
  properties: {
@@ -43241,7 +43324,7 @@ var FULL_MODE_TOOLS = [
43241
43324
  idempotentHint: true,
43242
43325
  openWorldHint: true
43243
43326
  },
43244
- description: "Enable or disable a build configuration by toggling its paused flag.",
43327
+ description: "Enable or disable a build configuration by toggling its paused flag. Returns the new paused state; returns 404 if the configuration is unknown.",
43245
43328
  inputSchema: {
43246
43329
  type: "object",
43247
43330
  properties: {
@@ -43292,7 +43375,7 @@ var FULL_MODE_TOOLS = [
43292
43375
  idempotentHint: true,
43293
43376
  openWorldHint: true
43294
43377
  },
43295
- description: "Attach a VCS root to a build configuration.",
43378
+ description: "Attach a VCS root to a build configuration. Returns the attached VCS root entry; returns 404 if the configuration or VCS root is unknown.",
43296
43379
  inputSchema: {
43297
43380
  type: "object",
43298
43381
  properties: {
@@ -43346,7 +43429,7 @@ var FULL_MODE_TOOLS = [
43346
43429
  idempotentHint: true,
43347
43430
  openWorldHint: true
43348
43431
  },
43349
- description: "Add a parameter to a build configuration.",
43432
+ description: "Add a parameter to a build configuration. Returns the created parameter; returns 404 if the configuration is unknown.",
43350
43433
  inputSchema: {
43351
43434
  type: "object",
43352
43435
  properties: {
@@ -43393,7 +43476,7 @@ var FULL_MODE_TOOLS = [
43393
43476
  idempotentHint: true,
43394
43477
  openWorldHint: true
43395
43478
  },
43396
- description: "Update a build configuration parameter.",
43479
+ description: "Update a build configuration parameter. Returns the updated parameter; returns 404 if the configuration or parameter name is unknown.",
43397
43480
  inputSchema: {
43398
43481
  type: "object",
43399
43482
  properties: {
@@ -43441,7 +43524,7 @@ var FULL_MODE_TOOLS = [
43441
43524
  idempotentHint: true,
43442
43525
  openWorldHint: true
43443
43526
  },
43444
- description: "Delete a parameter from a build configuration.",
43527
+ description: "Delete a parameter from a build configuration. Idempotent; returns 404 if the configuration is unknown.",
43445
43528
  inputSchema: {
43446
43529
  type: "object",
43447
43530
  properties: {
@@ -43502,7 +43585,7 @@ var FULL_MODE_TOOLS = [
43502
43585
  idempotentHint: true,
43503
43586
  openWorldHint: true
43504
43587
  },
43505
- description: "Add a parameter to a project.",
43588
+ description: "Add a parameter to a project. Returns the created parameter; returns 404 if the project does not exist.",
43506
43589
  inputSchema: {
43507
43590
  type: "object",
43508
43591
  properties: {
@@ -43551,7 +43634,7 @@ var FULL_MODE_TOOLS = [
43551
43634
  idempotentHint: true,
43552
43635
  openWorldHint: true
43553
43636
  },
43554
- description: "Update a project parameter.",
43637
+ description: "Update a project parameter. Returns the updated parameter; returns 404 if the project or parameter name is unknown.",
43555
43638
  inputSchema: {
43556
43639
  type: "object",
43557
43640
  properties: {
@@ -43599,7 +43682,7 @@ var FULL_MODE_TOOLS = [
43599
43682
  idempotentHint: true,
43600
43683
  openWorldHint: true
43601
43684
  },
43602
- description: "Delete a parameter from a project.",
43685
+ description: "Delete a parameter from a project. Idempotent; returns 404 if the project does not exist.",
43603
43686
  inputSchema: {
43604
43687
  type: "object",
43605
43688
  properties: {
@@ -43657,7 +43740,7 @@ var FULL_MODE_TOOLS = [
43657
43740
  idempotentHint: true,
43658
43741
  openWorldHint: true
43659
43742
  },
43660
- description: "Add an output parameter to a build configuration. Used to pass values between builds in a chain.",
43743
+ description: "Add an output parameter to a build configuration; used to pass values between builds in a chain. Returns the created parameter; returns 404 if the configuration is unknown.",
43661
43744
  inputSchema: {
43662
43745
  type: "object",
43663
43746
  properties: {
@@ -43697,7 +43780,7 @@ var FULL_MODE_TOOLS = [
43697
43780
  idempotentHint: true,
43698
43781
  openWorldHint: true
43699
43782
  },
43700
- description: "Update an output parameter in a build configuration.",
43783
+ description: "Update an output parameter in a build configuration. Returns the updated parameter; returns 404 if the configuration or parameter name is unknown.",
43701
43784
  inputSchema: {
43702
43785
  type: "object",
43703
43786
  properties: {
@@ -43737,7 +43820,7 @@ var FULL_MODE_TOOLS = [
43737
43820
  idempotentHint: true,
43738
43821
  openWorldHint: true
43739
43822
  },
43740
- description: "Delete an output parameter from a build configuration.",
43823
+ description: "Delete an output parameter from a build configuration. Idempotent; returns 404 if the configuration is unknown.",
43741
43824
  inputSchema: {
43742
43825
  type: "object",
43743
43826
  properties: {
@@ -43771,7 +43854,7 @@ var FULL_MODE_TOOLS = [
43771
43854
  idempotentHint: false,
43772
43855
  openWorldHint: true
43773
43856
  },
43774
- description: "Create a new VCS root.",
43857
+ description: "Create a new VCS root. Returns the created VCS root id; returns 409 if a VCS root with the same id already exists.",
43775
43858
  inputSchema: {
43776
43859
  type: "object",
43777
43860
  properties: {
@@ -43815,7 +43898,7 @@ var FULL_MODE_TOOLS = [
43815
43898
  idempotentHint: true,
43816
43899
  openWorldHint: true
43817
43900
  },
43818
- description: "Authorize or unauthorize a build agent.",
43901
+ description: "Authorize or unauthorize a build agent. Returns the new authorization state; returns 404 if the agent is unknown.",
43819
43902
  inputSchema: {
43820
43903
  type: "object",
43821
43904
  properties: {
@@ -43850,7 +43933,7 @@ var FULL_MODE_TOOLS = [
43850
43933
  idempotentHint: true,
43851
43934
  openWorldHint: true
43852
43935
  },
43853
- description: "Assign an agent to a different pool.",
43936
+ description: "Assign an agent to a different pool. Returns the agent's new pool assignment; returns 404 if the agent or pool is unknown.",
43854
43937
  inputSchema: {
43855
43938
  type: "object",
43856
43939
  properties: {
@@ -43882,7 +43965,7 @@ var FULL_MODE_TOOLS = [
43882
43965
  idempotentHint: true,
43883
43966
  openWorldHint: true
43884
43967
  },
43885
- description: "Remove a build agent from the TeamCity server. Useful for cleaning up disconnected or ghost agent entries.",
43968
+ description: "Remove a build agent from the TeamCity server, useful for cleaning up disconnected or ghost agent entries. Idempotent; returns 404 if the agent is unknown.",
43886
43969
  inputSchema: {
43887
43970
  type: "object",
43888
43971
  properties: {
@@ -43907,7 +43990,7 @@ var FULL_MODE_TOOLS = [
43907
43990
  idempotentHint: true,
43908
43991
  openWorldHint: true
43909
43992
  },
43910
- description: "Add, update, or delete build steps.",
43993
+ description: "Add, update, or delete build steps. Returns the affected step or a delete confirmation; returns 404 if the configuration or step id is unknown.",
43911
43994
  inputSchema: {
43912
43995
  type: "object",
43913
43996
  properties: {
@@ -44106,7 +44189,7 @@ var FULL_MODE_TOOLS = [
44106
44189
  idempotentHint: true,
44107
44190
  openWorldHint: true
44108
44191
  },
44109
- description: "Add, update, or delete build triggers.",
44192
+ description: "Add, update, or delete build triggers. Returns the affected trigger or a delete confirmation; returns 404 if the configuration or trigger id is unknown.",
44110
44193
  inputSchema: {
44111
44194
  type: "object",
44112
44195
  properties: {
@@ -44179,7 +44262,7 @@ var FULL_MODE_TOOLS = [
44179
44262
  idempotentHint: true,
44180
44263
  openWorldHint: true
44181
44264
  },
44182
- description: "Pause or unpause a list of build configurations. Optionally cancels their queued builds.",
44265
+ description: "Pause or unpause a list of build configurations, optionally cancelling their queued builds. Returns the count of configurations updated; returns 404 if any configuration is unknown.",
44183
44266
  inputSchema: {
44184
44267
  type: "object",
44185
44268
  properties: {
@@ -44246,7 +44329,7 @@ var FULL_MODE_TOOLS = [
44246
44329
  idempotentHint: false,
44247
44330
  openWorldHint: true
44248
44331
  },
44249
- description: "Mute tests within a project or build configuration scope.",
44332
+ description: "Mute tests within a project or build configuration scope. Returns the created mute id; returns 404 if the scope id is unknown.",
44250
44333
  inputSchema: {
44251
44334
  type: "object",
44252
44335
  properties: {
@@ -44343,7 +44426,7 @@ var FULL_MODE_TOOLS = [
44343
44426
  idempotentHint: false,
44344
44427
  openWorldHint: true
44345
44428
  },
44346
- description: "Move a queued build to the top of the queue.",
44429
+ description: "Move a queued build to the top of the queue. Idempotent; returns 404 if the build is no longer queued.",
44347
44430
  inputSchema: {
44348
44431
  type: "object",
44349
44432
  properties: { buildId: { type: "string", description: "Queued build ID" } },
@@ -44378,7 +44461,7 @@ var FULL_MODE_TOOLS = [
44378
44461
  idempotentHint: false,
44379
44462
  openWorldHint: true
44380
44463
  },
44381
- description: "Reorder queued builds by providing the desired sequence of IDs.",
44464
+ description: "Reorder queued builds by providing the desired sequence of IDs. Returns the new queue order; returns 404 if any build id is no longer queued.",
44382
44465
  inputSchema: {
44383
44466
  type: "object",
44384
44467
  properties: { buildIds: { type: "array", items: { type: "string" } } },
@@ -44413,7 +44496,7 @@ var FULL_MODE_TOOLS = [
44413
44496
  idempotentHint: false,
44414
44497
  openWorldHint: true
44415
44498
  },
44416
- description: "Cancel all queued builds for a specific build configuration.",
44499
+ description: "Cancel all queued builds for a specific build configuration. Returns the count of cancelled builds; returns 404 if the configuration is unknown.",
44417
44500
  inputSchema: {
44418
44501
  type: "object",
44419
44502
  properties: { buildTypeId: { type: "string", description: "Build type ID" } },
@@ -44455,7 +44538,7 @@ var FULL_MODE_TOOLS = [
44455
44538
  idempotentHint: false,
44456
44539
  openWorldHint: true
44457
44540
  },
44458
- description: "Cancel all queued builds matching a queue locator expression.",
44541
+ description: "Cancel all queued builds matching a queue locator expression. Returns the count of cancelled builds; returns 400 if the locator is malformed.",
44459
44542
  inputSchema: {
44460
44543
  type: "object",
44461
44544
  properties: { locator: { type: "string", description: "Queue locator expression" } },
@@ -44497,7 +44580,7 @@ var FULL_MODE_TOOLS = [
44497
44580
  idempotentHint: true,
44498
44581
  openWorldHint: true
44499
44582
  },
44500
- description: "Pause queue processing by disabling all agents in a pool. Optionally cancels queued builds for a build type.",
44583
+ description: "Pause queue processing by disabling all agents in a pool, optionally cancelling queued builds for a build type. Returns counts of agents disabled and builds cancelled; returns 404 if the pool is unknown.",
44501
44584
  inputSchema: {
44502
44585
  type: "object",
44503
44586
  properties: {
@@ -44575,7 +44658,7 @@ var FULL_MODE_TOOLS = [
44575
44658
  idempotentHint: true,
44576
44659
  openWorldHint: true
44577
44660
  },
44578
- description: "Resume queue processing by re-enabling all agents in a pool.",
44661
+ description: "Resume queue processing by re-enabling all agents in a pool. Returns the count of agents re-enabled; returns 404 if the pool is unknown.",
44579
44662
  inputSchema: {
44580
44663
  type: "object",
44581
44664
  properties: { poolId: { type: "string", description: "Agent pool ID" } },
@@ -44625,7 +44708,7 @@ var FULL_MODE_TOOLS = [
44625
44708
  idempotentHint: true,
44626
44709
  openWorldHint: true
44627
44710
  },
44628
- description: "Enable or disable an agent. Supports optional comment and schedule.",
44711
+ description: "Enable or disable an agent, with optional comment and schedule. Returns the new enabled state; returns 404 if the agent is unknown.",
44629
44712
  inputSchema: {
44630
44713
  type: "object",
44631
44714
  properties: {
@@ -44677,7 +44760,7 @@ var FULL_MODE_TOOLS = [
44677
44760
  idempotentHint: true,
44678
44761
  openWorldHint: true
44679
44762
  },
44680
- description: "Bulk enable or disable agents selected by pool or locator. Supports optional comment and schedule.",
44763
+ description: "Bulk enable or disable agents selected by pool or locator, with optional comment and schedule. Returns counts of agents updated and skipped; returns 404 if the pool is unknown or 400 if the locator is malformed.",
44681
44764
  inputSchema: {
44682
44765
  type: "object",
44683
44766
  properties: {
@@ -44802,7 +44885,7 @@ var FULL_MODE_TOOLS = [
44802
44885
  idempotentHint: false,
44803
44886
  openWorldHint: true
44804
44887
  },
44805
- description: "Upload an SSH key to a project. Provide either privateKeyContent or privateKeyPath, not both.",
44888
+ description: "Upload an SSH key to a project; provide either privateKeyContent or privateKeyPath, not both. Returns the uploaded key's name; returns 404 if the project does not exist.",
44806
44889
  inputSchema: {
44807
44890
  type: "object",
44808
44891
  properties: {
@@ -44852,7 +44935,7 @@ var FULL_MODE_TOOLS = [
44852
44935
  idempotentHint: true,
44853
44936
  openWorldHint: true
44854
44937
  },
44855
- description: "Delete an SSH key from a project.",
44938
+ description: "Delete an SSH key from a project. Idempotent; returns 404 if the project or key is unknown.",
44856
44939
  inputSchema: {
44857
44940
  type: "object",
44858
44941
  properties: {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@daghis/teamcity-mcp",
3
- "version": "2.9.0",
3
+ "version": "2.11.0",
4
4
  "description": "Model Control Protocol server for TeamCity CI/CD integration with AI coding assistants",
5
5
  "mcpName": "io.github.Daghis/teamcity",
6
6
  "main": "dist/index.js",
@@ -73,7 +73,6 @@
73
73
  "zod": "^4.3.5"
74
74
  },
75
75
  "devDependencies": {
76
- "@codecov/bundle-analyzer": "^2.0.1",
77
76
  "@esbuild-plugins/tsconfig-paths": "^0.1.2",
78
77
  "@eslint/js": "^10.0.1",
79
78
  "@trivago/prettier-plugin-sort-imports": "^6.0.1",
@@ -90,7 +89,7 @@
90
89
  "eslint-plugin-prettier": "^5.0.1",
91
90
  "globals": "^17.4.0",
92
91
  "jest": "^30.1.3",
93
- "jest-junit": "^16.0.0",
92
+ "jest-junit": "^17.0.0",
94
93
  "js-yaml": "^4.1.1",
95
94
  "prettier": "^3.1.0",
96
95
  "ts-jest": "^29.4.9",
package/server.json CHANGED
@@ -7,13 +7,13 @@
7
7
  "source": "github"
8
8
  },
9
9
  "websiteUrl": "https://github.com/Daghis/teamcity-mcp",
10
- "version": "2.9.0",
10
+ "version": "2.11.0",
11
11
  "packages": [
12
12
  {
13
13
  "registryType": "npm",
14
14
  "registryBaseUrl": "https://registry.npmjs.org",
15
15
  "identifier": "@daghis/teamcity-mcp",
16
- "version": "2.9.0",
16
+ "version": "2.11.0",
17
17
  "runtimeHint": "npx",
18
18
  "runtimeArguments": [
19
19
  {