mcp4openapi 0.2.8 → 0.3.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.
Files changed (310) hide show
  1. package/README.md +143 -63
  2. package/dist/scripts/validate-profile.js +3 -3
  3. package/dist/scripts/validate-profile.js.map +1 -1
  4. package/dist/src/{oauth-provider.d.ts → auth/oauth-provider.d.ts} +7 -2
  5. package/dist/src/auth/oauth-provider.d.ts.map +1 -0
  6. package/dist/src/{oauth-provider.js → auth/oauth-provider.js} +30 -2
  7. package/dist/src/auth/oauth-provider.js.map +1 -0
  8. package/dist/src/core/cli-config.d.ts +9 -0
  9. package/dist/src/core/cli-config.d.ts.map +1 -0
  10. package/dist/src/core/cli-config.js +124 -0
  11. package/dist/src/core/cli-config.js.map +1 -0
  12. package/dist/src/{constants.d.ts → core/constants.d.ts} +1 -0
  13. package/dist/src/core/constants.d.ts.map +1 -0
  14. package/dist/src/{constants.js → core/constants.js} +1 -0
  15. package/dist/src/core/constants.js.map +1 -0
  16. package/dist/src/{errors.d.ts → core/errors.d.ts} +6 -0
  17. package/dist/src/core/errors.d.ts.map +1 -0
  18. package/dist/src/{errors.js → core/errors.js} +15 -6
  19. package/dist/src/core/errors.js.map +1 -0
  20. package/dist/src/core/filtering.d.ts +19 -0
  21. package/dist/src/core/filtering.d.ts.map +1 -0
  22. package/dist/src/core/filtering.js +292 -0
  23. package/dist/src/core/filtering.js.map +1 -0
  24. package/dist/src/core/index.d.ts +26 -0
  25. package/dist/src/core/index.d.ts.map +1 -0
  26. package/dist/src/core/index.js +275 -0
  27. package/dist/src/core/index.js.map +1 -0
  28. package/dist/src/core/lib.d.ts +8 -0
  29. package/dist/src/core/lib.d.ts.map +1 -0
  30. package/dist/src/core/lib.js +7 -0
  31. package/dist/src/core/lib.js.map +1 -0
  32. package/dist/src/{logger.d.ts → core/logger.d.ts} +6 -1
  33. package/dist/src/core/logger.d.ts.map +1 -0
  34. package/dist/src/{logger.js → core/logger.js} +30 -2
  35. package/dist/src/core/logger.js.map +1 -0
  36. package/dist/src/{metrics.d.ts → core/metrics.d.ts} +11 -0
  37. package/dist/src/core/metrics.d.ts.map +1 -0
  38. package/dist/src/{metrics.js → core/metrics.js} +61 -0
  39. package/dist/src/core/metrics.js.map +1 -0
  40. package/dist/src/core/naming-warnings.d.ts.map +1 -0
  41. package/dist/src/core/naming-warnings.js.map +1 -0
  42. package/dist/src/core/naming.d.ts.map +1 -0
  43. package/dist/src/core/naming.js.map +1 -0
  44. package/dist/src/generated-schemas.d.ts +245 -79
  45. package/dist/src/generated-schemas.d.ts.map +1 -1
  46. package/dist/src/generated-schemas.js +14 -2
  47. package/dist/src/generated-schemas.js.map +1 -1
  48. package/dist/src/index.d.ts +1 -6
  49. package/dist/src/index.d.ts.map +1 -1
  50. package/dist/src/index.js +1 -170
  51. package/dist/src/index.js.map +1 -1
  52. package/dist/src/lib.d.ts +1 -7
  53. package/dist/src/lib.d.ts.map +1 -1
  54. package/dist/src/lib.js +1 -6
  55. package/dist/src/lib.js.map +1 -1
  56. package/dist/src/mcp/mcp-server-manager.d.ts +20 -0
  57. package/dist/src/mcp/mcp-server-manager.d.ts.map +1 -0
  58. package/dist/src/mcp/mcp-server-manager.js +38 -0
  59. package/dist/src/mcp/mcp-server-manager.js.map +1 -0
  60. package/dist/src/{mcp-server.d.ts → mcp/mcp-server.d.ts} +31 -1
  61. package/dist/src/mcp/mcp-server.d.ts.map +1 -0
  62. package/dist/src/{mcp-server.js → mcp/mcp-server.js} +547 -146
  63. package/dist/src/mcp/mcp-server.js.map +1 -0
  64. package/dist/src/{openapi-parser.d.ts → openapi/openapi-parser.d.ts} +1 -1
  65. package/dist/src/openapi/openapi-parser.d.ts.map +1 -0
  66. package/dist/src/{openapi-parser.js → openapi/openapi-parser.js} +2 -2
  67. package/dist/src/openapi/openapi-parser.js.map +1 -0
  68. package/dist/src/{profile-loader.d.ts → profile/profile-loader.d.ts} +3 -2
  69. package/dist/src/profile/profile-loader.d.ts.map +1 -0
  70. package/dist/src/{profile-loader.js → profile/profile-loader.js} +17 -6
  71. package/dist/src/profile/profile-loader.js.map +1 -0
  72. package/dist/src/profile/profile-registry.d.ts +18 -0
  73. package/dist/src/profile/profile-registry.d.ts.map +1 -0
  74. package/dist/src/profile/profile-registry.js +26 -0
  75. package/dist/src/profile/profile-registry.js.map +1 -0
  76. package/dist/src/profile/profile-resolver.d.ts +25 -0
  77. package/dist/src/profile/profile-resolver.d.ts.map +1 -0
  78. package/dist/src/profile/profile-resolver.js +204 -0
  79. package/dist/src/profile/profile-resolver.js.map +1 -0
  80. package/dist/src/profile/startup-profile.d.ts +17 -0
  81. package/dist/src/profile/startup-profile.d.ts.map +1 -0
  82. package/dist/src/profile/startup-profile.js +30 -0
  83. package/dist/src/profile/startup-profile.js.map +1 -0
  84. package/dist/src/profile/startup-validation.d.ts +11 -0
  85. package/dist/src/profile/startup-validation.d.ts.map +1 -0
  86. package/dist/src/profile/startup-validation.js +21 -0
  87. package/dist/src/profile/startup-validation.js.map +1 -0
  88. package/dist/src/testing/dynamic-mock-server.d.ts +24 -0
  89. package/dist/src/testing/dynamic-mock-server.d.ts.map +1 -0
  90. package/dist/src/testing/dynamic-mock-server.js +138 -0
  91. package/dist/src/testing/dynamic-mock-server.js.map +1 -0
  92. package/dist/src/testing/request-assertions.d.ts +5 -0
  93. package/dist/src/testing/request-assertions.d.ts.map +1 -0
  94. package/dist/src/testing/request-assertions.js +165 -0
  95. package/dist/src/testing/request-assertions.js.map +1 -0
  96. package/dist/src/testing/template-utils.d.ts +10 -0
  97. package/dist/src/testing/template-utils.d.ts.map +1 -0
  98. package/dist/src/testing/template-utils.js +72 -0
  99. package/dist/src/testing/template-utils.js.map +1 -0
  100. package/dist/src/testing/test-http-utils.d.ts +1 -1
  101. package/dist/src/testing/test-http-utils.d.ts.map +1 -1
  102. package/dist/src/testing/test-http-utils.js +1 -1
  103. package/dist/src/testing/test-http-utils.js.map +1 -1
  104. package/dist/src/testing/test-loader.d.ts +6 -0
  105. package/dist/src/testing/test-loader.d.ts.map +1 -0
  106. package/dist/src/testing/test-loader.js +212 -0
  107. package/dist/src/testing/test-loader.js.map +1 -0
  108. package/dist/src/testing/test-schema.d.ts +1270 -0
  109. package/dist/src/testing/test-schema.d.ts.map +1 -0
  110. package/dist/src/testing/test-schema.js +76 -0
  111. package/dist/src/testing/test-schema.js.map +1 -0
  112. package/dist/src/tool-filter/compat.d.ts +49 -0
  113. package/dist/src/tool-filter/compat.d.ts.map +1 -0
  114. package/dist/src/tool-filter/compat.js +72 -0
  115. package/dist/src/tool-filter/compat.js.map +1 -0
  116. package/dist/src/tool-filter/config/env-config-parser.d.ts +38 -0
  117. package/dist/src/tool-filter/config/env-config-parser.d.ts.map +1 -0
  118. package/dist/src/tool-filter/config/env-config-parser.js +103 -0
  119. package/dist/src/tool-filter/config/env-config-parser.js.map +1 -0
  120. package/dist/src/tool-filter/config/header-config-parser.d.ts +37 -0
  121. package/dist/src/tool-filter/config/header-config-parser.d.ts.map +1 -0
  122. package/dist/src/tool-filter/config/header-config-parser.js +118 -0
  123. package/dist/src/tool-filter/config/header-config-parser.js.map +1 -0
  124. package/dist/src/tool-filter/errors.d.ts +18 -0
  125. package/dist/src/tool-filter/errors.d.ts.map +1 -0
  126. package/dist/src/tool-filter/errors.js +21 -0
  127. package/dist/src/tool-filter/errors.js.map +1 -0
  128. package/dist/src/tool-filter/filter/filter-engine.d.ts +45 -0
  129. package/dist/src/tool-filter/filter/filter-engine.d.ts.map +1 -0
  130. package/dist/src/tool-filter/filter/filter-engine.js +94 -0
  131. package/dist/src/tool-filter/filter/filter-engine.js.map +1 -0
  132. package/dist/src/tool-filter/filter/filter-rules.d.ts +44 -0
  133. package/dist/src/tool-filter/filter/filter-rules.d.ts.map +1 -0
  134. package/dist/src/tool-filter/filter/filter-rules.js +72 -0
  135. package/dist/src/tool-filter/filter/filter-rules.js.map +1 -0
  136. package/dist/src/tool-filter/filter/global-tool-filter.d.ts +40 -0
  137. package/dist/src/tool-filter/filter/global-tool-filter.d.ts.map +1 -0
  138. package/dist/src/tool-filter/filter/global-tool-filter.js +92 -0
  139. package/dist/src/tool-filter/filter/global-tool-filter.js.map +1 -0
  140. package/dist/src/tool-filter/filter/session-tool-filter.d.ts +29 -0
  141. package/dist/src/tool-filter/filter/session-tool-filter.d.ts.map +1 -0
  142. package/dist/src/tool-filter/filter/session-tool-filter.js +69 -0
  143. package/dist/src/tool-filter/filter/session-tool-filter.js.map +1 -0
  144. package/dist/src/tool-filter/index.d.ts +25 -0
  145. package/dist/src/tool-filter/index.d.ts.map +1 -0
  146. package/dist/src/tool-filter/index.js +30 -0
  147. package/dist/src/tool-filter/index.js.map +1 -0
  148. package/dist/src/tool-filter/integration/tool-filter-service.d.ts +44 -0
  149. package/dist/src/tool-filter/integration/tool-filter-service.d.ts.map +1 -0
  150. package/dist/src/tool-filter/integration/tool-filter-service.js +68 -0
  151. package/dist/src/tool-filter/integration/tool-filter-service.js.map +1 -0
  152. package/dist/src/tool-filter/operation/operation-classifier.d.ts +20 -0
  153. package/dist/src/tool-filter/operation/operation-classifier.d.ts.map +1 -0
  154. package/dist/src/tool-filter/operation/operation-classifier.js +26 -0
  155. package/dist/src/tool-filter/operation/operation-classifier.js.map +1 -0
  156. package/dist/src/tool-filter/operation/operation-detector.d.ts +30 -0
  157. package/dist/src/tool-filter/operation/operation-detector.d.ts.map +1 -0
  158. package/dist/src/tool-filter/operation/operation-detector.js +96 -0
  159. package/dist/src/tool-filter/operation/operation-detector.js.map +1 -0
  160. package/dist/src/tool-filter/operation/operation-resolver.d.ts +22 -0
  161. package/dist/src/tool-filter/operation/operation-resolver.d.ts.map +1 -0
  162. package/dist/src/tool-filter/operation/operation-resolver.js +32 -0
  163. package/dist/src/tool-filter/operation/operation-resolver.js.map +1 -0
  164. package/dist/src/tool-filter/regex/regex-compiler.d.ts +22 -0
  165. package/dist/src/tool-filter/regex/regex-compiler.d.ts.map +1 -0
  166. package/dist/src/tool-filter/regex/regex-compiler.js +56 -0
  167. package/dist/src/tool-filter/regex/regex-compiler.js.map +1 -0
  168. package/dist/src/tool-filter/regex/regex-validator.d.ts +24 -0
  169. package/dist/src/tool-filter/regex/regex-validator.d.ts.map +1 -0
  170. package/dist/src/tool-filter/regex/regex-validator.js +58 -0
  171. package/dist/src/tool-filter/regex/regex-validator.js.map +1 -0
  172. package/dist/src/tool-filter/types.d.ts +92 -0
  173. package/dist/src/tool-filter/types.d.ts.map +1 -0
  174. package/dist/src/tool-filter/types.js +5 -0
  175. package/dist/src/tool-filter/types.js.map +1 -0
  176. package/dist/src/tool-filter/utils.d.ts +11 -0
  177. package/dist/src/tool-filter/utils.d.ts.map +1 -0
  178. package/dist/src/tool-filter/utils.js +13 -0
  179. package/dist/src/tool-filter/utils.js.map +1 -0
  180. package/dist/src/{composite-executor.d.ts → tooling/composite-executor.d.ts} +3 -3
  181. package/dist/src/tooling/composite-executor.d.ts.map +1 -0
  182. package/dist/src/{composite-executor.js → tooling/composite-executor.js} +1 -1
  183. package/dist/src/tooling/composite-executor.js.map +1 -0
  184. package/dist/src/{dag-executor.d.ts → tooling/dag-executor.d.ts} +1 -1
  185. package/dist/src/tooling/dag-executor.d.ts.map +1 -0
  186. package/dist/src/tooling/dag-executor.js.map +1 -0
  187. package/dist/src/{proxy-executor.d.ts → tooling/proxy-executor.d.ts} +2 -2
  188. package/dist/src/tooling/proxy-executor.d.ts.map +1 -0
  189. package/dist/src/{proxy-executor.js → tooling/proxy-executor.js} +8 -1
  190. package/dist/src/tooling/proxy-executor.js.map +1 -0
  191. package/dist/src/{tool-generator.d.ts → tooling/tool-generator.d.ts} +4 -3
  192. package/dist/src/tooling/tool-generator.d.ts.map +1 -0
  193. package/dist/src/{tool-generator.js → tooling/tool-generator.js} +23 -7
  194. package/dist/src/tooling/tool-generator.js.map +1 -0
  195. package/dist/src/{http-client-factory.d.ts → transport/http-client-factory.d.ts} +4 -1
  196. package/dist/src/transport/http-client-factory.d.ts.map +1 -0
  197. package/dist/src/{http-client-factory.js → transport/http-client-factory.js} +13 -3
  198. package/dist/src/transport/http-client-factory.js.map +1 -0
  199. package/dist/src/transport/http-transport-config.d.ts +6 -0
  200. package/dist/src/transport/http-transport-config.d.ts.map +1 -0
  201. package/dist/src/transport/http-transport-config.js +62 -0
  202. package/dist/src/transport/http-transport-config.js.map +1 -0
  203. package/dist/src/{http-transport.d.ts → transport/http-transport.d.ts} +72 -14
  204. package/dist/src/transport/http-transport.d.ts.map +1 -0
  205. package/dist/src/{http-transport.js → transport/http-transport.js} +1166 -493
  206. package/dist/src/transport/http-transport.js.map +1 -0
  207. package/dist/src/{interceptors.d.ts → transport/interceptors.d.ts} +6 -2
  208. package/dist/src/transport/interceptors.d.ts.map +1 -0
  209. package/dist/src/{interceptors.js → transport/interceptors.js} +72 -41
  210. package/dist/src/transport/interceptors.js.map +1 -0
  211. package/dist/src/types/http-transport.d.ts +25 -0
  212. package/dist/src/types/http-transport.d.ts.map +1 -1
  213. package/dist/src/types/profile.d.ts +13 -1
  214. package/dist/src/types/profile.d.ts.map +1 -1
  215. package/dist/src/validation/argument-normalizer.d.ts +6 -0
  216. package/dist/src/validation/argument-normalizer.d.ts.map +1 -0
  217. package/dist/src/validation/argument-normalizer.js +70 -0
  218. package/dist/src/validation/argument-normalizer.js.map +1 -0
  219. package/dist/src/validation/jsonrpc-validator.d.ts.map +1 -0
  220. package/dist/src/validation/jsonrpc-validator.js.map +1 -0
  221. package/dist/src/{schema-validator.d.ts → validation/schema-validator.d.ts} +2 -2
  222. package/dist/src/validation/schema-validator.d.ts.map +1 -0
  223. package/dist/src/validation/schema-validator.js.map +1 -0
  224. package/dist/src/validation/validation-utils.d.ts.map +1 -0
  225. package/dist/src/validation/validation-utils.js.map +1 -0
  226. package/package.json +9 -3
  227. package/profile-schema.json +63 -3
  228. package/profiles/gitlab/developer-profile-oauth.json +1520 -0
  229. package/profiles/gitlab/developer-profile-oauth.test.json +3432 -0
  230. package/profiles/gitlab/openapi.yaml +6891 -0
  231. package/profiles/n8n/openapi.yaml +2441 -0
  232. package/profiles/n8n/profile-optimized.json +965 -0
  233. package/profiles/n8n/profile-optimized.test.json +1078 -0
  234. package/profiles/n8n/profile.json +1033 -0
  235. package/profiles/n8n/profile.test.json +983 -0
  236. package/profiles/n8n-nodes/openapi.yaml +24 -0
  237. package/profiles/n8n-nodes/profile-nodes.json +44 -0
  238. package/profiles/n8n-nodes/profile-nodes.test.json +91 -0
  239. package/profiles/semgrep/openapi.yaml +4706 -0
  240. package/profiles/semgrep/profile.json +692 -0
  241. package/profiles/semgrep/profile.test.json +471 -0
  242. package/profiles/youtrack/openapi.json +16976 -0
  243. package/profiles/youtrack/profile.json +608 -0
  244. package/profiles/youtrack/profile.test.json +1926 -0
  245. package/dist/src/composite-executor.d.ts.map +0 -1
  246. package/dist/src/composite-executor.js.map +0 -1
  247. package/dist/src/constants.d.ts.map +0 -1
  248. package/dist/src/constants.js.map +0 -1
  249. package/dist/src/dag-executor.d.ts.map +0 -1
  250. package/dist/src/dag-executor.js.map +0 -1
  251. package/dist/src/errors.d.ts.map +0 -1
  252. package/dist/src/errors.js.map +0 -1
  253. package/dist/src/http-client-factory.d.ts.map +0 -1
  254. package/dist/src/http-client-factory.js.map +0 -1
  255. package/dist/src/http-transport.d.ts.map +0 -1
  256. package/dist/src/http-transport.js.map +0 -1
  257. package/dist/src/interceptors.d.ts.map +0 -1
  258. package/dist/src/interceptors.js.map +0 -1
  259. package/dist/src/jsonrpc-validator.d.ts.map +0 -1
  260. package/dist/src/jsonrpc-validator.js.map +0 -1
  261. package/dist/src/logger.d.ts.map +0 -1
  262. package/dist/src/logger.js.map +0 -1
  263. package/dist/src/mcp-server.d.ts.map +0 -1
  264. package/dist/src/mcp-server.js.map +0 -1
  265. package/dist/src/metrics.d.ts.map +0 -1
  266. package/dist/src/metrics.js.map +0 -1
  267. package/dist/src/naming-warnings.d.ts.map +0 -1
  268. package/dist/src/naming-warnings.js.map +0 -1
  269. package/dist/src/naming.d.ts.map +0 -1
  270. package/dist/src/naming.js.map +0 -1
  271. package/dist/src/oauth-provider.d.ts.map +0 -1
  272. package/dist/src/oauth-provider.js.map +0 -1
  273. package/dist/src/openapi-parser.d.ts.map +0 -1
  274. package/dist/src/openapi-parser.js.map +0 -1
  275. package/dist/src/profile-loader.d.ts.map +0 -1
  276. package/dist/src/profile-loader.js.map +0 -1
  277. package/dist/src/proxy-executor.d.ts.map +0 -1
  278. package/dist/src/proxy-executor.js.map +0 -1
  279. package/dist/src/schema-validator.d.ts.map +0 -1
  280. package/dist/src/schema-validator.js.map +0 -1
  281. package/dist/src/testing/fixtures.d.ts +0 -684
  282. package/dist/src/testing/fixtures.d.ts.map +0 -1
  283. package/dist/src/testing/fixtures.js +0 -528
  284. package/dist/src/testing/fixtures.js.map +0 -1
  285. package/dist/src/testing/mock-gitlab-server.d.ts +0 -43
  286. package/dist/src/testing/mock-gitlab-server.d.ts.map +0 -1
  287. package/dist/src/testing/mock-gitlab-server.js +0 -1026
  288. package/dist/src/testing/mock-gitlab-server.js.map +0 -1
  289. package/dist/src/testing/mock-semgrep-server.d.ts +0 -32
  290. package/dist/src/testing/mock-semgrep-server.d.ts.map +0 -1
  291. package/dist/src/testing/mock-semgrep-server.js +0 -213
  292. package/dist/src/testing/mock-semgrep-server.js.map +0 -1
  293. package/dist/src/testing/mock-youtrack-server.d.ts +0 -11
  294. package/dist/src/testing/mock-youtrack-server.d.ts.map +0 -1
  295. package/dist/src/testing/mock-youtrack-server.js +0 -152
  296. package/dist/src/testing/mock-youtrack-server.js.map +0 -1
  297. package/dist/src/tool-generator.d.ts.map +0 -1
  298. package/dist/src/tool-generator.js.map +0 -1
  299. package/dist/src/validation-utils.d.ts.map +0 -1
  300. package/dist/src/validation-utils.js.map +0 -1
  301. /package/dist/src/{naming-warnings.d.ts → core/naming-warnings.d.ts} +0 -0
  302. /package/dist/src/{naming-warnings.js → core/naming-warnings.js} +0 -0
  303. /package/dist/src/{naming.d.ts → core/naming.d.ts} +0 -0
  304. /package/dist/src/{naming.js → core/naming.js} +0 -0
  305. /package/dist/src/{dag-executor.js → tooling/dag-executor.js} +0 -0
  306. /package/dist/src/{jsonrpc-validator.d.ts → validation/jsonrpc-validator.d.ts} +0 -0
  307. /package/dist/src/{jsonrpc-validator.js → validation/jsonrpc-validator.js} +0 -0
  308. /package/dist/src/{schema-validator.js → validation/schema-validator.js} +0 -0
  309. /package/dist/src/{validation-utils.d.ts → validation/validation-utils.d.ts} +0 -0
  310. /package/dist/src/{validation-utils.js → validation/validation-utils.js} +0 -0
