mcp4openapi 0.3.1 → 0.3.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (152) hide show
  1. package/README.md +7 -0
  2. package/dist/src/core/cli-config.d.ts.map +1 -1
  3. package/dist/src/core/cli-config.js +2 -0
  4. package/dist/src/core/cli-config.js.map +1 -1
  5. package/dist/src/core/index.d.ts.map +1 -1
  6. package/dist/src/core/index.js +18 -3
  7. package/dist/src/core/index.js.map +1 -1
  8. package/dist/src/index.js +0 -0
  9. package/dist/src/profile/profile-allowlist.d.ts +18 -0
  10. package/dist/src/profile/profile-allowlist.d.ts.map +1 -0
  11. package/dist/src/profile/profile-allowlist.js +68 -0
  12. package/dist/src/profile/profile-allowlist.js.map +1 -0
  13. package/dist/src/profile/profile-registry.d.ts +5 -0
  14. package/dist/src/profile/profile-registry.d.ts.map +1 -1
  15. package/dist/src/profile/profile-registry.js +38 -14
  16. package/dist/src/profile/profile-registry.js.map +1 -1
  17. package/package.json +2 -2
  18. package/profiles/gitlab/developer-profile-oauth.json +243 -41
  19. package/profiles/gitlab/developer-profile-oauth.test.json +1009 -5
  20. package/profiles/gitlab/openapi.yaml +1419 -164
  21. package/profiles/gitlab/profile-optimized-oauth.json +785 -0
  22. package/profiles/gitlab/profile-optimized-oauth.test.json +1566 -0
  23. package/profiles/grafana/openapi.json +28078 -0
  24. package/profiles/grafana/profile.json +1083 -0
  25. package/profiles/grafana/profile.test.json +235 -0
  26. package/profiles/mattermost/openapi.yaml +27434 -0
  27. package/profiles/mattermost/profile.json +463 -0
  28. package/profiles/mattermost/profile.test.json +607 -0
  29. package/profiles/n8n/profile-optimized.json +1002 -364
  30. package/profiles/n8n/profile-optimized.test.json +43 -43
  31. package/dist/src/argument-normalizer.d.ts +0 -5
  32. package/dist/src/argument-normalizer.d.ts.map +0 -1
  33. package/dist/src/argument-normalizer.js +0 -61
  34. package/dist/src/argument-normalizer.js.map +0 -1
  35. package/dist/src/cli-config.d.ts +0 -9
  36. package/dist/src/cli-config.d.ts.map +0 -1
  37. package/dist/src/cli-config.js +0 -111
  38. package/dist/src/cli-config.js.map +0 -1
  39. package/dist/src/composite-executor.d.ts +0 -77
  40. package/dist/src/composite-executor.d.ts.map +0 -1
  41. package/dist/src/composite-executor.js +0 -193
  42. package/dist/src/composite-executor.js.map +0 -1
  43. package/dist/src/constants.d.ts +0 -85
  44. package/dist/src/constants.d.ts.map +0 -1
  45. package/dist/src/constants.js +0 -85
  46. package/dist/src/constants.js.map +0 -1
  47. package/dist/src/dag-executor.d.ts +0 -49
  48. package/dist/src/dag-executor.d.ts.map +0 -1
  49. package/dist/src/dag-executor.js +0 -138
  50. package/dist/src/dag-executor.js.map +0 -1
  51. package/dist/src/errors.d.ts +0 -59
  52. package/dist/src/errors.d.ts.map +0 -1
  53. package/dist/src/errors.js +0 -119
  54. package/dist/src/errors.js.map +0 -1
  55. package/dist/src/filtering.d.ts +0 -19
  56. package/dist/src/filtering.d.ts.map +0 -1
  57. package/dist/src/filtering.js +0 -292
  58. package/dist/src/filtering.js.map +0 -1
  59. package/dist/src/http-client-factory.d.ts +0 -62
  60. package/dist/src/http-client-factory.d.ts.map +0 -1
  61. package/dist/src/http-client-factory.js +0 -133
  62. package/dist/src/http-client-factory.js.map +0 -1
  63. package/dist/src/http-transport-config.d.ts +0 -6
  64. package/dist/src/http-transport-config.d.ts.map +0 -1
  65. package/dist/src/http-transport-config.js +0 -47
  66. package/dist/src/http-transport-config.js.map +0 -1
  67. package/dist/src/http-transport.d.ts +0 -316
  68. package/dist/src/http-transport.d.ts.map +0 -1
  69. package/dist/src/http-transport.js +0 -2412
  70. package/dist/src/http-transport.js.map +0 -1
  71. package/dist/src/interceptors.d.ts +0 -116
  72. package/dist/src/interceptors.d.ts.map +0 -1
  73. package/dist/src/interceptors.js +0 -392
  74. package/dist/src/interceptors.js.map +0 -1
  75. package/dist/src/jsonrpc-validator.d.ts +0 -27
  76. package/dist/src/jsonrpc-validator.d.ts.map +0 -1
  77. package/dist/src/jsonrpc-validator.js +0 -58
  78. package/dist/src/jsonrpc-validator.js.map +0 -1
  79. package/dist/src/logger.d.ts +0 -59
  80. package/dist/src/logger.d.ts.map +0 -1
  81. package/dist/src/logger.js +0 -177
  82. package/dist/src/logger.js.map +0 -1
  83. package/dist/src/mcp-server-manager.d.ts +0 -20
  84. package/dist/src/mcp-server-manager.d.ts.map +0 -1
  85. package/dist/src/mcp-server-manager.js +0 -38
  86. package/dist/src/mcp-server-manager.js.map +0 -1
  87. package/dist/src/mcp-server.d.ts +0 -203
  88. package/dist/src/mcp-server.d.ts.map +0 -1
  89. package/dist/src/mcp-server.js +0 -1369
  90. package/dist/src/mcp-server.js.map +0 -1
  91. package/dist/src/metrics.d.ts +0 -97
  92. package/dist/src/metrics.d.ts.map +0 -1
  93. package/dist/src/metrics.js +0 -273
  94. package/dist/src/metrics.js.map +0 -1
  95. package/dist/src/naming-warnings.d.ts +0 -23
  96. package/dist/src/naming-warnings.d.ts.map +0 -1
  97. package/dist/src/naming-warnings.js +0 -83
  98. package/dist/src/naming-warnings.js.map +0 -1
  99. package/dist/src/naming.d.ts +0 -58
  100. package/dist/src/naming.d.ts.map +0 -1
  101. package/dist/src/naming.js +0 -510
  102. package/dist/src/naming.js.map +0 -1
  103. package/dist/src/oauth-provider.d.ts +0 -131
  104. package/dist/src/oauth-provider.d.ts.map +0 -1
  105. package/dist/src/oauth-provider.js +0 -836
  106. package/dist/src/oauth-provider.js.map +0 -1
  107. package/dist/src/openapi-parser.d.ts +0 -70
  108. package/dist/src/openapi-parser.d.ts.map +0 -1
  109. package/dist/src/openapi-parser.js +0 -436
  110. package/dist/src/openapi-parser.js.map +0 -1
  111. package/dist/src/profile-loader.d.ts +0 -78
  112. package/dist/src/profile-loader.d.ts.map +0 -1
  113. package/dist/src/profile-loader.js +0 -483
  114. package/dist/src/profile-loader.js.map +0 -1
  115. package/dist/src/profile-registry.d.ts +0 -18
  116. package/dist/src/profile-registry.d.ts.map +0 -1
  117. package/dist/src/profile-registry.js +0 -26
  118. package/dist/src/profile-registry.js.map +0 -1
  119. package/dist/src/profile-resolver.d.ts +0 -19
  120. package/dist/src/profile-resolver.d.ts.map +0 -1
  121. package/dist/src/profile-resolver.js +0 -167
  122. package/dist/src/profile-resolver.js.map +0 -1
  123. package/dist/src/proxy-executor.d.ts +0 -86
  124. package/dist/src/proxy-executor.d.ts.map +0 -1
  125. package/dist/src/proxy-executor.js +0 -497
  126. package/dist/src/proxy-executor.js.map +0 -1
  127. package/dist/src/schema-validator.d.ts +0 -30
  128. package/dist/src/schema-validator.d.ts.map +0 -1
  129. package/dist/src/schema-validator.js +0 -128
  130. package/dist/src/schema-validator.js.map +0 -1
  131. package/dist/src/startup-profile.d.ts +0 -17
  132. package/dist/src/startup-profile.d.ts.map +0 -1
  133. package/dist/src/startup-profile.js +0 -30
  134. package/dist/src/startup-profile.js.map +0 -1
  135. package/dist/src/startup-validation.d.ts +0 -11
  136. package/dist/src/startup-validation.d.ts.map +0 -1
  137. package/dist/src/startup-validation.js +0 -21
  138. package/dist/src/startup-validation.js.map +0 -1
  139. package/dist/src/tool-filter.d.ts +0 -65
  140. package/dist/src/tool-filter.d.ts.map +0 -1
  141. package/dist/src/tool-filter.js +0 -471
  142. package/dist/src/tool-filter.js.map +0 -1
  143. package/dist/src/tool-generator.d.ts +0 -67
  144. package/dist/src/tool-generator.d.ts.map +0 -1
  145. package/dist/src/tool-generator.js +0 -182
  146. package/dist/src/tool-generator.js.map +0 -1
  147. package/dist/src/validation-utils.d.ts +0 -49
  148. package/dist/src/validation-utils.d.ts.map +0 -1
  149. package/dist/src/validation-utils.js +0 -138
  150. package/dist/src/validation-utils.js.map +0 -1
  151. package/profiles/gitlab/developer-profile.json +0 -1508
  152. package/profiles/gitlab/developer-profile.test.json +0 -3432
