@daghis/teamcity-mcp 2.7.0 → 2.9.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.9.0](https://github.com/Daghis/teamcity-mcp/compare/teamcity-mcp-v2.8.0...teamcity-mcp-v2.9.0) (2026-04-24)
4
+
5
+
6
+ ### Features
7
+
8
+ * **tools:** unify tool descriptions under a single skeleton ([#479](https://github.com/Daghis/teamcity-mcp/issues/479)) ([19aa256](https://github.com/Daghis/teamcity-mcp/commit/19aa2565f21938639bd9d40f7b1c9cbb524d8e22))
9
+
10
+ ## [2.8.0](https://github.com/Daghis/teamcity-mcp/compare/teamcity-mcp-v2.7.0...teamcity-mcp-v2.8.0) (2026-04-24)
11
+
12
+
13
+ ### Features
14
+
15
+ * **tools:** declare outputSchema for first batch of read tools ([#477](https://github.com/Daghis/teamcity-mcp/issues/477)) ([932fee9](https://github.com/Daghis/teamcity-mcp/commit/932fee9e09988555cda13b8f7282128de8a7e3f5))
16
+
3
17
  ## [2.7.0](https://github.com/Daghis/teamcity-mcp/compare/teamcity-mcp-v2.6.3...teamcity-mcp-v2.7.0) (2026-04-23)
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.7.0",
1208
+ version: "2.9.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",
@@ -1287,6 +1287,8 @@ var package_default = {
1287
1287
  "@types/node": "^25.0.2",
1288
1288
  "@typescript-eslint/eslint-plugin": "^8.58.0",
1289
1289
  "@typescript-eslint/parser": "^8.58.0",
1290
+ ajv: "^8.18.0",
1291
+ "ajv-formats": "^3.0.1",
1290
1292
  esbuild: "^0.28.0",
1291
1293
  eslint: "^10.1.0",
1292
1294
  "eslint-config-prettier": "^10.1.8",
@@ -4605,13 +4607,19 @@ async function runTool(toolName, schema, handler, rawArgs, context) {
4605
4607
  );
4606
4608
  if (err instanceof import_zod3.z.ZodError) {
4607
4609
  const formatted2 = formatError(err, { ...context, requestId: reqId });
4608
- return json(formatted2);
4610
+ const response2 = json(formatted2);
4611
+ response2.success = false;
4612
+ response2.error = msg;
4613
+ return response2;
4609
4614
  }
4610
4615
  const formatted = globalErrorHandler.handleToolError(err, toolName, {
4611
4616
  ...context,
4612
4617
  requestId: reqId
4613
4618
  });
4614
- return json(formatted);
4619
+ const response = json(formatted);
4620
+ response.success = false;
4621
+ response.error = msg;
4622
+ return response;
4615
4623
  }
4616
4624
  }
4617
4625
 
@@ -39052,6 +39060,163 @@ var downloadArtifactByUrl = async (adapter, request, encoding, options) => {
39052
39060
  };
39053
39061
  return buildArtifactPayload(artifact, "base64", options);
39054
39062
  };
39063
+ var paginationMetaSchema = {
39064
+ type: "object",
39065
+ description: "Pagination metadata describing which slice was returned.",
39066
+ additionalProperties: true,
39067
+ properties: {
39068
+ page: { type: "number" },
39069
+ pageSize: { type: "number" },
39070
+ mode: { type: "string", enum: ["all"] },
39071
+ fetched: { type: "number" }
39072
+ }
39073
+ };
39074
+ var buildObjectSchema = {
39075
+ type: "object",
39076
+ description: "TeamCity build representation.",
39077
+ additionalProperties: true,
39078
+ properties: {
39079
+ id: { type: ["number", "string"] },
39080
+ buildTypeId: { type: "string" },
39081
+ number: { type: "string" },
39082
+ state: { type: "string" },
39083
+ status: { type: "string" },
39084
+ statusText: { type: "string" },
39085
+ branchName: { type: "string" },
39086
+ href: { type: "string" },
39087
+ webUrl: { type: "string" }
39088
+ }
39089
+ };
39090
+ var projectObjectSchema = {
39091
+ type: "object",
39092
+ description: "TeamCity project representation.",
39093
+ additionalProperties: true,
39094
+ properties: {
39095
+ id: { type: "string" },
39096
+ name: { type: "string" },
39097
+ parentProjectId: { type: "string" },
39098
+ href: { type: "string" },
39099
+ webUrl: { type: "string" },
39100
+ archived: { type: "boolean" },
39101
+ description: { type: "string" }
39102
+ }
39103
+ };
39104
+ var buildTypeObjectSchema = {
39105
+ type: "object",
39106
+ description: "TeamCity build configuration (buildType) representation.",
39107
+ additionalProperties: true,
39108
+ properties: {
39109
+ id: { type: "string" },
39110
+ name: { type: "string" },
39111
+ projectId: { type: "string" },
39112
+ projectName: { type: "string" },
39113
+ href: { type: "string" },
39114
+ webUrl: { type: "string" },
39115
+ paused: { type: "boolean" },
39116
+ description: { type: "string" }
39117
+ }
39118
+ };
39119
+ var listOutputSchema = (itemSchema) => ({
39120
+ type: "object",
39121
+ additionalProperties: false,
39122
+ required: ["items", "pagination"],
39123
+ properties: {
39124
+ items: { type: "array", items: itemSchema },
39125
+ pagination: paginationMetaSchema
39126
+ }
39127
+ });
39128
+ var buildStatusOutputSchema = {
39129
+ type: "object",
39130
+ description: "Aggregated status for a queued, running, or finished build.",
39131
+ additionalProperties: true,
39132
+ required: ["buildId", "state", "percentageComplete"],
39133
+ properties: {
39134
+ buildId: { type: "string" },
39135
+ buildNumber: { type: "string" },
39136
+ buildTypeId: { type: "string" },
39137
+ state: { type: "string", enum: ["queued", "running", "finished", "failed", "canceled"] },
39138
+ status: { type: "string", enum: ["SUCCESS", "FAILURE", "ERROR", "UNKNOWN"] },
39139
+ statusText: { type: "string" },
39140
+ percentageComplete: { type: "number" },
39141
+ currentStageText: { type: "string" },
39142
+ branchName: { type: "string" },
39143
+ webUrl: { type: "string" },
39144
+ queuedDate: { type: "string" },
39145
+ startDate: { type: "string" },
39146
+ finishDate: { type: "string" },
39147
+ elapsedSeconds: { type: "number" },
39148
+ estimatedTotalSeconds: { type: "number" },
39149
+ estimatedStartTime: { type: "string" },
39150
+ queuePosition: { type: "number" },
39151
+ waitReason: { type: "string" },
39152
+ failureReason: { type: "string" },
39153
+ canceledBy: { type: "string" },
39154
+ canceledDate: { type: "string" },
39155
+ totalQueued: { type: "number" },
39156
+ canMoveToTop: { type: "boolean" },
39157
+ testSummary: {
39158
+ type: "object",
39159
+ additionalProperties: true,
39160
+ properties: {
39161
+ total: { type: "number" },
39162
+ passed: { type: "number" },
39163
+ failed: { type: "number" },
39164
+ ignored: { type: "number" },
39165
+ muted: { type: "number" },
39166
+ newFailed: { type: "number" }
39167
+ }
39168
+ },
39169
+ problems: {
39170
+ type: "array",
39171
+ items: {
39172
+ type: "object",
39173
+ additionalProperties: true,
39174
+ properties: {
39175
+ type: { type: "string" },
39176
+ identity: { type: "string" },
39177
+ description: { type: "string" }
39178
+ }
39179
+ }
39180
+ }
39181
+ }
39182
+ };
39183
+ var buildResultsOutputSchema = {
39184
+ type: "object",
39185
+ description: "Rich build result bundle assembled by BuildResultsManager. The core build summary is always under `build`; optional sections (artifacts, statistics, changes, dependencies) are present when requested via the corresponding include* flags.",
39186
+ additionalProperties: true,
39187
+ required: ["build"],
39188
+ properties: {
39189
+ build: {
39190
+ type: "object",
39191
+ additionalProperties: true,
39192
+ properties: {
39193
+ id: { type: ["string", "number"] },
39194
+ number: { type: "string" },
39195
+ status: { type: "string" },
39196
+ state: { type: "string" },
39197
+ buildTypeId: { type: "string" },
39198
+ projectId: { type: "string" },
39199
+ branchName: { type: "string" },
39200
+ statusText: { type: "string" },
39201
+ webUrl: { type: "string" }
39202
+ }
39203
+ },
39204
+ artifacts: { type: "array", items: { type: "object", additionalProperties: true } },
39205
+ statistics: { type: "object", additionalProperties: true },
39206
+ changes: { type: "array", items: { type: "object", additionalProperties: true } },
39207
+ dependencies: { type: "array", items: { type: "object", additionalProperties: true } }
39208
+ }
39209
+ };
39210
+ var FIRST_BATCH_OUTPUT_SCHEMAS = {
39211
+ list_builds: listOutputSchema(buildObjectSchema),
39212
+ get_build: buildObjectSchema,
39213
+ get_build_status: buildStatusOutputSchema,
39214
+ get_build_results: buildResultsOutputSchema,
39215
+ list_projects: listOutputSchema(projectObjectSchema),
39216
+ get_project: projectObjectSchema,
39217
+ list_build_configs: listOutputSchema(buildTypeObjectSchema),
39218
+ get_build_config: buildTypeObjectSchema
39219
+ };
39055
39220
  function getMCPMode2() {
39056
39221
  return getMCPMode();
39057
39222
  }
@@ -39065,7 +39230,7 @@ var DEV_TOOLS = [
39065
39230
  idempotentHint: true,
39066
39231
  openWorldHint: true
39067
39232
  },
39068
- description: "Test MCP server connectivity",
39233
+ description: "Test MCP server connectivity. Returns a confirmation echo and optional message.",
39069
39234
  inputSchema: {
39070
39235
  type: "object",
39071
39236
  properties: {
@@ -39093,7 +39258,7 @@ var DEV_TOOLS = [
39093
39258
  idempotentHint: true,
39094
39259
  openWorldHint: false
39095
39260
  },
39096
- description: "Get current MCP mode. Dev mode: read-only tools for safe exploration. Full mode: all tools including admin operations.",
39261
+ description: "Get the current MCP mode. Dev mode is read-only; full mode enables all operations.",
39097
39262
  inputSchema: {
39098
39263
  type: "object",
39099
39264
  properties: {}
@@ -39119,7 +39284,7 @@ var DEV_TOOLS = [
39119
39284
  idempotentHint: true,
39120
39285
  openWorldHint: false
39121
39286
  },
39122
- description: "Switch MCP mode at runtime. Dev mode: safe read-only operations. Full mode: all operations including writes. Clients are notified of tool list changes.",
39287
+ description: "Switch MCP mode at runtime. Clients are notified when the tool list changes.",
39123
39288
  inputSchema: {
39124
39289
  type: "object",
39125
39290
  properties: {
@@ -39168,7 +39333,8 @@ var DEV_TOOLS = [
39168
39333
  idempotentHint: true,
39169
39334
  openWorldHint: true
39170
39335
  },
39171
- description: "List TeamCity projects (supports pagination)",
39336
+ description: "List TeamCity projects. Supports pagination and locator filtering.",
39337
+ outputSchema: FIRST_BATCH_OUTPUT_SCHEMAS.list_projects,
39172
39338
  inputSchema: {
39173
39339
  type: "object",
39174
39340
  properties: {
@@ -39241,7 +39407,8 @@ var DEV_TOOLS = [
39241
39407
  idempotentHint: true,
39242
39408
  openWorldHint: true
39243
39409
  },
39244
- description: "Get details of a specific project",
39410
+ description: "Get details of a specific project.",
39411
+ outputSchema: FIRST_BATCH_OUTPUT_SCHEMAS.get_project,
39245
39412
  inputSchema: {
39246
39413
  type: "object",
39247
39414
  properties: {
@@ -39272,7 +39439,8 @@ var DEV_TOOLS = [
39272
39439
  idempotentHint: true,
39273
39440
  openWorldHint: true
39274
39441
  },
39275
- description: "List TeamCity builds (supports pagination)",
39442
+ description: "List TeamCity builds. Supports pagination and locator filtering.",
39443
+ outputSchema: FIRST_BATCH_OUTPUT_SCHEMAS.list_builds,
39276
39444
  inputSchema: {
39277
39445
  type: "object",
39278
39446
  properties: {
@@ -39366,7 +39534,8 @@ var DEV_TOOLS = [
39366
39534
  idempotentHint: true,
39367
39535
  openWorldHint: true
39368
39536
  },
39369
- description: "Get details of a specific build (works for both queued and running/finished builds)",
39537
+ description: "Get details of a specific build. Works for queued, running, and finished builds.",
39538
+ outputSchema: FIRST_BATCH_OUTPUT_SCHEMAS.get_build,
39370
39539
  inputSchema: {
39371
39540
  type: "object",
39372
39541
  properties: {
@@ -39411,7 +39580,7 @@ var DEV_TOOLS = [
39411
39580
  idempotentHint: false,
39412
39581
  openWorldHint: true
39413
39582
  },
39414
- description: "Trigger a new build",
39583
+ description: "Trigger a new build. Returns the queued build id; the build runs asynchronously, use `wait_for_build` to monitor.",
39415
39584
  inputSchema: {
39416
39585
  type: "object",
39417
39586
  properties: {
@@ -39532,7 +39701,7 @@ var DEV_TOOLS = [
39532
39701
  idempotentHint: false,
39533
39702
  openWorldHint: true
39534
39703
  },
39535
- description: "Cancel a queued build by ID",
39704
+ description: "Cancel a queued (not-yet-running) build. Idempotent; returns 404 if the build already started or was cancelled.",
39536
39705
  inputSchema: {
39537
39706
  type: "object",
39538
39707
  properties: {
@@ -39563,7 +39732,7 @@ var DEV_TOOLS = [
39563
39732
  idempotentHint: false,
39564
39733
  openWorldHint: true
39565
39734
  },
39566
- description: "Cancel or stop a running (or queued) build by ID. Supports an optional comment and requeue flag.",
39735
+ description: "Cancel or stop a running or queued build. Supports an optional comment and requeue flag.",
39567
39736
  inputSchema: {
39568
39737
  type: "object",
39569
39738
  properties: {
@@ -39615,7 +39784,8 @@ var DEV_TOOLS = [
39615
39784
  idempotentHint: true,
39616
39785
  openWorldHint: true
39617
39786
  },
39618
- description: "Get build status with optional test/problem and queue context details",
39787
+ description: "Get build status. Optionally includes test and problem summaries plus queue context.",
39788
+ outputSchema: FIRST_BATCH_OUTPUT_SCHEMAS.get_build_status,
39619
39789
  inputSchema: {
39620
39790
  type: "object",
39621
39791
  properties: {
@@ -39717,7 +39887,7 @@ var DEV_TOOLS = [
39717
39887
  idempotentHint: false,
39718
39888
  openWorldHint: true
39719
39889
  },
39720
- description: "Wait for a build to complete by polling until it reaches a terminal state (finished, canceled, failed) or timeout",
39890
+ description: "Wait for a build to reach a terminal state (finished, canceled, failed). Long-running; polls until completion or timeout.",
39721
39891
  inputSchema: {
39722
39892
  type: "object",
39723
39893
  properties: {
@@ -39812,7 +39982,7 @@ var DEV_TOOLS = [
39812
39982
  idempotentHint: true,
39813
39983
  openWorldHint: true
39814
39984
  },
39815
- description: "Fetch build log with pagination (by lines)",
39985
+ description: "Fetch a build log. Supports line-based pagination and streaming output.",
39816
39986
  inputSchema: {
39817
39987
  type: "object",
39818
39988
  properties: {
@@ -40072,7 +40242,8 @@ var DEV_TOOLS = [
40072
40242
  idempotentHint: true,
40073
40243
  openWorldHint: true
40074
40244
  },
40075
- description: "List build configurations (supports pagination)",
40245
+ description: "List build configurations. Supports pagination and locator filtering.",
40246
+ outputSchema: FIRST_BATCH_OUTPUT_SCHEMAS.list_build_configs,
40076
40247
  inputSchema: {
40077
40248
  type: "object",
40078
40249
  properties: {
@@ -40145,7 +40316,8 @@ var DEV_TOOLS = [
40145
40316
  idempotentHint: true,
40146
40317
  openWorldHint: true
40147
40318
  },
40148
- description: "Get details of a build configuration",
40319
+ description: "Get details of a build configuration.",
40320
+ outputSchema: FIRST_BATCH_OUTPUT_SCHEMAS.get_build_config,
40149
40321
  inputSchema: {
40150
40322
  type: "object",
40151
40323
  properties: {
@@ -40176,7 +40348,7 @@ var DEV_TOOLS = [
40176
40348
  idempotentHint: true,
40177
40349
  openWorldHint: true
40178
40350
  },
40179
- description: "List test failures for a build (supports pagination)",
40351
+ description: "List test failures for a build. Supports pagination.",
40180
40352
  inputSchema: {
40181
40353
  type: "object",
40182
40354
  properties: {
@@ -40244,7 +40416,7 @@ var DEV_TOOLS = [
40244
40416
  idempotentHint: true,
40245
40417
  openWorldHint: true
40246
40418
  },
40247
- description: "List VCS roots (supports pagination)",
40419
+ description: "List VCS roots. Supports pagination.",
40248
40420
  inputSchema: {
40249
40421
  type: "object",
40250
40422
  properties: {
@@ -40315,7 +40487,7 @@ var DEV_TOOLS = [
40315
40487
  idempotentHint: true,
40316
40488
  openWorldHint: true
40317
40489
  },
40318
- description: "Get details of a VCS root (including properties)",
40490
+ description: "Get details of a VCS root, including its properties.",
40319
40491
  inputSchema: {
40320
40492
  type: "object",
40321
40493
  properties: {
@@ -40353,7 +40525,7 @@ var DEV_TOOLS = [
40353
40525
  idempotentHint: true,
40354
40526
  openWorldHint: true
40355
40527
  },
40356
- description: "Set a single VCS root property (e.g., branch, branchSpec, url)",
40528
+ description: "Set a single VCS root property such as branch, branchSpec, or url.",
40357
40529
  inputSchema: {
40358
40530
  type: "object",
40359
40531
  properties: {
@@ -40397,7 +40569,7 @@ var DEV_TOOLS = [
40397
40569
  idempotentHint: true,
40398
40570
  openWorldHint: true
40399
40571
  },
40400
- description: "Delete a single VCS root property",
40572
+ description: "Delete a single VCS root property.",
40401
40573
  inputSchema: {
40402
40574
  type: "object",
40403
40575
  properties: {
@@ -40434,7 +40606,7 @@ var DEV_TOOLS = [
40434
40606
  idempotentHint: true,
40435
40607
  openWorldHint: true
40436
40608
  },
40437
- description: "Update common VCS root properties in one call",
40609
+ description: "Update common VCS root properties in a single call.",
40438
40610
  inputSchema: {
40439
40611
  type: "object",
40440
40612
  properties: {
@@ -40510,7 +40682,7 @@ var DEV_TOOLS = [
40510
40682
  idempotentHint: true,
40511
40683
  openWorldHint: true
40512
40684
  },
40513
- description: "List queued builds (supports TeamCity queue locator + pagination)",
40685
+ description: "List queued builds. Supports TeamCity queue locator filtering and pagination.",
40514
40686
  inputSchema: {
40515
40687
  type: "object",
40516
40688
  properties: {
@@ -40584,7 +40756,7 @@ var DEV_TOOLS = [
40584
40756
  idempotentHint: true,
40585
40757
  openWorldHint: true
40586
40758
  },
40587
- description: "Fetch server metrics (CPU/memory/disk/load) if available",
40759
+ description: "Fetch TeamCity server metrics (CPU, memory, disk, load) when available.",
40588
40760
  inputSchema: { type: "object", properties: {} },
40589
40761
  handler: async (_args) => {
40590
40762
  return runTool(
@@ -40608,7 +40780,7 @@ var DEV_TOOLS = [
40608
40780
  idempotentHint: true,
40609
40781
  openWorldHint: true
40610
40782
  },
40611
- description: "Get TeamCity server info (version, build number, state)",
40783
+ description: "Get TeamCity server info including version, build number, and state.",
40612
40784
  inputSchema: { type: "object", properties: {} },
40613
40785
  handler: async (_args) => {
40614
40786
  return runTool(
@@ -40631,7 +40803,7 @@ var DEV_TOOLS = [
40631
40803
  idempotentHint: true,
40632
40804
  openWorldHint: true
40633
40805
  },
40634
- description: "List server health items (warnings/errors) for readiness checks",
40806
+ description: "List server health items (warnings and errors). Useful for readiness checks.",
40635
40807
  inputSchema: {
40636
40808
  type: "object",
40637
40809
  properties: {
@@ -40702,7 +40874,7 @@ var DEV_TOOLS = [
40702
40874
  idempotentHint: true,
40703
40875
  openWorldHint: true
40704
40876
  },
40705
- description: "Get a single server health item by locator",
40877
+ description: "Get a single server health item by locator.",
40706
40878
  inputSchema: {
40707
40879
  type: "object",
40708
40880
  properties: { locator: { type: "string", description: "Health item locator" } },
@@ -40732,7 +40904,7 @@ var DEV_TOOLS = [
40732
40904
  idempotentHint: true,
40733
40905
  openWorldHint: true
40734
40906
  },
40735
- description: "Evaluate server health; returns ok=false if critical health items found (severity ERROR)",
40907
+ description: "Evaluate server health. Returns ok=false when any ERROR-severity items are present.",
40736
40908
  inputSchema: {
40737
40909
  type: "object",
40738
40910
  properties: {
@@ -40770,7 +40942,7 @@ var DEV_TOOLS = [
40770
40942
  idempotentHint: true,
40771
40943
  openWorldHint: true
40772
40944
  },
40773
- description: "Get build types compatible with the specified agent",
40945
+ description: "List build types compatible with the specified agent.",
40774
40946
  inputSchema: {
40775
40947
  type: "object",
40776
40948
  properties: { agentId: { type: "string", description: "Agent ID" } },
@@ -40799,7 +40971,7 @@ var DEV_TOOLS = [
40799
40971
  idempotentHint: true,
40800
40972
  openWorldHint: true
40801
40973
  },
40802
- description: "Get build types incompatible with the specified agent",
40974
+ description: "List build types incompatible with the specified agent.",
40803
40975
  inputSchema: {
40804
40976
  type: "object",
40805
40977
  properties: { agentId: { type: "string", description: "Agent ID" } },
@@ -40828,7 +41000,7 @@ var DEV_TOOLS = [
40828
41000
  idempotentHint: true,
40829
41001
  openWorldHint: true
40830
41002
  },
40831
- description: "Get the enabled/disabled state for an agent, including comment and switch time",
41003
+ description: "Get an agent's enabled/disabled state, including comment and switch time.",
40832
41004
  inputSchema: {
40833
41005
  type: "object",
40834
41006
  properties: { agentId: { type: "string", description: "Agent ID" } },
@@ -40857,7 +41029,7 @@ var DEV_TOOLS = [
40857
41029
  idempotentHint: true,
40858
41030
  openWorldHint: true
40859
41031
  },
40860
- description: "List agents compatible with a build type (optionally filter enabled only)",
41032
+ description: "List agents compatible with a build type. Optionally filters to enabled agents only.",
40861
41033
  inputSchema: {
40862
41034
  type: "object",
40863
41035
  properties: {
@@ -40898,7 +41070,7 @@ var DEV_TOOLS = [
40898
41070
  idempotentHint: true,
40899
41071
  openWorldHint: true
40900
41072
  },
40901
- description: "Return only the count of enabled compatible agents for a build type",
41073
+ description: "Count enabled agents compatible with a build type.",
40902
41074
  inputSchema: {
40903
41075
  type: "object",
40904
41076
  properties: {
@@ -40940,7 +41112,7 @@ var DEV_TOOLS = [
40940
41112
  idempotentHint: true,
40941
41113
  openWorldHint: true
40942
41114
  },
40943
- description: "List agents compatible with a queued/running build by buildId (optionally filter enabled only)",
41115
+ description: "List agents compatible with a queued or running build. Optionally filters to enabled agents only.",
40944
41116
  inputSchema: {
40945
41117
  type: "object",
40946
41118
  properties: {
@@ -40984,7 +41156,7 @@ var DEV_TOOLS = [
40984
41156
  idempotentHint: true,
40985
41157
  openWorldHint: true
40986
41158
  },
40987
- description: "Check connectivity to TeamCity server and basic readiness",
41159
+ description: "Check connectivity and basic readiness of the TeamCity server.",
40988
41160
  inputSchema: { type: "object", properties: {} },
40989
41161
  handler: async (_args) => {
40990
41162
  const adapter = createAdapterFromTeamCityAPI(TeamCityAPI.getInstance());
@@ -41002,7 +41174,7 @@ var DEV_TOOLS = [
41002
41174
  idempotentHint: true,
41003
41175
  openWorldHint: true
41004
41176
  },
41005
- description: "List build agents (supports pagination)",
41177
+ description: "List build agents. Supports pagination.",
41006
41178
  inputSchema: {
41007
41179
  type: "object",
41008
41180
  properties: {
@@ -41069,7 +41241,7 @@ var DEV_TOOLS = [
41069
41241
  idempotentHint: true,
41070
41242
  openWorldHint: true
41071
41243
  },
41072
- description: "List agent pools (supports pagination)",
41244
+ description: "List agent pools. Supports pagination.",
41073
41245
  inputSchema: {
41074
41246
  type: "object",
41075
41247
  properties: {
@@ -41138,7 +41310,8 @@ var DEV_TOOLS = [
41138
41310
  idempotentHint: true,
41139
41311
  openWorldHint: true
41140
41312
  },
41141
- description: "Get detailed results of a build including tests, artifacts, changes, and statistics",
41313
+ description: "Get detailed results of a build. Optionally includes tests, artifacts, changes, statistics, and dependencies.",
41314
+ outputSchema: FIRST_BATCH_OUTPUT_SCHEMAS.get_build_results,
41142
41315
  inputSchema: {
41143
41316
  type: "object",
41144
41317
  properties: {
@@ -41260,7 +41433,7 @@ var DEV_TOOLS = [
41260
41433
  idempotentHint: false,
41261
41434
  openWorldHint: true
41262
41435
  },
41263
- description: "Download a single artifact with optional streaming output",
41436
+ description: "Download a single build artifact. Supports base64, text, or streaming output.",
41264
41437
  inputSchema: {
41265
41438
  type: "object",
41266
41439
  properties: {
@@ -41328,7 +41501,7 @@ var DEV_TOOLS = [
41328
41501
  idempotentHint: false,
41329
41502
  openWorldHint: true
41330
41503
  },
41331
- description: "Download multiple artifacts with optional streaming output",
41504
+ description: "Download multiple build artifacts. Supports base64, text, or streaming output.",
41332
41505
  inputSchema: {
41333
41506
  type: "object",
41334
41507
  properties: {
@@ -41496,7 +41669,7 @@ var DEV_TOOLS = [
41496
41669
  idempotentHint: true,
41497
41670
  openWorldHint: true
41498
41671
  },
41499
- description: "Get detailed information about test failures",
41672
+ description: "Get detailed information about test failures.",
41500
41673
  inputSchema: {
41501
41674
  type: "object",
41502
41675
  properties: {
@@ -41533,7 +41706,7 @@ var DEV_TOOLS = [
41533
41706
  idempotentHint: true,
41534
41707
  openWorldHint: true
41535
41708
  },
41536
- description: "Analyze and report build problems and failures",
41709
+ description: "Analyze and report build problems and failures.",
41537
41710
  inputSchema: {
41538
41711
  type: "object",
41539
41712
  properties: {
@@ -41571,7 +41744,7 @@ var DEV_TOOLS = [
41571
41744
  idempotentHint: true,
41572
41745
  openWorldHint: true
41573
41746
  },
41574
- description: "List VCS changes (supports pagination)",
41747
+ description: "List VCS changes. Supports pagination.",
41575
41748
  inputSchema: {
41576
41749
  type: "object",
41577
41750
  properties: {
@@ -41647,7 +41820,7 @@ var DEV_TOOLS = [
41647
41820
  idempotentHint: true,
41648
41821
  openWorldHint: true
41649
41822
  },
41650
- description: "List build problems (supports pagination)",
41823
+ description: "List build problems. Supports pagination.",
41651
41824
  inputSchema: {
41652
41825
  type: "object",
41653
41826
  properties: {
@@ -41723,7 +41896,7 @@ var DEV_TOOLS = [
41723
41896
  idempotentHint: true,
41724
41897
  openWorldHint: true
41725
41898
  },
41726
- description: "List problem occurrences (supports pagination)",
41899
+ description: "List build problem occurrences. Supports pagination.",
41727
41900
  inputSchema: {
41728
41901
  type: "object",
41729
41902
  properties: {
@@ -41805,7 +41978,7 @@ var DEV_TOOLS = [
41805
41978
  idempotentHint: true,
41806
41979
  openWorldHint: true
41807
41980
  },
41808
- description: "List open investigations (supports pagination)",
41981
+ description: "List open investigations. Supports pagination.",
41809
41982
  inputSchema: {
41810
41983
  type: "object",
41811
41984
  properties: {
@@ -41894,7 +42067,7 @@ var DEV_TOOLS = [
41894
42067
  idempotentHint: true,
41895
42068
  openWorldHint: true
41896
42069
  },
41897
- description: "List muted tests (supports pagination)",
42070
+ description: "List muted tests. Supports pagination.",
41898
42071
  inputSchema: {
41899
42072
  type: "object",
41900
42073
  properties: {
@@ -41976,7 +42149,7 @@ var DEV_TOOLS = [
41976
42149
  idempotentHint: true,
41977
42150
  openWorldHint: true
41978
42151
  },
41979
- description: "Get Versioned Settings status for a locator",
42152
+ description: "Get Versioned Settings status for a project locator.",
41980
42153
  inputSchema: {
41981
42154
  type: "object",
41982
42155
  properties: {
@@ -42020,7 +42193,7 @@ var DEV_TOOLS = [
42020
42193
  idempotentHint: true,
42021
42194
  openWorldHint: true
42022
42195
  },
42023
- description: "List TeamCity users (supports pagination)",
42196
+ description: "List TeamCity users. Supports pagination.",
42024
42197
  inputSchema: {
42025
42198
  type: "object",
42026
42199
  properties: {
@@ -42091,7 +42264,7 @@ var DEV_TOOLS = [
42091
42264
  idempotentHint: true,
42092
42265
  openWorldHint: true
42093
42266
  },
42094
- description: "List defined roles and their permissions",
42267
+ description: "List defined roles and their permissions.",
42095
42268
  inputSchema: {
42096
42269
  type: "object",
42097
42270
  properties: {
@@ -42125,7 +42298,7 @@ var DEV_TOOLS = [
42125
42298
  idempotentHint: true,
42126
42299
  openWorldHint: true
42127
42300
  },
42128
- description: "List branches for a project or build configuration",
42301
+ description: "List branches for a project or build configuration.",
42129
42302
  inputSchema: {
42130
42303
  type: "object",
42131
42304
  properties: {
@@ -42165,7 +42338,7 @@ var DEV_TOOLS = [
42165
42338
  idempotentHint: true,
42166
42339
  openWorldHint: true
42167
42340
  },
42168
- description: "List parameters for a build configuration",
42341
+ description: "List parameters for a build configuration.",
42169
42342
  inputSchema: {
42170
42343
  type: "object",
42171
42344
  properties: {
@@ -42198,7 +42371,7 @@ var DEV_TOOLS = [
42198
42371
  idempotentHint: true,
42199
42372
  openWorldHint: true
42200
42373
  },
42201
- description: "List project hierarchy showing parent-child relationships",
42374
+ description: "List project hierarchy showing parent-child relationships.",
42202
42375
  inputSchema: {
42203
42376
  type: "object",
42204
42377
  properties: {
@@ -42254,7 +42427,7 @@ var FULL_MODE_TOOLS = [
42254
42427
  idempotentHint: false,
42255
42428
  openWorldHint: true
42256
42429
  },
42257
- description: "Create a new TeamCity project",
42430
+ description: "Create a new TeamCity project.",
42258
42431
  inputSchema: {
42259
42432
  type: "object",
42260
42433
  properties: {
@@ -42301,7 +42474,7 @@ var FULL_MODE_TOOLS = [
42301
42474
  idempotentHint: true,
42302
42475
  openWorldHint: true
42303
42476
  },
42304
- description: "Delete a TeamCity project",
42477
+ description: "Delete a TeamCity project.",
42305
42478
  inputSchema: {
42306
42479
  type: "object",
42307
42480
  properties: {
@@ -42325,7 +42498,7 @@ var FULL_MODE_TOOLS = [
42325
42498
  idempotentHint: true,
42326
42499
  openWorldHint: true
42327
42500
  },
42328
- description: "Update project settings and parameters",
42501
+ description: "Update project settings and parameters.",
42329
42502
  inputSchema: {
42330
42503
  type: "object",
42331
42504
  properties: {
@@ -42421,7 +42594,7 @@ var FULL_MODE_TOOLS = [
42421
42594
  idempotentHint: false,
42422
42595
  openWorldHint: true
42423
42596
  },
42424
- description: "Create a new build configuration",
42597
+ description: "Create a new build configuration.",
42425
42598
  inputSchema: {
42426
42599
  type: "object",
42427
42600
  properties: {
@@ -42456,7 +42629,7 @@ var FULL_MODE_TOOLS = [
42456
42629
  idempotentHint: false,
42457
42630
  openWorldHint: true
42458
42631
  },
42459
- description: "Clone an existing build configuration",
42632
+ description: "Clone an existing build configuration.",
42460
42633
  inputSchema: {
42461
42634
  type: "object",
42462
42635
  properties: {
@@ -42556,7 +42729,7 @@ var FULL_MODE_TOOLS = [
42556
42729
  idempotentHint: true,
42557
42730
  openWorldHint: true
42558
42731
  },
42559
- description: "Update build configuration settings",
42732
+ description: "Update build configuration settings.",
42560
42733
  inputSchema: {
42561
42734
  type: "object",
42562
42735
  properties: {
@@ -42655,7 +42828,7 @@ var FULL_MODE_TOOLS = [
42655
42828
  idempotentHint: true,
42656
42829
  openWorldHint: true
42657
42830
  },
42658
- description: "Add, update, or delete artifact and snapshot dependencies for a build configuration",
42831
+ description: "Add, update, or delete artifact and snapshot dependencies for a build configuration.",
42659
42832
  inputSchema: {
42660
42833
  type: "object",
42661
42834
  properties: {
@@ -42803,7 +42976,7 @@ var FULL_MODE_TOOLS = [
42803
42976
  idempotentHint: true,
42804
42977
  openWorldHint: true
42805
42978
  },
42806
- description: "Add, update, or delete build features such as ssh-agent or requirements enforcement",
42979
+ description: "Add, update, or delete build features such as ssh-agent or requirements enforcement.",
42807
42980
  inputSchema: {
42808
42981
  type: "object",
42809
42982
  properties: {
@@ -42916,7 +43089,7 @@ var FULL_MODE_TOOLS = [
42916
43089
  idempotentHint: true,
42917
43090
  openWorldHint: true
42918
43091
  },
42919
- description: "Add, update, or delete build agent requirements for a configuration",
43092
+ description: "Add, update, or delete agent requirements for a build configuration.",
42920
43093
  inputSchema: {
42921
43094
  type: "object",
42922
43095
  properties: {
@@ -43068,7 +43241,7 @@ var FULL_MODE_TOOLS = [
43068
43241
  idempotentHint: true,
43069
43242
  openWorldHint: true
43070
43243
  },
43071
- description: "Enable or disable a build configuration by toggling its paused flag",
43244
+ description: "Enable or disable a build configuration by toggling its paused flag.",
43072
43245
  inputSchema: {
43073
43246
  type: "object",
43074
43247
  properties: {
@@ -43119,7 +43292,7 @@ var FULL_MODE_TOOLS = [
43119
43292
  idempotentHint: true,
43120
43293
  openWorldHint: true
43121
43294
  },
43122
- description: "Attach a VCS root to a build configuration",
43295
+ description: "Attach a VCS root to a build configuration.",
43123
43296
  inputSchema: {
43124
43297
  type: "object",
43125
43298
  properties: {
@@ -43173,7 +43346,7 @@ var FULL_MODE_TOOLS = [
43173
43346
  idempotentHint: true,
43174
43347
  openWorldHint: true
43175
43348
  },
43176
- description: "Add a parameter to a build configuration",
43349
+ description: "Add a parameter to a build configuration.",
43177
43350
  inputSchema: {
43178
43351
  type: "object",
43179
43352
  properties: {
@@ -43220,7 +43393,7 @@ var FULL_MODE_TOOLS = [
43220
43393
  idempotentHint: true,
43221
43394
  openWorldHint: true
43222
43395
  },
43223
- description: "Update a build configuration parameter",
43396
+ description: "Update a build configuration parameter.",
43224
43397
  inputSchema: {
43225
43398
  type: "object",
43226
43399
  properties: {
@@ -43268,7 +43441,7 @@ var FULL_MODE_TOOLS = [
43268
43441
  idempotentHint: true,
43269
43442
  openWorldHint: true
43270
43443
  },
43271
- description: "Delete a parameter from a build configuration",
43444
+ description: "Delete a parameter from a build configuration.",
43272
43445
  inputSchema: {
43273
43446
  type: "object",
43274
43447
  properties: {
@@ -43302,7 +43475,7 @@ var FULL_MODE_TOOLS = [
43302
43475
  idempotentHint: true,
43303
43476
  openWorldHint: true
43304
43477
  },
43305
- description: "List parameters for a project",
43478
+ description: "List parameters for a project.",
43306
43479
  inputSchema: {
43307
43480
  type: "object",
43308
43481
  properties: {
@@ -43329,7 +43502,7 @@ var FULL_MODE_TOOLS = [
43329
43502
  idempotentHint: true,
43330
43503
  openWorldHint: true
43331
43504
  },
43332
- description: "Add a parameter to a project",
43505
+ description: "Add a parameter to a project.",
43333
43506
  inputSchema: {
43334
43507
  type: "object",
43335
43508
  properties: {
@@ -43378,7 +43551,7 @@ var FULL_MODE_TOOLS = [
43378
43551
  idempotentHint: true,
43379
43552
  openWorldHint: true
43380
43553
  },
43381
- description: "Update a project parameter",
43554
+ description: "Update a project parameter.",
43382
43555
  inputSchema: {
43383
43556
  type: "object",
43384
43557
  properties: {
@@ -43426,7 +43599,7 @@ var FULL_MODE_TOOLS = [
43426
43599
  idempotentHint: true,
43427
43600
  openWorldHint: true
43428
43601
  },
43429
- description: "Delete a parameter from a project",
43602
+ description: "Delete a parameter from a project.",
43430
43603
  inputSchema: {
43431
43604
  type: "object",
43432
43605
  properties: {
@@ -43457,7 +43630,7 @@ var FULL_MODE_TOOLS = [
43457
43630
  idempotentHint: true,
43458
43631
  openWorldHint: true
43459
43632
  },
43460
- description: "List output parameters for a build configuration",
43633
+ description: "List output parameters for a build configuration.",
43461
43634
  inputSchema: {
43462
43635
  type: "object",
43463
43636
  properties: {
@@ -43484,7 +43657,7 @@ var FULL_MODE_TOOLS = [
43484
43657
  idempotentHint: true,
43485
43658
  openWorldHint: true
43486
43659
  },
43487
- description: "Add an output parameter to a build configuration (for build chains)",
43660
+ description: "Add an output parameter to a build configuration. Used to pass values between builds in a chain.",
43488
43661
  inputSchema: {
43489
43662
  type: "object",
43490
43663
  properties: {
@@ -43524,7 +43697,7 @@ var FULL_MODE_TOOLS = [
43524
43697
  idempotentHint: true,
43525
43698
  openWorldHint: true
43526
43699
  },
43527
- description: "Update an output parameter in a build configuration",
43700
+ description: "Update an output parameter in a build configuration.",
43528
43701
  inputSchema: {
43529
43702
  type: "object",
43530
43703
  properties: {
@@ -43564,7 +43737,7 @@ var FULL_MODE_TOOLS = [
43564
43737
  idempotentHint: true,
43565
43738
  openWorldHint: true
43566
43739
  },
43567
- description: "Delete an output parameter from a build configuration",
43740
+ description: "Delete an output parameter from a build configuration.",
43568
43741
  inputSchema: {
43569
43742
  type: "object",
43570
43743
  properties: {
@@ -43598,7 +43771,7 @@ var FULL_MODE_TOOLS = [
43598
43771
  idempotentHint: false,
43599
43772
  openWorldHint: true
43600
43773
  },
43601
- description: "Create a new VCS root",
43774
+ description: "Create a new VCS root.",
43602
43775
  inputSchema: {
43603
43776
  type: "object",
43604
43777
  properties: {
@@ -43642,7 +43815,7 @@ var FULL_MODE_TOOLS = [
43642
43815
  idempotentHint: true,
43643
43816
  openWorldHint: true
43644
43817
  },
43645
- description: "Authorize or unauthorize a build agent",
43818
+ description: "Authorize or unauthorize a build agent.",
43646
43819
  inputSchema: {
43647
43820
  type: "object",
43648
43821
  properties: {
@@ -43677,7 +43850,7 @@ var FULL_MODE_TOOLS = [
43677
43850
  idempotentHint: true,
43678
43851
  openWorldHint: true
43679
43852
  },
43680
- description: "Assign an agent to a different pool",
43853
+ description: "Assign an agent to a different pool.",
43681
43854
  inputSchema: {
43682
43855
  type: "object",
43683
43856
  properties: {
@@ -43709,7 +43882,7 @@ var FULL_MODE_TOOLS = [
43709
43882
  idempotentHint: true,
43710
43883
  openWorldHint: true
43711
43884
  },
43712
- description: "Remove (delete) a build agent from the TeamCity server. Use this to clean up disconnected or ghost agent entries.",
43885
+ description: "Remove a build agent from the TeamCity server. Useful for cleaning up disconnected or ghost agent entries.",
43713
43886
  inputSchema: {
43714
43887
  type: "object",
43715
43888
  properties: {
@@ -43734,7 +43907,7 @@ var FULL_MODE_TOOLS = [
43734
43907
  idempotentHint: true,
43735
43908
  openWorldHint: true
43736
43909
  },
43737
- description: "Add, update, or delete build steps",
43910
+ description: "Add, update, or delete build steps.",
43738
43911
  inputSchema: {
43739
43912
  type: "object",
43740
43913
  properties: {
@@ -43933,7 +44106,7 @@ var FULL_MODE_TOOLS = [
43933
44106
  idempotentHint: true,
43934
44107
  openWorldHint: true
43935
44108
  },
43936
- description: "Add, update, or delete build triggers",
44109
+ description: "Add, update, or delete build triggers.",
43937
44110
  inputSchema: {
43938
44111
  type: "object",
43939
44112
  properties: {
@@ -44006,7 +44179,7 @@ var FULL_MODE_TOOLS = [
44006
44179
  idempotentHint: true,
44007
44180
  openWorldHint: true
44008
44181
  },
44009
- description: "Set paused/unpaused for a list of build configurations; optionally cancel queued",
44182
+ description: "Pause or unpause a list of build configurations. Optionally cancels their queued builds.",
44010
44183
  inputSchema: {
44011
44184
  type: "object",
44012
44185
  properties: {
@@ -44073,7 +44246,7 @@ var FULL_MODE_TOOLS = [
44073
44246
  idempotentHint: false,
44074
44247
  openWorldHint: true
44075
44248
  },
44076
- description: "Mute tests within a project or build configuration scope",
44249
+ description: "Mute tests within a project or build configuration scope.",
44077
44250
  inputSchema: {
44078
44251
  type: "object",
44079
44252
  properties: {
@@ -44170,7 +44343,7 @@ var FULL_MODE_TOOLS = [
44170
44343
  idempotentHint: false,
44171
44344
  openWorldHint: true
44172
44345
  },
44173
- description: "Move a queued build to the top of the queue",
44346
+ description: "Move a queued build to the top of the queue.",
44174
44347
  inputSchema: {
44175
44348
  type: "object",
44176
44349
  properties: { buildId: { type: "string", description: "Queued build ID" } },
@@ -44205,7 +44378,7 @@ var FULL_MODE_TOOLS = [
44205
44378
  idempotentHint: false,
44206
44379
  openWorldHint: true
44207
44380
  },
44208
- description: "Reorder queued builds by providing the desired sequence of IDs",
44381
+ description: "Reorder queued builds by providing the desired sequence of IDs.",
44209
44382
  inputSchema: {
44210
44383
  type: "object",
44211
44384
  properties: { buildIds: { type: "array", items: { type: "string" } } },
@@ -44240,7 +44413,7 @@ var FULL_MODE_TOOLS = [
44240
44413
  idempotentHint: false,
44241
44414
  openWorldHint: true
44242
44415
  },
44243
- description: "Cancel all queued builds for a specific build configuration",
44416
+ description: "Cancel all queued builds for a specific build configuration.",
44244
44417
  inputSchema: {
44245
44418
  type: "object",
44246
44419
  properties: { buildTypeId: { type: "string", description: "Build type ID" } },
@@ -44282,7 +44455,7 @@ var FULL_MODE_TOOLS = [
44282
44455
  idempotentHint: false,
44283
44456
  openWorldHint: true
44284
44457
  },
44285
- description: "Cancel all queued builds matching a queue locator expression",
44458
+ description: "Cancel all queued builds matching a queue locator expression.",
44286
44459
  inputSchema: {
44287
44460
  type: "object",
44288
44461
  properties: { locator: { type: "string", description: "Queue locator expression" } },
@@ -44324,7 +44497,7 @@ var FULL_MODE_TOOLS = [
44324
44497
  idempotentHint: true,
44325
44498
  openWorldHint: true
44326
44499
  },
44327
- description: "Disable all agents in a pool to pause queue processing; optionally cancel queued builds for a build type",
44500
+ description: "Pause queue processing by disabling all agents in a pool. Optionally cancels queued builds for a build type.",
44328
44501
  inputSchema: {
44329
44502
  type: "object",
44330
44503
  properties: {
@@ -44402,7 +44575,7 @@ var FULL_MODE_TOOLS = [
44402
44575
  idempotentHint: true,
44403
44576
  openWorldHint: true
44404
44577
  },
44405
- description: "Re-enable all agents in a pool to resume queue processing",
44578
+ description: "Resume queue processing by re-enabling all agents in a pool.",
44406
44579
  inputSchema: {
44407
44580
  type: "object",
44408
44581
  properties: { poolId: { type: "string", description: "Agent pool ID" } },
@@ -44452,7 +44625,7 @@ var FULL_MODE_TOOLS = [
44452
44625
  idempotentHint: true,
44453
44626
  openWorldHint: true
44454
44627
  },
44455
- description: "Enable/disable an agent, with optional comment and schedule",
44628
+ description: "Enable or disable an agent. Supports optional comment and schedule.",
44456
44629
  inputSchema: {
44457
44630
  type: "object",
44458
44631
  properties: {
@@ -44504,7 +44677,7 @@ var FULL_MODE_TOOLS = [
44504
44677
  idempotentHint: true,
44505
44678
  openWorldHint: true
44506
44679
  },
44507
- description: "Bulk enable/disable agents selected by pool or locator; supports comment/schedule",
44680
+ description: "Bulk enable or disable agents selected by pool or locator. Supports optional comment and schedule.",
44508
44681
  inputSchema: {
44509
44682
  type: "object",
44510
44683
  properties: {
@@ -44597,7 +44770,7 @@ var FULL_MODE_TOOLS = [
44597
44770
  idempotentHint: true,
44598
44771
  openWorldHint: true
44599
44772
  },
44600
- description: "List SSH keys configured for a project",
44773
+ description: "List SSH keys configured for a project.",
44601
44774
  inputSchema: {
44602
44775
  type: "object",
44603
44776
  properties: {
@@ -44629,7 +44802,7 @@ var FULL_MODE_TOOLS = [
44629
44802
  idempotentHint: false,
44630
44803
  openWorldHint: true
44631
44804
  },
44632
- description: "Upload an SSH key to a project. Provide either privateKeyContent (raw PEM string) or privateKeyPath (path to key file), but not both.",
44805
+ description: "Upload an SSH key to a project. Provide either privateKeyContent or privateKeyPath, not both.",
44633
44806
  inputSchema: {
44634
44807
  type: "object",
44635
44808
  properties: {
@@ -44679,7 +44852,7 @@ var FULL_MODE_TOOLS = [
44679
44852
  idempotentHint: true,
44680
44853
  openWorldHint: true
44681
44854
  },
44682
- description: "Delete an SSH key from a project",
44855
+ description: "Delete an SSH key from a project.",
44683
44856
  inputSchema: {
44684
44857
  type: "object",
44685
44858
  properties: {
@@ -44720,6 +44893,18 @@ function getTool(name) {
44720
44893
  }
44721
44894
 
44722
44895
  // src/server.ts
44896
+ function parseStructuredContent(content) {
44897
+ const first = content[0];
44898
+ if (first?.type !== "text" || typeof first.text !== "string") return void 0;
44899
+ try {
44900
+ const parsed = JSON.parse(first.text);
44901
+ if (parsed !== null && typeof parsed === "object" && !Array.isArray(parsed)) {
44902
+ return parsed;
44903
+ }
44904
+ } catch {
44905
+ }
44906
+ return void 0;
44907
+ }
44723
44908
  function createSimpleServer() {
44724
44909
  const _config = getConfig();
44725
44910
  getAvailableTools();
@@ -44746,7 +44931,8 @@ function createSimpleServer() {
44746
44931
  name: tool.name,
44747
44932
  description: tool.description,
44748
44933
  inputSchema: tool.inputSchema,
44749
- annotations: tool.annotations
44934
+ annotations: tool.annotations,
44935
+ ...tool.outputSchema ? { outputSchema: tool.outputSchema } : {}
44750
44936
  }))
44751
44937
  };
44752
44938
  debug2("MCP response: tools/list", { count: response.tools.length, success: true });
@@ -44771,11 +44957,16 @@ function createSimpleServer() {
44771
44957
  }
44772
44958
  try {
44773
44959
  const result = await tool.handler(args ?? {});
44774
- const response = {
44775
- content: result.content ?? [
44776
- { type: "text", text: result.error ?? "Tool executed successfully" }
44777
- ]
44778
- };
44960
+ const content = result.content ?? [
44961
+ { type: "text", text: result.error ?? "Tool executed successfully" }
44962
+ ];
44963
+ const response = { content };
44964
+ if (tool.outputSchema && result.success !== false) {
44965
+ const structured = parseStructuredContent(content);
44966
+ if (structured !== void 0) {
44967
+ response.structuredContent = structured;
44968
+ }
44969
+ }
44779
44970
  const duration = Date.now() - started;
44780
44971
  const success = result?.success !== false;
44781
44972
  debug2("MCP response: tools/call", {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@daghis/teamcity-mcp",
3
- "version": "2.7.0",
3
+ "version": "2.9.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",
@@ -82,6 +82,8 @@
82
82
  "@types/node": "^25.0.2",
83
83
  "@typescript-eslint/eslint-plugin": "^8.58.0",
84
84
  "@typescript-eslint/parser": "^8.58.0",
85
+ "ajv": "^8.18.0",
86
+ "ajv-formats": "^3.0.1",
85
87
  "esbuild": "^0.28.0",
86
88
  "eslint": "^10.1.0",
87
89
  "eslint-config-prettier": "^10.1.8",
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.7.0",
10
+ "version": "2.9.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.7.0",
16
+ "version": "2.9.0",
17
17
  "runtimeHint": "npx",
18
18
  "runtimeArguments": [
19
19
  {