@@ -0,0 +1,471 @@
1
+ {
2
+ "$schema": "../../src/testing/test-schema.ts",
3
+ "profile_name": "semgrep",
4
+ "variables": {
5
+ "deploymentSlug": "test-deployment",
6
+ "projectName": "test-org/test-repo",
7
+ "policyId": "policy-123",
8
+ "repositoryId": "repo-456",
9
+ "scanId": "scan-789",
10
+ "taskToken": "task-123",
11
+ "externalTicketId": 987,
12
+ "deploymentId": "deployment-42"
13
+ },
14
+ "scenarios": [
15
+ {
16
+ "name": "Get Deployment",
17
+ "tool": "get_deployment",
18
+ "arguments": {},
19
+ "mocks": [
20
+ {
21
+ "operationId": "DeploymentsService_ListDeployments",
22
+ "response": { "body": { "deployments": [{ "id": 123, "slug": "test-deployment", "name": "Test Deployment" }] } }
23
+ }
24
+ ],
25
+ "expect": {
26
+ "success": true,
27
+ "result": {
28
+ "data": {
29
+ "deployment": { "deployments": [{ "id": 123, "slug": "test-deployment" }] }
30
+ },
31
+ "success": true
32
+ }
33
+ }
34
+ },
35
+ {
36
+ "name": "List Projects",
37
+ "tool": "manage_projects",
38
+ "arguments": { "action": "list", "deploymentSlug": "{{deploymentSlug}}", "page": 0, "page_size": 5 },
39
+ "mocks": [
40
+ {
41
+ "operationId": "ProjectsService_ListProjects",
42
+ "response": { "body": { "projects": [{ "id": 1, "name": "{{projectName}}" }] } }
43
+ }
44
+ ],
45
+ "expect": { "success": true, "result": { "projects": [{ "name": "{{projectName}}" }] } }
46
+ },
47
+ {
48
+ "name": "Get Project",
49
+ "tool": "manage_projects",
50
+ "arguments": { "action": "get", "deploymentSlug": "{{deploymentSlug}}", "project_name": "{{projectName}}" },
51
+ "mocks": [
52
+ {
53
+ "operationId": "ProjectsService_GetProject",
54
+ "response": {
55
+ "body": {
56
+ "id": 1,
57
+ "name": "{{projectName}}",
58
+ "url": "https://example.com/{{projectName}}",
59
+ "default_branch": "main",
60
+ "primary_branch": "main",
61
+ "tags": ["frontend"],
62
+ "latest_scan_at": "2024-01-01T00:00:00Z",
63
+ "managed_scan_config": { "diff_scan": { "enabled": true } }
64
+ }
65
+ }
66
+ }
67
+ ],
68
+ "expect": { "success": true, "result": { "id": 1, "name": "{{projectName}}", "tags": ["frontend"] } }
69
+ },
70
+ {
71
+ "name": "Update Project",
72
+ "tool": "manage_projects",
73
+ "arguments": {
74
+ "action": "update",
75
+ "deploymentSlug": "{{deploymentSlug}}",
76
+ "project_name": "{{projectName}}",
77
+ "tags": ["security"],
78
+ "primary_branch": "refs/heads/main",
79
+ "managed_scan_config.diff_scan.enabled": true,
80
+ "managed_scan_config.full_scan.enabled": false
81
+ },
82
+ "mocks": [
83
+ {
84
+ "operationId": "ProjectsService_UpdateProject",
85
+ "response": {
86
+ "body": {
87
+ "id": 1,
88
+ "name": "{{projectName}}",
89
+ "tags": ["security"],
90
+ "primary_branch": "refs/heads/main",
91
+ "managed_scan_config": {
92
+ "diff_scan": { "enabled": true },
93
+ "full_scan": { "enabled": false }
94
+ }
95
+ }
96
+ }
97
+ }
98
+ ],
99
+ "expect": { "success": true, "result": { "id": 1, "tags": ["security"] } }
100
+ },
101
+ {
102
+ "name": "Add Project Tags",
103
+ "tool": "manage_projects",
104
+ "arguments": {
105
+ "action": "add_tags",
106
+ "deploymentSlug": "{{deploymentSlug}}",
107
+ "project_name": "{{projectName}}",
108
+ "tags": ["critical"]
109
+ },
110
+ "mocks": [
111
+ {
112
+ "operationId": "ProjectsService_AddProjectTags",
113
+ "response": { "body": { "id": 1, "name": "{{projectName}}", "tags": ["critical"] } }
114
+ }
115
+ ],
116
+ "expect": {
117
+ "success": true,
118
+ "result": { "name": "{{projectName}}", "tags": ["critical"] },
119
+ "request": {
120
+ "method": "PUT",
121
+ "path": "/api/v1/deployments/{{deploymentSlug}}/projects/test-org%2Ftest-repo/tags",
122
+ "query": { "tags": ["critical"] }
123
+ }
124
+ }
125
+ },
126
+ {
127
+ "name": "Remove Project Tags",
128
+ "tool": "manage_projects",
129
+ "arguments": {
130
+ "action": "remove_tags",
131
+ "deploymentSlug": "{{deploymentSlug}}",
132
+ "project_name": "{{projectName}}",
133
+ "tags": ["frontend"]
134
+ },
135
+ "mocks": [
136
+ {
137
+ "operationId": "ProjectsService_DeleteProjectTags",
138
+ "response": { "body": { "id": 1, "name": "{{projectName}}", "tags": [] } }
139
+ }
140
+ ],
141
+ "expect": { "success": true, "result": { "name": "{{projectName}}", "tags": [] } }
142
+ },
143
+ {
144
+ "name": "Toggle Managed Scan",
145
+ "tool": "manage_projects",
146
+ "arguments": {
147
+ "action": "toggle_managed_scan",
148
+ "deploymentSlug": "{{deploymentSlug}}",
149
+ "project_name": "{{projectName}}",
150
+ "diff_scan.enabled": true,
151
+ "full_scan.enabled": true
152
+ },
153
+ "mocks": [
154
+ {
155
+ "operationId": "ProjectsService_ToggleProjectManagedScan",
156
+ "response": {
157
+ "body": {
158
+ "id": 1,
159
+ "name": "{{projectName}}",
160
+ "managed_scan_config": {
161
+ "diff_scan": { "enabled": true },
162
+ "full_scan": { "enabled": true }
163
+ }
164
+ }
165
+ }
166
+ }
167
+ ],
168
+ "expect": { "success": true, "result": { "name": "{{projectName}}" } }
169
+ },
170
+ {
171
+ "name": "Delete Project",
172
+ "tool": "manage_projects",
173
+ "arguments": { "action": "delete", "deploymentSlug": "{{deploymentSlug}}", "project_name": "{{projectName}}" },
174
+ "mocks": [
175
+ {
176
+ "operationId": "ProjectsService_DeleteProject",
177
+ "response": { "status": 204 }
178
+ }
179
+ ],
180
+ "expect": { "success": true }
181
+ },
182
+ {
183
+ "name": "List Findings",
184
+ "tool": "manage_findings",
185
+ "arguments": { "deploymentSlug": "{{deploymentSlug}}", "issue_type": "sast", "page": 0, "page_size": 10 },
186
+ "mocks": [
187
+ {
188
+ "operationId": "FindingsService_ListFindings",
189
+ "response": { "body": { "sastFindings": { "findings": [{ "id": 123, "severity": "high" }] } } }
190
+ }
191
+ ],
192
+ "expect": { "success": true, "result": { "sastFindings": { "findings": [{ "id": 123 }] } } }
193
+ },
194
+ {
195
+ "name": "List Secrets",
196
+ "tool": "manage_secrets",
197
+ "arguments": { "deploymentSlug": "{{deploymentSlug}}", "deployment_id": "{{deploymentId}}" },
198
+ "mocks": [
199
+ {
200
+ "operationId": "SecretsService_ListSecretsPath",
201
+ "response": { "body": { "secrets": [{ "id": 55, "status": "FINDING_STATUS_OPEN" }] } }
202
+ }
203
+ ],
204
+ "expect": { "success": true, "result": { "secrets": [{ "id": 55 }] } }
205
+ },
206
+ {
207
+ "name": "Search Scans",
208
+ "tool": "manage_scans",
209
+ "arguments": {
210
+ "action": "search",
211
+ "deploymentSlug": "{{deploymentSlug}}",
212
+ "deployment_id": "{{deploymentId}}",
213
+ "repository_id": 101
214
+ },
215
+ "mocks": [
216
+ {
217
+ "operationId": "ScansService_SearchScans",
218
+ "response": { "body": { "scans": [{ "id": "scan-1", "repository_id": 101 }] } }
219
+ }
220
+ ],
221
+ "expect": { "success": true, "result": { "scans": [{ "id": "scan-1" }] } }
222
+ },
223
+ {
224
+ "name": "Get Scan",
225
+ "tool": "manage_scans",
226
+ "arguments": {
227
+ "action": "get",
228
+ "deploymentSlug": "{{deploymentSlug}}",
229
+ "deployment_id": "{{deploymentId}}",
230
+ "scanId": "{{scanId}}"
231
+ },
232
+ "mocks": [
233
+ {
234
+ "operationId": "ScansService_GetScan",
235
+ "response": { "body": { "id": "{{scanId}}", "status": "completed" } }
236
+ }
237
+ ],
238
+ "expect": { "success": true, "result": { "id": "{{scanId}}" } }
239
+ },
240
+ {
241
+ "name": "List Policies",
242
+ "tool": "manage_policies",
243
+ "arguments": {
244
+ "action": "list",
245
+ "deploymentSlug": "{{deploymentSlug}}",
246
+ "deployment_id": "{{deploymentId}}"
247
+ },
248
+ "mocks": [
249
+ {
250
+ "operationId": "PoliciesService_ListPolicies",
251
+ "response": { "body": { "policies": [{ "id": "{{policyId}}", "name": "Default" }] } }
252
+ }
253
+ ],
254
+ "expect": { "success": true, "result": { "policies": [{ "id": "{{policyId}}" }] } }
255
+ },
256
+ {
257
+ "name": "List Policy Rules",
258
+ "tool": "manage_policies",
259
+ "arguments": {
260
+ "action": "list_rules",
261
+ "deploymentSlug": "{{deploymentSlug}}",
262
+ "deployment_id": "{{deploymentId}}",
263
+ "policyId": "{{policyId}}"
264
+ },
265
+ "mocks": [
266
+ {
267
+ "operationId": "PoliciesService_ListPolicyRules",
268
+ "response": { "body": { "rules": [{ "path": "rule.path.1" }] } }
269
+ }
270
+ ],
271
+ "expect": { "success": true, "result": { "rules": [{ "path": "rule.path.1" }] } }
272
+ },
273
+ {
274
+ "name": "Update Policy",
275
+ "tool": "manage_policies",
276
+ "arguments": {
277
+ "action": "update",
278
+ "deploymentSlug": "{{deploymentSlug}}",
279
+ "deployment_id": "{{deploymentId}}",
280
+ "policyId": "{{policyId}}",
281
+ "rulePath": "rule.path.1",
282
+ "policyMode": "MODE_BLOCK"
283
+ },
284
+ "mocks": [
285
+ {
286
+ "operationId": "PoliciesService_UpdatePolicy",
287
+ "response": { "body": { "policy": { "id": "{{policyId}}", "mode": "MODE_BLOCK" } } }
288
+ }
289
+ ],
290
+ "expect": { "success": true, "result": { "policy": { "id": "{{policyId}}" } } }
291
+ },
292
+ {
293
+ "name": "List Dependencies",
294
+ "tool": "manage_dependencies",
295
+ "arguments": {
296
+ "action": "list",
297
+ "deploymentSlug": "{{deploymentSlug}}",
298
+ "deployment_id": "{{deploymentId}}"
299
+ },
300
+ "mocks": [
301
+ {
302
+ "operationId": "SupplyChainService_ListDependencies",
303
+ "response": { "body": { "dependencies": [{ "id": "dep-1", "name": "requests" }] } }
304
+ }
305
+ ],
306
+ "expect": { "success": true, "result": { "dependencies": [{ "id": "dep-1" }] } }
307
+ },
308
+ {
309
+ "name": "List Dependency Repositories",
310
+ "tool": "manage_dependencies",
311
+ "arguments": {
312
+ "action": "list_repositories",
313
+ "deploymentSlug": "{{deploymentSlug}}",
314
+ "deployment_id": "{{deploymentId}}"
315
+ },
316
+ "mocks": [
317
+ {
318
+ "operationId": "SupplyChainService_ListRepositoriesForDependencies",
319
+ "response": { "body": { "repositories": [{ "id": "repo-1", "name": "{{projectName}}" }] } }
320
+ }
321
+ ],
322
+ "expect": { "success": true, "result": { "repositories": [{ "id": "repo-1" }] } }
323
+ },
324
+ {
325
+ "name": "List Dependency Lockfiles",
326
+ "tool": "manage_dependencies",
327
+ "arguments": {
328
+ "action": "list_lockfiles",
329
+ "deploymentSlug": "{{deploymentSlug}}",
330
+ "deployment_id": "{{deploymentId}}",
331
+ "repository_id": "{{repositoryId}}"
332
+ },
333
+ "mocks": [
334
+ {
335
+ "operationId": "SupplyChainService_ListLockfilesForDependencies",
336
+ "response": { "body": { "lockfiles": [{ "path": "package-lock.json" }] } }
337
+ }
338
+ ],
339
+ "expect": { "success": true, "result": { "lockfiles": [{ "path": "package-lock.json" }] } }
340
+ },
341
+ {
342
+ "name": "Create SBOM Export",
343
+ "tool": "manage_sbom",
344
+ "arguments": {
345
+ "action": "create",
346
+ "deploymentSlug": "{{deploymentSlug}}",
347
+ "deployment_id": "{{deploymentId}}",
348
+ "repositoryId": "{{repositoryId}}",
349
+ "ref": "refs/heads/main"
350
+ },
351
+ "mocks": [
352
+ {
353
+ "operationId": "SupplyChainService_CreateSbomExport",
354
+ "response": { "body": { "task_token": "{{taskToken}}" } }
355
+ }
356
+ ],
357
+ "expect": { "success": true, "result": { "task_token": "{{taskToken}}" } }
358
+ },
359
+ {
360
+ "name": "Create SBOM Export - Missing deployment_id",
361
+ "tool": "manage_sbom",
362
+ "arguments": {
363
+ "action": "create",
364
+ "deployment_slug": "{{deploymentSlug}}",
365
+ "repositoryId": "{{repositoryId}}",
366
+ "ref": "refs/heads/main"
367
+ },
368
+ "mocks": [],
369
+ "expect": { "success": false, "error_message_regex": "deploymentId" }
370
+ },
371
+ {
372
+ "name": "Get SBOM Export",
373
+ "tool": "manage_sbom",
374
+ "arguments": {
375
+ "action": "get",
376
+ "deploymentSlug": "{{deploymentSlug}}",
377
+ "deployment_id": "{{deploymentId}}",
378
+ "taskToken": "{{taskToken}}"
379
+ },
380
+ "mocks": [
381
+ {
382
+ "operationId": "SupplyChainService_GetSbomExport",
383
+ "response": { "body": { "status": "COMPLETED", "download_url": "https://example.com/sbom.json" } }
384
+ }
385
+ ],
386
+ "expect": { "success": true, "result": { "status": "COMPLETED" } }
387
+ },
388
+ {
389
+ "name": "Create Tickets",
390
+ "tool": "manage_tickets",
391
+ "arguments": {
392
+ "action": "create",
393
+ "deployment_slug": "{{deploymentSlug}}",
394
+ "issue_type": "sast",
395
+ "issue_ids": ["123", "456"]
396
+ },
397
+ "mocks": [
398
+ {
399
+ "operationId": "TicketingService_CreateTicket",
400
+ "response": { "body": { "tickets": [{ "id": 1, "external_id": "SEC-1" }] } }
401
+ }
402
+ ],
403
+ "expect": { "success": true, "result": { "tickets": [{ "id": 1 }] } }
404
+ },
405
+ {
406
+ "name": "Delete Ticket",
407
+ "tool": "manage_tickets",
408
+ "arguments": {
409
+ "action": "delete",
410
+ "deployment_id": "{{deploymentId}}",
411
+ "externalTicketId": "{{externalTicketId}}"
412
+ },
413
+ "mocks": [
414
+ {
415
+ "operationId": "TicketingService_DeleteTicket",
416
+ "response": { "status": 204 }
417
+ }
418
+ ],
419
+ "expect": { "success": true }
420
+ },
421
+ {
422
+ "name": "Triage Findings",
423
+ "tool": "triage_findings",
424
+ "arguments": {
425
+ "deploymentSlug": "{{deploymentSlug}}",
426
+ "issue_type": "sast",
427
+ "status": "open",
428
+ "new_triage_state": "ignored",
429
+ "new_triage_reason": "false_positive",
430
+ "limit": 10
431
+ },
432
+ "mocks": [
433
+ {
434
+ "operationId": "TriageService_BulkTriage",
435
+ "response": { "body": { "num_triaged": 3, "triaged_issues": [123, 456, 789] } }
436
+ }
437
+ ],
438
+ "expect": { "success": true, "result": { "num_triaged": 3 } }
439
+ },
440
+ {
441
+ "name": "Triage Findings - Missing Params",
442
+ "tool": "triage_findings",
443
+ "arguments": {
444
+ "issue_type": "sast",
445
+ "status": "open",
446
+ "new_triage_state": "ignored",
447
+ "new_triage_reason": "false_positive"
448
+ },
449
+ "mocks": [],
450
+ "expect": { "success": false, "error_message_regex": "deploymentSlug" }
451
+ },
452
+ {
453
+ "name": "Triage Findings - Non-Integer Limit",
454
+ "tool": "triage_findings",
455
+ "arguments": {
456
+ "deploymentSlug": "{{deploymentSlug}}",
457
+ "issue_type": "sast",
458
+ "status": "open",
459
+ "new_triage_state": "ignored",
460
+ "new_triage_reason": "false_positive",
461
+ "limit": 10.5
462
+ },
463
+ "mocks": [],
464
+ "expect": { "success": false, "error_message_regex": "integer" }
465
+ }
466
+ ],
467
+ "coverage": {
468
+ "require_all_actions": true,
469
+ "skip_actions": {}
470
+ }
471
+ }