@@ -0,0 +1,1566 @@
1
+ {
2
+ "$schema": "../../src/testing/test-schema.ts",
3
+ "profile_name": "gitlab-optimized-oauth",
4
+ "variables": {
5
+ "projectId": "123",
6
+ "groupId": "456",
7
+ "issueIid": 1,
8
+ "mergeRequestIid": 2,
9
+ "discussionId": "discussion-1",
10
+ "noteId": 10,
11
+ "awardId": 7,
12
+ "snippetId": 55,
13
+ "filePath": "README.md",
14
+ "ref": "main",
15
+ "fromRef": "main",
16
+ "toRef": "feature-branch",
17
+ "pipelineId": 1001,
18
+ "jobId": 2002,
19
+ "artifactPath": "reports/coverage.xml",
20
+ "hookId": 9001,
21
+ "variableKey": "DEPLOY_ENV"
22
+ },
23
+ "scenarios": [
24
+ {
25
+ "name": "Projects - List",
26
+ "tool": "retrieve_content",
27
+ "arguments": {
28
+ "action": "list_projects"
29
+ },
30
+ "mocks": [
31
+ {
32
+ "operationId": "getApiV4Projects",
33
+ "response": {
34
+ "body": [{"id": 123, "name": "demo"}]
35
+ }
36
+ }
37
+ ],
38
+ "expect": {
39
+ "success": true,
40
+ "result": [{"id": 123}]
41
+ }
42
+ },
43
+ {
44
+ "name": "Projects - Get",
45
+ "tool": "retrieve_content",
46
+ "arguments": {
47
+ "action": "get_project",
48
+ "project_id": "{{projectId}}"
49
+ },
50
+ "mocks": [
51
+ {
52
+ "operationId": "getApiV4ProjectsId",
53
+ "response": {
54
+ "body": {"id": 123, "name": "demo"}
55
+ }
56
+ }
57
+ ],
58
+ "expect": {
59
+ "success": true,
60
+ "result": {"id": 123}
61
+ }
62
+ },
63
+ {
64
+ "name": "Issues - List",
65
+ "tool": "retrieve_content",
66
+ "arguments": {
67
+ "action": "list_issues",
68
+ "project_id": "{{projectId}}",
69
+ "state": "opened"
70
+ },
71
+ "mocks": [
72
+ {
73
+ "operationId": "getApiV4ProjectsIdIssues",
74
+ "response": {
75
+ "body": [{"id": 1, "iid": 1, "title": "Bug"}]
76
+ }
77
+ }
78
+ ],
79
+ "expect": {
80
+ "success": true,
81
+ "result": [{"title": "Bug"}]
82
+ }
83
+ },
84
+ {
85
+ "name": "Issues - List Global",
86
+ "tool": "retrieve_content",
87
+ "arguments": {
88
+ "action": "list_issues_global",
89
+ "state": "opened"
90
+ },
91
+ "mocks": [
92
+ {
93
+ "operationId": "getApiV4Issues",
94
+ "response": {
95
+ "body": [{"id": 11, "iid": 2, "title": "Global Bug"}]
96
+ }
97
+ }
98
+ ],
99
+ "expect": {
100
+ "success": true,
101
+ "result": [{"title": "Global Bug"}]
102
+ }
103
+ },
104
+ {
105
+ "name": "Issues - Get",
106
+ "tool": "retrieve_content",
107
+ "arguments": {
108
+ "action": "get_issue",
109
+ "project_id": "{{projectId}}",
110
+ "issue_iid": "{{issueIid}}"
111
+ },
112
+ "mocks": [
113
+ {
114
+ "operationId": "getApiV4ProjectsIdIssuesIssueIid",
115
+ "response": {
116
+ "body": {"id": 1, "iid": 1, "title": "Bug"}
117
+ }
118
+ }
119
+ ],
120
+ "expect": {
121
+ "success": true,
122
+ "result": {"title": "Bug"}
123
+ }
124
+ },
125
+ {
126
+ "name": "Issues - List Notes",
127
+ "tool": "retrieve_content",
128
+ "arguments": {
129
+ "action": "list_issue_notes",
130
+ "project_id": "{{projectId}}",
131
+ "issue_iid": "{{issueIid}}"
132
+ },
133
+ "mocks": [
134
+ {
135
+ "operationId": "getApiV4ProjectsIdIssuesIssueIidNotes",
136
+ "response": {
137
+ "body": [{"id": 10, "body": "Note"}]
138
+ }
139
+ }
140
+ ],
141
+ "expect": {
142
+ "success": true,
143
+ "result": [{"id": 10}]
144
+ }
145
+ },
146
+ {
147
+ "name": "Issues - Get Note",
148
+ "tool": "retrieve_content",
149
+ "arguments": {
150
+ "action": "get_issue_note",
151
+ "project_id": "{{projectId}}",
152
+ "issue_iid": "{{issueIid}}",
153
+ "note_id": "{{noteId}}"
154
+ },
155
+ "mocks": [
156
+ {
157
+ "operationId": "getApiV4ProjectsIdIssuesIssueIidNotesNoteId",
158
+ "response": {
159
+ "body": {"id": 10, "body": "Note"}
160
+ }
161
+ }
162
+ ],
163
+ "expect": {
164
+ "success": true,
165
+ "result": {"id": 10}
166
+ }
167
+ },
168
+ {
169
+ "name": "Merge Requests - List",
170
+ "tool": "retrieve_content",
171
+ "arguments": {
172
+ "action": "list_merge_requests",
173
+ "project_id": "{{projectId}}",
174
+ "state": "opened"
175
+ },
176
+ "mocks": [
177
+ {
178
+ "operationId": "getApiV4ProjectsIdMergeRequests",
179
+ "response": {
180
+ "body": [{"id": 2, "iid": 2, "title": "MR"}]
181
+ }
182
+ }
183
+ ],
184
+ "expect": {
185
+ "success": true,
186
+ "result": [{"title": "MR"}]
187
+ }
188
+ },
189
+ {
190
+ "name": "Merge Requests - Get",
191
+ "tool": "retrieve_content",
192
+ "arguments": {
193
+ "action": "get_merge_request",
194
+ "project_id": "{{projectId}}",
195
+ "merge_request_iid": "{{mergeRequestIid}}"
196
+ },
197
+ "mocks": [
198
+ {
199
+ "operationId": "getApiV4ProjectsIdMergeRequestsMergeRequestIid",
200
+ "response": {
201
+ "body": {"id": 2, "iid": 2, "title": "MR"}
202
+ }
203
+ }
204
+ ],
205
+ "expect": {
206
+ "success": true,
207
+ "result": {"title": "MR"}
208
+ }
209
+ },
210
+ {
211
+ "name": "Merge Requests - List Notes",
212
+ "tool": "retrieve_content",
213
+ "arguments": {
214
+ "action": "list_merge_request_notes",
215
+ "project_id": "{{projectId}}",
216
+ "merge_request_iid": "{{mergeRequestIid}}"
217
+ },
218
+ "mocks": [
219
+ {
220
+ "operationId": "getApiV4ProjectsIdMergeRequestsMergeRequestIidNotes",
221
+ "response": {
222
+ "body": [{"id": 11, "body": "MR Note"}]
223
+ }
224
+ }
225
+ ],
226
+ "expect": {
227
+ "success": true,
228
+ "result": [{"id": 11}]
229
+ }
230
+ },
231
+ {
232
+ "name": "Merge Requests - Get Note",
233
+ "tool": "retrieve_content",
234
+ "arguments": {
235
+ "action": "get_merge_request_note",
236
+ "project_id": "{{projectId}}",
237
+ "merge_request_iid": "{{mergeRequestIid}}",
238
+ "note_id": "{{noteId}}"
239
+ },
240
+ "mocks": [
241
+ {
242
+ "operationId": "getApiV4ProjectsIdMergeRequestsMergeRequestIidNotesNoteId",
243
+ "response": {
244
+ "body": {"id": 11, "body": "MR Note"}
245
+ }
246
+ }
247
+ ],
248
+ "expect": {
249
+ "success": true,
250
+ "result": {"id": 11}
251
+ }
252
+ },
253
+ {
254
+ "name": "Merge Requests - List Commits",
255
+ "tool": "retrieve_content",
256
+ "arguments": {
257
+ "action": "list_merge_request_commits",
258
+ "project_id": "{{projectId}}",
259
+ "merge_request_iid": "{{mergeRequestIid}}"
260
+ },
261
+ "mocks": [
262
+ {
263
+ "operationId": "getApiV4ProjectsIdMergeRequestsMergeRequestIidCommits",
264
+ "response": {
265
+ "body": [{"id": "abc123", "title": "Commit"}]
266
+ }
267
+ }
268
+ ],
269
+ "expect": {
270
+ "success": true,
271
+ "result": [{"title": "Commit"}]
272
+ }
273
+ },
274
+ {
275
+ "name": "Merge Requests - List Diffs",
276
+ "tool": "retrieve_content",
277
+ "arguments": {
278
+ "action": "list_merge_request_diffs",
279
+ "project_id": "{{projectId}}",
280
+ "merge_request_iid": "{{mergeRequestIid}}"
281
+ },
282
+ "mocks": [
283
+ {
284
+ "operationId": "getApiV4ProjectsIdMergeRequestsMergeRequestIidDiffs",
285
+ "response": {
286
+ "body": [{"old_path": "a.txt", "new_path": "b.txt"}]
287
+ }
288
+ }
289
+ ],
290
+ "expect": {
291
+ "success": true,
292
+ "result": [{"old_path": "a.txt"}]
293
+ }
294
+ },
295
+ {
296
+ "name": "Merge Requests - List Raw Diffs",
297
+ "tool": "retrieve_content",
298
+ "arguments": {
299
+ "action": "list_merge_request_raw_diffs",
300
+ "project_id": "{{projectId}}",
301
+ "merge_request_iid": "{{mergeRequestIid}}"
302
+ },
303
+ "mocks": [
304
+ {
305
+ "operationId": "getApiV4ProjectsIdMergeRequestsMergeRequestIidRawDiffs",
306
+ "response": {
307
+ "body": "diff --git a/file.txt b/file.txt"
308
+ }
309
+ }
310
+ ],
311
+ "expect": {
312
+ "success": true
313
+ }
314
+ },
315
+ {
316
+ "name": "Merge Requests - List Pipelines",
317
+ "tool": "retrieve_content",
318
+ "arguments": {
319
+ "action": "list_merge_request_pipelines",
320
+ "project_id": "{{projectId}}",
321
+ "merge_request_iid": "{{mergeRequestIid}}"
322
+ },
323
+ "mocks": [
324
+ {
325
+ "operationId": "getApiV4ProjectsIdMergeRequestsMergeRequestIidPipelines",
326
+ "response": {
327
+ "body": [{"id": 100, "status": "success"}]
328
+ }
329
+ }
330
+ ],
331
+ "expect": {
332
+ "success": true,
333
+ "result": [{"id": 100}]
334
+ }
335
+ },
336
+ {
337
+ "name": "Snippets - List",
338
+ "tool": "retrieve_content",
339
+ "arguments": {
340
+ "action": "list_snippets",
341
+ "project_id": "{{projectId}}"
342
+ },
343
+ "mocks": [
344
+ {
345
+ "operationId": "getApiV4ProjectsIdSnippets",
346
+ "response": {
347
+ "body": [{"id": 55, "title": "Snippet"}]
348
+ }
349
+ }
350
+ ],
351
+ "expect": {
352
+ "success": true,
353
+ "result": [{"id": 55}]
354
+ }
355
+ },
356
+ {
357
+ "name": "Snippets - Get",
358
+ "tool": "retrieve_content",
359
+ "arguments": {
360
+ "action": "get_snippet",
361
+ "project_id": "{{projectId}}",
362
+ "snippet_id": "{{snippetId}}"
363
+ },
364
+ "mocks": [
365
+ {
366
+ "operationId": "getApiV4ProjectsIdSnippetsSnippetId",
367
+ "response": {
368
+ "body": {"id": 55, "title": "Snippet"}
369
+ }
370
+ }
371
+ ],
372
+ "expect": {
373
+ "success": true,
374
+ "result": {"id": 55}
375
+ }
376
+ },
377
+ {
378
+ "name": "Repository Files - Get",
379
+ "tool": "retrieve_content",
380
+ "arguments": {
381
+ "action": "get_file",
382
+ "project_id": "{{projectId}}",
383
+ "file_path": "{{filePath}}",
384
+ "ref": "{{ref}}"
385
+ },
386
+ "mocks": [
387
+ {
388
+ "operationId": "getApiV4ProjectsIdRepositoryFilesFilePath",
389
+ "response": {
390
+ "body": {"file_name": "README.md", "file_path": "README.md"}
391
+ }
392
+ }
393
+ ],
394
+ "expect": {
395
+ "success": true,
396
+ "result": {"file_name": "README.md"}
397
+ }
398
+ },
399
+ {
400
+ "name": "Create Issue",
401
+ "tool": "create_content",
402
+ "arguments": {
403
+ "action": "create_issue",
404
+ "project_id": "{{projectId}}",
405
+ "title": "New Issue"
406
+ },
407
+ "mocks": [
408
+ {
409
+ "operationId": "postApiV4ProjectsIdIssues",
410
+ "response": {
411
+ "status": 201,
412
+ "body": {"id": 3, "iid": 3, "title": "New Issue"}
413
+ }
414
+ }
415
+ ],
416
+ "expect": {
417
+ "success": true,
418
+ "result": {"title": "New Issue"}
419
+ }
420
+ },
421
+ {
422
+ "name": "Create Merge Request",
423
+ "tool": "create_content",
424
+ "arguments": {
425
+ "action": "create_merge_request",
426
+ "project_id": "{{projectId}}",
427
+ "title": "New MR",
428
+ "source_branch": "feature/a",
429
+ "target_branch": "main"
430
+ },
431
+ "mocks": [
432
+ {
433
+ "operationId": "postApiV4ProjectsIdMergeRequests",
434
+ "response": {
435
+ "status": 201,
436
+ "body": {"id": 4, "iid": 4, "title": "New MR"}
437
+ }
438
+ }
439
+ ],
440
+ "expect": {
441
+ "success": true,
442
+ "result": {"title": "New MR"}
443
+ }
444
+ },
445
+ {
446
+ "name": "Create Issue Note",
447
+ "tool": "create_content",
448
+ "arguments": {
449
+ "action": "create_issue_note",
450
+ "project_id": "{{projectId}}",
451
+ "issue_iid": "{{issueIid}}",
452
+ "body": "Note"
453
+ },
454
+ "mocks": [
455
+ {
456
+ "operationId": "postApiV4ProjectsIdIssuesIssueIidNotes",
457
+ "response": {
458
+ "status": 201,
459
+ "body": {"id": 12, "body": "Note"}
460
+ }
461
+ }
462
+ ],
463
+ "expect": {
464
+ "success": true,
465
+ "result": {"id": 12}
466
+ }
467
+ },
468
+ {
469
+ "name": "Create Merge Request Note",
470
+ "tool": "create_content",
471
+ "arguments": {
472
+ "action": "create_merge_request_note",
473
+ "project_id": "{{projectId}}",
474
+ "merge_request_iid": "{{mergeRequestIid}}",
475
+ "body": "MR Note"
476
+ },
477
+ "mocks": [
478
+ {
479
+ "operationId": "postApiV4ProjectsIdMergeRequestsMergeRequestIidNotes",
480
+ "response": {
481
+ "status": 201,
482
+ "body": {"id": 13, "body": "MR Note"}
483
+ }
484
+ }
485
+ ],
486
+ "expect": {
487
+ "success": true,
488
+ "result": {"id": 13}
489
+ }
490
+ },
491
+ {
492
+ "name": "Create Merge Request Pipeline",
493
+ "tool": "create_content",
494
+ "arguments": {
495
+ "action": "create_merge_request_pipeline",
496
+ "project_id": "{{projectId}}",
497
+ "merge_request_iid": "{{mergeRequestIid}}"
498
+ },
499
+ "mocks": [
500
+ {
501
+ "operationId": "postApiV4ProjectsIdMergeRequestsMergeRequestIidPipelines",
502
+ "response": {
503
+ "status": 201,
504
+ "body": {"id": 101, "status": "running"}
505
+ }
506
+ }
507
+ ],
508
+ "expect": {
509
+ "success": true,
510
+ "result": {"id": 101}
511
+ }
512
+ },
513
+ {
514
+ "name": "Update Issue",
515
+ "tool": "update_content",
516
+ "arguments": {
517
+ "action": "update_issue",
518
+ "project_id": "{{projectId}}",
519
+ "issue_iid": "{{issueIid}}",
520
+ "title": "Updated Issue"
521
+ },
522
+ "mocks": [
523
+ {
524
+ "operationId": "putApiV4ProjectsIdIssuesIssueIid",
525
+ "response": {
526
+ "body": {"id": 1, "iid": 1, "title": "Updated Issue"}
527
+ }
528
+ }
529
+ ],
530
+ "expect": {
531
+ "success": true,
532
+ "result": {"title": "Updated Issue"}
533
+ }
534
+ },
535
+ {
536
+ "name": "Update Merge Request",
537
+ "tool": "update_content",
538
+ "arguments": {
539
+ "action": "update_merge_request",
540
+ "project_id": "{{projectId}}",
541
+ "merge_request_iid": "{{mergeRequestIid}}",
542
+ "title": "Updated MR"
543
+ },
544
+ "mocks": [
545
+ {
546
+ "operationId": "putApiV4ProjectsIdMergeRequestsMergeRequestIid",
547
+ "response": {
548
+ "body": {"id": 2, "iid": 2, "title": "Updated MR"}
549
+ }
550
+ }
551
+ ],
552
+ "expect": {
553
+ "success": true,
554
+ "result": {"title": "Updated MR"}
555
+ }
556
+ },
557
+ {
558
+ "name": "Update Issue Note",
559
+ "tool": "update_content",
560
+ "arguments": {
561
+ "action": "update_issue_note",
562
+ "project_id": "{{projectId}}",
563
+ "issue_iid": "{{issueIid}}",
564
+ "note_id": "{{noteId}}",
565
+ "body": "Updated Note"
566
+ },
567
+ "mocks": [
568
+ {
569
+ "operationId": "putApiV4ProjectsIdIssuesIssueIidNotesNoteId",
570
+ "response": {
571
+ "body": {"id": 10, "body": "Updated Note"}
572
+ }
573
+ }
574
+ ],
575
+ "expect": {
576
+ "success": true,
577
+ "result": {"id": 10}
578
+ }
579
+ },
580
+ {
581
+ "name": "Update Merge Request Note",
582
+ "tool": "update_content",
583
+ "arguments": {
584
+ "action": "update_merge_request_note",
585
+ "project_id": "{{projectId}}",
586
+ "merge_request_iid": "{{mergeRequestIid}}",
587
+ "note_id": "{{noteId}}",
588
+ "body": "Updated MR Note"
589
+ },
590
+ "mocks": [
591
+ {
592
+ "operationId": "putApiV4ProjectsIdMergeRequestsMergeRequestIidNotesNoteId",
593
+ "response": {
594
+ "body": {"id": 11, "body": "Updated MR Note"}
595
+ }
596
+ }
597
+ ],
598
+ "expect": {
599
+ "success": true,
600
+ "result": {"id": 11}
601
+ }
602
+ },
603
+ {
604
+ "name": "Delete Issue",
605
+ "tool": "delete_content",
606
+ "arguments": {
607
+ "action": "delete_issue",
608
+ "project_id": "{{projectId}}",
609
+ "issue_iid": "{{issueIid}}"
610
+ },
611
+ "mocks": [
612
+ {
613
+ "operationId": "deleteApiV4ProjectsIdIssuesIssueIid",
614
+ "response": {
615
+ "status": 204
616
+ }
617
+ }
618
+ ],
619
+ "expect": {
620
+ "success": true
621
+ }
622
+ },
623
+ {
624
+ "name": "Delete Merge Request",
625
+ "tool": "delete_content",
626
+ "arguments": {
627
+ "action": "delete_merge_request",
628
+ "project_id": "{{projectId}}",
629
+ "merge_request_iid": "{{mergeRequestIid}}"
630
+ },
631
+ "mocks": [
632
+ {
633
+ "operationId": "deleteApiV4ProjectsIdMergeRequestsMergeRequestIid",
634
+ "response": {
635
+ "status": 204
636
+ }
637
+ }
638
+ ],
639
+ "expect": {
640
+ "success": true
641
+ }
642
+ },
643
+ {
644
+ "name": "Delete Issue Note",
645
+ "tool": "delete_content",
646
+ "arguments": {
647
+ "action": "delete_issue_note",
648
+ "project_id": "{{projectId}}",
649
+ "issue_iid": "{{issueIid}}",
650
+ "note_id": "{{noteId}}"
651
+ },
652
+ "mocks": [
653
+ {
654
+ "operationId": "deleteApiV4ProjectsIdIssuesIssueIidNotesNoteId",
655
+ "response": {
656
+ "status": 204
657
+ }
658
+ }
659
+ ],
660
+ "expect": {
661
+ "success": true
662
+ }
663
+ },
664
+ {
665
+ "name": "Delete Merge Request Note",
666
+ "tool": "delete_content",
667
+ "arguments": {
668
+ "action": "delete_merge_request_note",
669
+ "project_id": "{{projectId}}",
670
+ "merge_request_iid": "{{mergeRequestIid}}",
671
+ "note_id": "{{noteId}}"
672
+ },
673
+ "mocks": [
674
+ {
675
+ "operationId": "deleteApiV4ProjectsIdMergeRequestsMergeRequestIidNotesNoteId",
676
+ "response": {
677
+ "status": 204
678
+ }
679
+ }
680
+ ],
681
+ "expect": {
682
+ "success": true
683
+ }
684
+ },
685
+ {
686
+ "name": "Projects - List Members",
687
+ "tool": "retrieve_content",
688
+ "arguments": {
689
+ "action": "list_project_members",
690
+ "project_id": "{{projectId}}"
691
+ },
692
+ "mocks": [
693
+ {
694
+ "operationId": "getApiV4ProjectsIdMembers",
695
+ "response": {
696
+ "body": [{"id": 101, "name": "Member"}]
697
+ }
698
+ }
699
+ ],
700
+ "expect": {
701
+ "success": true,
702
+ "result": [{"id": 101}]
703
+ }
704
+ },
705
+ {
706
+ "name": "Project Hooks - List",
707
+ "tool": "retrieve_content",
708
+ "arguments": {
709
+ "action": "list_project_hooks",
710
+ "project_id": "{{projectId}}"
711
+ },
712
+ "mocks": [
713
+ {
714
+ "operationId": "getApiV4ProjectsIdHooks",
715
+ "response": {
716
+ "body": [{"id": 9001, "url": "https://example.com/hook"}]
717
+ }
718
+ }
719
+ ],
720
+ "expect": {
721
+ "success": true,
722
+ "result": [{"id": 9001}]
723
+ }
724
+ },
725
+ {
726
+ "name": "Project Hooks - Get",
727
+ "tool": "retrieve_content",
728
+ "arguments": {
729
+ "action": "get_project_hook",
730
+ "project_id": "{{projectId}}",
731
+ "hook_id": "{{hookId}}"
732
+ },
733
+ "mocks": [
734
+ {
735
+ "operationId": "getApiV4ProjectsIdHooksHookId",
736
+ "response": {
737
+ "body": {"id": 9001, "url": "https://example.com/hook"}
738
+ }
739
+ }
740
+ ],
741
+ "expect": {
742
+ "success": true,
743
+ "result": {"id": 9001}
744
+ }
745
+ },
746
+ {
747
+ "name": "Project Variables - List",
748
+ "tool": "retrieve_content",
749
+ "arguments": {
750
+ "action": "list_project_variables",
751
+ "project_id": "{{projectId}}"
752
+ },
753
+ "mocks": [
754
+ {
755
+ "operationId": "getApiV4ProjectsIdVariables",
756
+ "response": {
757
+ "body": [{"key": "DEPLOY_ENV", "value": "staging"}]
758
+ }
759
+ }
760
+ ],
761
+ "expect": {
762
+ "success": true,
763
+ "result": [{"key": "DEPLOY_ENV"}]
764
+ }
765
+ },
766
+ {
767
+ "name": "Project Variables - Get",
768
+ "tool": "retrieve_content",
769
+ "arguments": {
770
+ "action": "get_project_variable",
771
+ "project_id": "{{projectId}}",
772
+ "key": "{{variableKey}}"
773
+ },
774
+ "mocks": [
775
+ {
776
+ "operationId": "getApiV4ProjectsIdVariablesKey",
777
+ "response": {
778
+ "body": {"key": "DEPLOY_ENV", "value": "staging"}
779
+ }
780
+ }
781
+ ],
782
+ "expect": {
783
+ "success": true,
784
+ "result": {"key": "DEPLOY_ENV"}
785
+ }
786
+ },
787
+ {
788
+ "name": "Issues - List Discussions",
789
+ "tool": "retrieve_content",
790
+ "arguments": {
791
+ "action": "list_issue_discussions",
792
+ "project_id": "{{projectId}}",
793
+ "issue_iid": "{{issueIid}}"
794
+ },
795
+ "mocks": [
796
+ {
797
+ "operationId": "getApiV4ProjectsIdIssuesIssueIidDiscussions",
798
+ "response": {
799
+ "body": [{"id": "discussion-1", "resolved": false}]
800
+ }
801
+ }
802
+ ],
803
+ "expect": {
804
+ "success": true,
805
+ "result": [{"id": "discussion-1"}]
806
+ }
807
+ },
808
+ {
809
+ "name": "Issues - Get Discussion",
810
+ "tool": "retrieve_content",
811
+ "arguments": {
812
+ "action": "get_issue_discussion",
813
+ "project_id": "{{projectId}}",
814
+ "issue_iid": "{{issueIid}}",
815
+ "discussion_id": "{{discussionId}}"
816
+ },
817
+ "mocks": [
818
+ {
819
+ "operationId": "getApiV4ProjectsIdIssuesIssueIidDiscussionsDiscussionId",
820
+ "response": {
821
+ "body": {"id": "discussion-1", "resolved": false}
822
+ }
823
+ }
824
+ ],
825
+ "expect": {
826
+ "success": true,
827
+ "result": {"id": "discussion-1"}
828
+ }
829
+ },
830
+ {
831
+ "name": "Issues - List Note Award Emoji",
832
+ "tool": "retrieve_content",
833
+ "arguments": {
834
+ "action": "list_issue_note_award_emoji",
835
+ "project_id": "{{projectId}}",
836
+ "issue_iid": "{{issueIid}}",
837
+ "note_id": "{{noteId}}"
838
+ },
839
+ "mocks": [
840
+ {
841
+ "operationId": "getApiV4ProjectsIdIssuesIssueIidNotesNoteIdAwardEmoji",
842
+ "response": {
843
+ "body": [{"id": 7, "name": "thumbsup"}]
844
+ }
845
+ }
846
+ ],
847
+ "expect": {
848
+ "success": true,
849
+ "result": [{"id": 7}]
850
+ }
851
+ },
852
+ {
853
+ "name": "Issues - Get Note Award Emoji",
854
+ "tool": "retrieve_content",
855
+ "arguments": {
856
+ "action": "get_issue_note_award_emoji",
857
+ "project_id": "{{projectId}}",
858
+ "issue_iid": "{{issueIid}}",
859
+ "note_id": "{{noteId}}",
860
+ "award_id": "{{awardId}}"
861
+ },
862
+ "mocks": [
863
+ {
864
+ "operationId": "getApiV4ProjectsIdIssuesIssueIidNotesNoteIdAwardEmojiAwardId",
865
+ "response": {
866
+ "body": {"id": 7, "name": "thumbsup"}
867
+ }
868
+ }
869
+ ],
870
+ "expect": {
871
+ "success": true,
872
+ "result": {"id": 7}
873
+ }
874
+ },
875
+ {
876
+ "name": "Repository - List Tree",
877
+ "tool": "retrieve_content",
878
+ "arguments": {
879
+ "action": "list_repository_tree",
880
+ "project_id": "{{projectId}}",
881
+ "path": "src"
882
+ },
883
+ "mocks": [
884
+ {
885
+ "operationId": "getApiV4ProjectsIdRepositoryTree",
886
+ "response": {
887
+ "body": [{"id": "abc", "name": "index.js", "type": "blob"}]
888
+ }
889
+ }
890
+ ],
891
+ "expect": {
892
+ "success": true,
893
+ "result": [{"name": "index.js"}]
894
+ }
895
+ },
896
+ {
897
+ "name": "Repository - Compare Refs",
898
+ "tool": "retrieve_content",
899
+ "arguments": {
900
+ "action": "compare_refs",
901
+ "project_id": "{{projectId}}",
902
+ "from": "{{fromRef}}",
903
+ "to": "{{toRef}}"
904
+ },
905
+ "mocks": [
906
+ {
907
+ "operationId": "getApiV4ProjectsIdRepositoryCompare",
908
+ "response": {
909
+ "body": {"compare_timeout": false, "commits": []}
910
+ }
911
+ }
912
+ ],
913
+ "expect": {
914
+ "success": true,
915
+ "result": {"compare_timeout": false}
916
+ }
917
+ },
918
+ {
919
+ "name": "Repository - Get Commit",
920
+ "tool": "retrieve_content",
921
+ "arguments": {
922
+ "action": "get_commit",
923
+ "project_id": "{{projectId}}",
924
+ "sha": "abc123"
925
+ },
926
+ "mocks": [
927
+ {
928
+ "operationId": "getApiV4ProjectsIdRepositoryCommitsSha",
929
+ "response": {
930
+ "body": {"id": "abc123", "title": "Commit"}
931
+ }
932
+ }
933
+ ],
934
+ "expect": {
935
+ "success": true,
936
+ "result": {"id": "abc123"}
937
+ }
938
+ },
939
+ {
940
+ "name": "Pipelines - List",
941
+ "tool": "retrieve_content",
942
+ "arguments": {
943
+ "action": "list_pipelines",
944
+ "project_id": "{{projectId}}",
945
+ "ref": "{{ref}}"
946
+ },
947
+ "mocks": [
948
+ {
949
+ "operationId": "getApiV4ProjectsIdPipelines",
950
+ "response": {
951
+ "body": [{"id": 1001, "status": "success"}]
952
+ }
953
+ }
954
+ ],
955
+ "expect": {
956
+ "success": true,
957
+ "result": [{"id": 1001}]
958
+ }
959
+ },
960
+ {
961
+ "name": "Pipelines - List Jobs",
962
+ "tool": "retrieve_content",
963
+ "arguments": {
964
+ "action": "list_pipeline_jobs",
965
+ "project_id": "{{projectId}}",
966
+ "pipeline_id": "{{pipelineId}}"
967
+ },
968
+ "mocks": [
969
+ {
970
+ "operationId": "getApiV4ProjectsIdPipelinesPipelineIdJobs",
971
+ "response": {
972
+ "body": [{"id": 2002, "status": "success"}]
973
+ }
974
+ }
975
+ ],
976
+ "expect": {
977
+ "success": true,
978
+ "result": [{"id": 2002}]
979
+ }
980
+ },
981
+ {
982
+ "name": "Jobs - Get",
983
+ "tool": "retrieve_content",
984
+ "arguments": {
985
+ "action": "get_job",
986
+ "project_id": "{{projectId}}",
987
+ "job_id": "{{jobId}}"
988
+ },
989
+ "mocks": [
990
+ {
991
+ "operationId": "getSingleJob",
992
+ "response": {
993
+ "body": {"id": 2002, "status": "success"}
994
+ }
995
+ }
996
+ ],
997
+ "expect": {
998
+ "success": true,
999
+ "result": {"id": 2002}
1000
+ }
1001
+ },
1002
+ {
1003
+ "name": "Jobs - Download Artifacts Archive",
1004
+ "tool": "retrieve_content",
1005
+ "arguments": {
1006
+ "action": "download_job_artifacts",
1007
+ "project_id": "{{projectId}}",
1008
+ "job_id": "{{jobId}}"
1009
+ },
1010
+ "mocks": [
1011
+ {
1012
+ "operationId": "getSingleJob",
1013
+ "response": {
1014
+ "body": {
1015
+ "id": 2002,
1016
+ "artifacts_file": {
1017
+ "filename": "artifacts.zip"
1018
+ }
1019
+ }
1020
+ }
1021
+ },
1022
+ {
1023
+ "operationId": "getApiV4ProjectsIdJobsJobIdArtifacts",
1024
+ "response": {
1025
+ "status": 200,
1026
+ "body": "PK...",
1027
+ "headers": {
1028
+ "content-type": "application/zip"
1029
+ }
1030
+ }
1031
+ }
1032
+ ],
1033
+ "expect": {
1034
+ "success": true,
1035
+ "result": {
1036
+ "fileName": "artifacts.zip"
1037
+ }
1038
+ }
1039
+ },
1040
+ {
1041
+ "name": "Jobs - Download Artifact File",
1042
+ "tool": "retrieve_content",
1043
+ "arguments": {
1044
+ "action": "download_job_artifact",
1045
+ "project_id": "{{projectId}}",
1046
+ "job_id": "{{jobId}}",
1047
+ "artifact_path": "{{artifactPath}}"
1048
+ },
1049
+ "mocks": [
1050
+ {
1051
+ "operationId": "getSingleJob",
1052
+ "response": {
1053
+ "body": {
1054
+ "id": 2002,
1055
+ "artifacts_file": {
1056
+ "filename": "artifacts.zip"
1057
+ }
1058
+ }
1059
+ }
1060
+ },
1061
+ {
1062
+ "operationId": "getApiV4ProjectsIdJobsJobIdArtifactsArtifactPath",
1063
+ "response": {
1064
+ "status": 200,
1065
+ "body": "<xml/>",
1066
+ "headers": {
1067
+ "content-type": "application/xml"
1068
+ }
1069
+ }
1070
+ }
1071
+ ],
1072
+ "expect": {
1073
+ "success": true,
1074
+ "result": {
1075
+ "fileName": "artifacts.zip"
1076
+ }
1077
+ }
1078
+ },
1079
+ {
1080
+ "name": "Labels - List Project Labels",
1081
+ "tool": "retrieve_content",
1082
+ "arguments": {
1083
+ "action": "list_project_labels",
1084
+ "project_id": "{{projectId}}"
1085
+ },
1086
+ "mocks": [
1087
+ {
1088
+ "operationId": "getApiV4ProjectsIdLabels",
1089
+ "response": {
1090
+ "body": [{"id": 1, "name": "bug"}]
1091
+ }
1092
+ }
1093
+ ],
1094
+ "expect": {
1095
+ "success": true,
1096
+ "result": [{"name": "bug"}]
1097
+ }
1098
+ },
1099
+ {
1100
+ "name": "Labels - List Group Labels",
1101
+ "tool": "retrieve_content",
1102
+ "arguments": {
1103
+ "action": "list_group_labels",
1104
+ "group_id": "{{groupId}}"
1105
+ },
1106
+ "mocks": [
1107
+ {
1108
+ "operationId": "getApiV4GroupsIdLabels",
1109
+ "response": {
1110
+ "body": [{"id": 2, "name": "team"}]
1111
+ }
1112
+ }
1113
+ ],
1114
+ "expect": {
1115
+ "success": true,
1116
+ "result": [{"name": "team"}]
1117
+ }
1118
+ },
1119
+ {
1120
+ "name": "Milestones - List Project Milestones",
1121
+ "tool": "retrieve_content",
1122
+ "arguments": {
1123
+ "action": "list_project_milestones",
1124
+ "project_id": "{{projectId}}"
1125
+ },
1126
+ "mocks": [
1127
+ {
1128
+ "operationId": "getApiV4ProjectsIdMilestones",
1129
+ "response": {
1130
+ "body": [{"id": 1, "iid": 1, "title": "v1"}]
1131
+ }
1132
+ }
1133
+ ],
1134
+ "expect": {
1135
+ "success": true,
1136
+ "result": [{"title": "v1"}]
1137
+ }
1138
+ },
1139
+ {
1140
+ "name": "Milestones - List Group Milestones",
1141
+ "tool": "retrieve_content",
1142
+ "arguments": {
1143
+ "action": "list_group_milestones",
1144
+ "group_id": "{{groupId}}"
1145
+ },
1146
+ "mocks": [
1147
+ {
1148
+ "operationId": "getApiV4GroupsIdMilestones",
1149
+ "response": {
1150
+ "body": [{"id": 2, "iid": 2, "title": "v2"}]
1151
+ }
1152
+ }
1153
+ ],
1154
+ "expect": {
1155
+ "success": true,
1156
+ "result": [{"title": "v2"}]
1157
+ }
1158
+ },
1159
+ {
1160
+ "name": "Issues - Create Discussion",
1161
+ "tool": "create_content",
1162
+ "arguments": {
1163
+ "action": "create_issue_discussion",
1164
+ "project_id": "{{projectId}}",
1165
+ "issue_iid": "{{issueIid}}",
1166
+ "body": "Discussion"
1167
+ },
1168
+ "mocks": [
1169
+ {
1170
+ "operationId": "postApiV4ProjectsIdIssuesIssueIidDiscussions",
1171
+ "response": {
1172
+ "status": 201,
1173
+ "body": {"id": "discussion-1", "resolved": false}
1174
+ }
1175
+ }
1176
+ ],
1177
+ "expect": {
1178
+ "success": true,
1179
+ "result": {"id": "discussion-1"}
1180
+ }
1181
+ },
1182
+ {
1183
+ "name": "Issues - Reply Discussion",
1184
+ "tool": "create_content",
1185
+ "arguments": {
1186
+ "action": "reply_issue_discussion",
1187
+ "project_id": "{{projectId}}",
1188
+ "issue_iid": "{{issueIid}}",
1189
+ "discussion_id": "{{discussionId}}",
1190
+ "body": "Reply"
1191
+ },
1192
+ "mocks": [
1193
+ {
1194
+ "operationId": "postApiV4ProjectsIdIssuesIssueIidDiscussionsDiscussionIdNotes",
1195
+ "response": {
1196
+ "status": 201,
1197
+ "body": {"id": "discussion-1", "notes": []}
1198
+ }
1199
+ }
1200
+ ],
1201
+ "expect": {
1202
+ "success": true,
1203
+ "result": {"id": "discussion-1"}
1204
+ }
1205
+ },
1206
+ {
1207
+ "name": "Issues - Create Note Award Emoji",
1208
+ "tool": "create_content",
1209
+ "arguments": {
1210
+ "action": "create_issue_note_award_emoji",
1211
+ "project_id": "{{projectId}}",
1212
+ "issue_iid": "{{issueIid}}",
1213
+ "note_id": "{{noteId}}",
1214
+ "name": "thumbsup"
1215
+ },
1216
+ "mocks": [
1217
+ {
1218
+ "operationId": "postApiV4ProjectsIdIssuesIssueIidNotesNoteIdAwardEmoji",
1219
+ "response": {
1220
+ "status": 201,
1221
+ "body": {"id": 7, "name": "thumbsup"}
1222
+ }
1223
+ }
1224
+ ],
1225
+ "expect": {
1226
+ "success": true,
1227
+ "result": {"id": 7}
1228
+ }
1229
+ },
1230
+ {
1231
+ "name": "Repository Files - Create",
1232
+ "tool": "create_content",
1233
+ "arguments": {
1234
+ "action": "create_file",
1235
+ "project_id": "{{projectId}}",
1236
+ "file_path": "{{filePath}}",
1237
+ "branch": "{{ref}}",
1238
+ "content": "Hello",
1239
+ "commit_message": "Add file"
1240
+ },
1241
+ "mocks": [
1242
+ {
1243
+ "operationId": "postApiV4ProjectsIdRepositoryFilesFilePath",
1244
+ "response": {
1245
+ "status": 201,
1246
+ "body": {"file_name": "README.md", "file_path": "README.md"}
1247
+ }
1248
+ }
1249
+ ],
1250
+ "expect": {
1251
+ "success": true,
1252
+ "result": {"file_name": "README.md"}
1253
+ }
1254
+ },
1255
+ {
1256
+ "name": "Project Variables - Create",
1257
+ "tool": "create_content",
1258
+ "arguments": {
1259
+ "action": "create_project_variable",
1260
+ "project_id": "{{projectId}}",
1261
+ "key": "{{variableKey}}",
1262
+ "value": "staging"
1263
+ },
1264
+ "mocks": [
1265
+ {
1266
+ "operationId": "postApiV4ProjectsIdVariables",
1267
+ "response": {
1268
+ "status": 201,
1269
+ "body": {"key": "DEPLOY_ENV", "value": "staging"}
1270
+ }
1271
+ }
1272
+ ],
1273
+ "expect": {
1274
+ "success": true,
1275
+ "result": {"key": "DEPLOY_ENV"}
1276
+ }
1277
+ },
1278
+ {
1279
+ "name": "Project Hooks - Create",
1280
+ "tool": "create_content",
1281
+ "arguments": {
1282
+ "action": "create_project_hook",
1283
+ "project_id": "{{projectId}}",
1284
+ "url": "https://example.com/hook"
1285
+ },
1286
+ "mocks": [
1287
+ {
1288
+ "operationId": "postApiV4ProjectsIdHooks",
1289
+ "response": {
1290
+ "status": 201,
1291
+ "body": {"id": 9001, "url": "https://example.com/hook"}
1292
+ }
1293
+ }
1294
+ ],
1295
+ "expect": {
1296
+ "success": true,
1297
+ "result": {"id": 9001}
1298
+ }
1299
+ },
1300
+ {
1301
+ "name": "Issues - Resolve Discussion",
1302
+ "tool": "update_content",
1303
+ "arguments": {
1304
+ "action": "set_issue_discussion_resolved",
1305
+ "project_id": "{{projectId}}",
1306
+ "issue_iid": "{{issueIid}}",
1307
+ "discussion_id": "{{discussionId}}",
1308
+ "resolved": true
1309
+ },
1310
+ "mocks": [
1311
+ {
1312
+ "operationId": "putApiV4ProjectsIdIssuesIssueIidDiscussionsDiscussionId",
1313
+ "response": {
1314
+ "body": {"id": "discussion-1", "resolved": true}
1315
+ }
1316
+ }
1317
+ ],
1318
+ "expect": {
1319
+ "success": true,
1320
+ "result": {"resolved": true}
1321
+ }
1322
+ },
1323
+ {
1324
+ "name": "Repository Files - Update",
1325
+ "tool": "update_content",
1326
+ "arguments": {
1327
+ "action": "update_file",
1328
+ "project_id": "{{projectId}}",
1329
+ "file_path": "{{filePath}}",
1330
+ "branch": "{{ref}}",
1331
+ "content": "Updated",
1332
+ "commit_message": "Update file"
1333
+ },
1334
+ "mocks": [
1335
+ {
1336
+ "operationId": "putApiV4ProjectsIdRepositoryFilesFilePath",
1337
+ "response": {
1338
+ "body": {"file_name": "README.md", "file_path": "README.md"}
1339
+ }
1340
+ }
1341
+ ],
1342
+ "expect": {
1343
+ "success": true,
1344
+ "result": {"file_name": "README.md"}
1345
+ }
1346
+ },
1347
+ {
1348
+ "name": "Jobs - Retry",
1349
+ "tool": "update_content",
1350
+ "arguments": {
1351
+ "action": "retry_job",
1352
+ "project_id": "{{projectId}}",
1353
+ "job_id": "{{jobId}}"
1354
+ },
1355
+ "mocks": [
1356
+ {
1357
+ "operationId": "postApiV4ProjectsIdJobsJobIdRetry",
1358
+ "response": {
1359
+ "body": {"id": 2002, "status": "pending"}
1360
+ }
1361
+ }
1362
+ ],
1363
+ "expect": {
1364
+ "success": true,
1365
+ "result": {"status": "pending"}
1366
+ }
1367
+ },
1368
+ {
1369
+ "name": "Jobs - Cancel",
1370
+ "tool": "update_content",
1371
+ "arguments": {
1372
+ "action": "cancel_job",
1373
+ "project_id": "{{projectId}}",
1374
+ "job_id": "{{jobId}}"
1375
+ },
1376
+ "mocks": [
1377
+ {
1378
+ "operationId": "postApiV4ProjectsIdJobsJobIdCancel",
1379
+ "response": {
1380
+ "body": {"id": 2002, "status": "canceled"}
1381
+ }
1382
+ }
1383
+ ],
1384
+ "expect": {
1385
+ "success": true,
1386
+ "result": {"status": "canceled"}
1387
+ }
1388
+ },
1389
+ {
1390
+ "name": "Project Variables - Update",
1391
+ "tool": "update_content",
1392
+ "arguments": {
1393
+ "action": "update_project_variable",
1394
+ "project_id": "{{projectId}}",
1395
+ "key": "{{variableKey}}",
1396
+ "value": "production"
1397
+ },
1398
+ "mocks": [
1399
+ {
1400
+ "operationId": "putApiV4ProjectsIdVariablesKey",
1401
+ "response": {
1402
+ "body": {"key": "DEPLOY_ENV", "value": "production"}
1403
+ }
1404
+ }
1405
+ ],
1406
+ "expect": {
1407
+ "success": true,
1408
+ "result": {"key": "DEPLOY_ENV"}
1409
+ }
1410
+ },
1411
+ {
1412
+ "name": "Project Hooks - Update",
1413
+ "tool": "update_content",
1414
+ "arguments": {
1415
+ "action": "update_project_hook",
1416
+ "project_id": "{{projectId}}",
1417
+ "hook_id": "{{hookId}}",
1418
+ "url": "https://example.com/hook-updated"
1419
+ },
1420
+ "mocks": [
1421
+ {
1422
+ "operationId": "putApiV4ProjectsIdHooksHookId",
1423
+ "response": {
1424
+ "body": {"id": 9001, "url": "https://example.com/hook-updated"}
1425
+ }
1426
+ }
1427
+ ],
1428
+ "expect": {
1429
+ "success": true,
1430
+ "result": {"id": 9001}
1431
+ }
1432
+ },
1433
+ {
1434
+ "name": "Issues - Delete Discussion",
1435
+ "tool": "delete_content",
1436
+ "arguments": {
1437
+ "action": "delete_issue_discussion",
1438
+ "project_id": "{{projectId}}",
1439
+ "issue_iid": "{{issueIid}}",
1440
+ "discussion_id": "{{discussionId}}"
1441
+ },
1442
+ "mocks": [
1443
+ {
1444
+ "operationId": "deleteApiV4ProjectsIdIssuesIssueIidDiscussionsDiscussionId",
1445
+ "response": {
1446
+ "status": 204
1447
+ }
1448
+ }
1449
+ ],
1450
+ "expect": {
1451
+ "success": true
1452
+ }
1453
+ },
1454
+ {
1455
+ "name": "Issues - Delete Note Award Emoji",
1456
+ "tool": "delete_content",
1457
+ "arguments": {
1458
+ "action": "delete_issue_note_award_emoji",
1459
+ "project_id": "{{projectId}}",
1460
+ "issue_iid": "{{issueIid}}",
1461
+ "note_id": "{{noteId}}",
1462
+ "award_id": "{{awardId}}"
1463
+ },
1464
+ "mocks": [
1465
+ {
1466
+ "operationId": "deleteApiV4ProjectsIdIssuesIssueIidNotesNoteIdAwardEmojiAwardId",
1467
+ "response": {
1468
+ "status": 204
1469
+ }
1470
+ }
1471
+ ],
1472
+ "expect": {
1473
+ "success": true
1474
+ }
1475
+ },
1476
+ {
1477
+ "name": "Repository Files - Delete",
1478
+ "tool": "delete_content",
1479
+ "arguments": {
1480
+ "action": "delete_file",
1481
+ "project_id": "{{projectId}}",
1482
+ "file_path": "{{filePath}}",
1483
+ "branch": "{{ref}}",
1484
+ "commit_message": "Remove file"
1485
+ },
1486
+ "mocks": [
1487
+ {
1488
+ "operationId": "deleteApiV4ProjectsIdRepositoryFilesFilePath",
1489
+ "response": {
1490
+ "status": 204
1491
+ }
1492
+ }
1493
+ ],
1494
+ "expect": {
1495
+ "success": true
1496
+ }
1497
+ },
1498
+ {
1499
+ "name": "Project Variables - Delete",
1500
+ "tool": "delete_content",
1501
+ "arguments": {
1502
+ "action": "delete_project_variable",
1503
+ "project_id": "{{projectId}}",
1504
+ "key": "{{variableKey}}"
1505
+ },
1506
+ "mocks": [
1507
+ {
1508
+ "operationId": "deleteApiV4ProjectsIdVariablesKey",
1509
+ "response": {
1510
+ "status": 204
1511
+ }
1512
+ }
1513
+ ],
1514
+ "expect": {
1515
+ "success": true
1516
+ }
1517
+ },
1518
+ {
1519
+ "name": "Project Hooks - Delete",
1520
+ "tool": "delete_content",
1521
+ "arguments": {
1522
+ "action": "delete_project_hook",
1523
+ "project_id": "{{projectId}}",
1524
+ "hook_id": "{{hookId}}"
1525
+ },
1526
+ "mocks": [
1527
+ {
1528
+ "operationId": "deleteApiV4ProjectsIdHooksHookId",
1529
+ "response": {
1530
+ "status": 204
1531
+ }
1532
+ }
1533
+ ],
1534
+ "expect": {
1535
+ "success": true
1536
+ }
1537
+ },
1538
+ {
1539
+ "name": "GLQL - Query",
1540
+ "tool": "run_glql",
1541
+ "arguments": {
1542
+ "action": "query",
1543
+ "query": "{ projects { nodes { id name } } }"
1544
+ },
1545
+ "mocks": [
1546
+ {
1547
+ "operationId": "postApiV4Glql",
1548
+ "response": {
1549
+ "body": {"data": {"projects": {"nodes": []}}}
1550
+ }
1551
+ }
1552
+ ],
1553
+ "expect": {
1554
+ "success": true,
1555
+ "result": {"data": {"projects": {"nodes": []}}}
1556
+ }
1557
+ }
1558
+ ],
1559
+ "coverage": {
1560
+ "require_all_actions": true,
1561
+ "skip_actions": {
1562
+ "retrieve_content.download_snippet": "Proxy download behavior covered elsewhere",
1563
+ "retrieve_content.download_file": "Proxy download behavior covered elsewhere"
1564
+ }
1565
+ }
1566
+ }