testeiya 0.2.1 → 0.3.10

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 (402) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +284 -171
  3. package/dist/prompt/context.js +79 -0
  4. package/dist/prompt/context.js.map +1 -0
  5. package/dist/prompt/index.js +60 -0
  6. package/dist/prompt/index.js.map +1 -0
  7. package/dist/prompt/print.js +30 -0
  8. package/dist/prompt/print.js.map +1 -0
  9. package/dist/prompt/project-info.js +2 -0
  10. package/dist/prompt/project-info.js.map +1 -0
  11. package/{src/prompt/system-prompt.ts → dist/prompt/system-prompt.js} +38 -25
  12. package/dist/prompt/system-prompt.js.map +1 -0
  13. package/dist/prompt/testomatio.js +264 -0
  14. package/dist/prompt/testomatio.js.map +1 -0
  15. package/dist/prompt/tools.js +57 -0
  16. package/dist/prompt/tools.js.map +1 -0
  17. package/dist/prompt/vocab.js +8 -0
  18. package/dist/prompt/vocab.js.map +1 -0
  19. package/dist/src/args.js +172 -0
  20. package/dist/src/args.js.map +1 -0
  21. package/dist/src/cli.js +97 -0
  22. package/dist/src/cli.js.map +1 -0
  23. package/dist/src/doctor.js +186 -0
  24. package/dist/src/doctor.js.map +1 -0
  25. package/dist/src/env.js +93 -0
  26. package/dist/src/env.js.map +1 -0
  27. package/dist/src/mcp-extension.js +9 -0
  28. package/dist/src/mcp-extension.js.map +1 -0
  29. package/dist/src/mcp.js +139 -0
  30. package/dist/src/mcp.js.map +1 -0
  31. package/dist/src/model.js +71 -0
  32. package/dist/src/model.js.map +1 -0
  33. package/dist/src/models.js +38 -0
  34. package/dist/src/models.js.map +1 -0
  35. package/dist/src/output.js +185 -0
  36. package/dist/src/output.js.map +1 -0
  37. package/dist/src/result.js +41 -0
  38. package/dist/src/result.js.map +1 -0
  39. package/dist/src/run.js +291 -0
  40. package/dist/src/run.js.map +1 -0
  41. package/dist/src/session.js +92 -0
  42. package/dist/src/session.js.map +1 -0
  43. package/dist/src/sessions.js +61 -0
  44. package/dist/src/sessions.js.map +1 -0
  45. package/dist/vendor/mcp.js +14801 -0
  46. package/mcp-tools.json +2967 -0
  47. package/package.json +34 -43
  48. package/prompt/context.ts +101 -0
  49. package/prompt/index.ts +102 -0
  50. package/prompt/print.ts +32 -0
  51. package/prompt/project-info.ts +30 -0
  52. package/prompt/system-prompt.ts +187 -0
  53. package/{src/prompt → prompt}/testomatio.ts +120 -9
  54. package/prompt/tools.ts +57 -0
  55. package/prompt/vocab.ts +7 -0
  56. package/skills/codeceptjs/ci-fix-tests/SKILL.md +7 -8
  57. package/skills/codeceptjs/codeceptjs-auth/SKILL.md +47 -64
  58. package/skills/codeceptjs/codeceptjs-exploration/SKILL.md +56 -47
  59. package/skills/codeceptjs/codeceptjs-fundamentals/SKILL.md +144 -106
  60. package/skills/codeceptjs/codeceptjs-run-analysis/SKILL.md +50 -57
  61. package/skills/codeceptjs/debugging-codeceptjs-tests/SKILL.md +88 -196
  62. package/skills/codeceptjs/migrate-codeceptjs-4/SKILL.md +4 -5
  63. package/skills/codeceptjs/migrate-cypress-to-codeceptjs/SKILL.md +25 -36
  64. package/skills/codeceptjs/migrate-protractor-to-codeceptjs/SKILL.md +23 -36
  65. package/skills/codeceptjs/migrate-selenium-java-to-codeceptjs/SKILL.md +23 -36
  66. package/skills/codeceptjs/migrate-testcafe-to-codeceptjs/SKILL.md +23 -35
  67. package/skills/codeceptjs/refactoring-codeceptjs-tests/SKILL.md +50 -53
  68. package/skills/codeceptjs/writing-codeceptjs-tests/SKILL.md +87 -191
  69. package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/SKILL.md +1 -1
  70. package/{skills.lock.json → skills/skills.lock.json} +43 -36
  71. package/skills/skills.yaml +34 -0
  72. package/skills/testomatio/explorbot/explorbot-fundamentals/SKILL.md +49 -61
  73. package/skills/testomatio/explorbot/explorbot-fundamentals/references/no-install.md +36 -0
  74. package/skills/testomatio/explorbot/explorbot-plan/SKILL.md +20 -7
  75. package/skills/testomatio/explorbot/explorbot-setup/SKILL.md +41 -289
  76. package/skills/testomatio/qa-process/qa-explain-behavior/SKILL.md +111 -0
  77. package/skills/testomatio/qa-process/qa-explain-behavior/references/answer-shapes.md +116 -0
  78. package/skills/testomatio/qa-process/qa-explain-behavior/references/examples.md +157 -0
  79. package/skills/testomatio/qa-process/qa-lead-strategy-advisor/SKILL.md +91 -0
  80. package/skills/testomatio/qa-process/qa-lead-strategy-advisor/references/output-format.md +71 -0
  81. package/skills/testomatio/qa-process/testing-workflow/SKILL.md +227 -0
  82. package/skills/testomatio/test-automation/qa-data-seeder/SKILL.md +83 -0
  83. package/skills/testomatio/test-automation/run-tests-with-testomatio-reporter/SKILL.md +5 -3
  84. package/skills/testomatio/test-automation/setup-change-aware-pr-testing/SKILL.md +190 -0
  85. package/skills/testomatio/test-automation/setup-ci-automation/SKILL.md +76 -0
  86. package/skills/testomatio/test-management/qa-split-testing-levels-pyramid/SKILL.md +55 -0
  87. package/skills/testomatio/test-management/qa-sprint-report-by-testomatio/SKILL.md +220 -0
  88. package/skills/testomatio/test-management/qa-sprint-report-by-testomatio/references/qa-sprint-report.md +126 -0
  89. package/skills/testomatio/test-management/qa-test-code-coverage/SKILL.md +1 -1
  90. package/skills/testomatio/test-management/qa-thinking/SKILL.md +25 -25
  91. package/skills/testomatio/test-management/testomatio-mcp/SKILL.md +14 -1
  92. package/skills/testomatio/test-management/testomatio-mcp/references/MCP_SETUP.md +8 -0
  93. package/assets/testeiya-logo-dark.svg +0 -16
  94. package/assets/testeiya-logo.svg +0 -15
  95. package/models.catalog.json +0 -6963
  96. package/skills/playwright-best-practices-skill/LICENSE.md +0 -7
  97. package/skills/playwright-best-practices-skill/README.md +0 -147
  98. package/skills/testeiya/README.md +0 -29
  99. package/skills/testeiya/answer-formatting/SKILL.md +0 -30
  100. package/skills/testeiya/check-cucumber/SKILL.md +0 -200
  101. package/skills/testeiya/check-tests/SKILL.md +0 -260
  102. package/skills/testeiya/manual-run-assistant/SKILL.md +0 -61
  103. package/skills/testeiya/testomatio-docs/INDEX.md +0 -175
  104. package/skills/testeiya/testomatio-docs/SKILL.md +0 -102
  105. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-agents.md +0 -144
  106. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-powered-features.md +0 -531
  107. package/skills/testeiya/testomatio-docs/docs/advanced/ai-powered-features/ai-requirements.md +0 -437
  108. package/skills/testeiya/testomatio-docs/docs/advanced/api-access/index.md +0 -191
  109. package/skills/testeiya/testomatio-docs/docs/advanced/branches-folder/index.md +0 -277
  110. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/bulk-edit-demos.mdx +0 -39
  111. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/bulk-edit-on-suite-and-test-level.md +0 -122
  112. package/skills/testeiya/testomatio-docs/docs/advanced/bulk-edit-folder/what-is-bulk-edit.md +0 -170
  113. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/branches.md +0 -53
  114. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/index.mdx +0 -98
  115. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/jira-issue.md +0 -151
  116. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/runs-and-reports.md +0 -377
  117. package/skills/testeiya/testomatio-docs/docs/advanced/jira-plugin/work-in-jira.md +0 -267
  118. package/skills/testeiya/testomatio-docs/docs/advanced/living-doc/index.md +0 -138
  119. package/skills/testeiya/testomatio-docs/docs/advanced/milestones/index.md +0 -220
  120. package/skills/testeiya/testomatio-docs/docs/advanced/shortcuts/index.md +0 -48
  121. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/labels-and-custom-fields.md +0 -201
  122. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/tags-or-labels.md +0 -94
  123. package/skills/testeiya/testomatio-docs/docs/advanced/tags-labels/tags.md +0 -243
  124. package/skills/testeiya/testomatio-docs/docs/advanced/test-artifacts/index.md +0 -135
  125. package/skills/testeiya/testomatio-docs/docs/advanced/tql/index.md +0 -394
  126. package/skills/testeiya/testomatio-docs/docs/getting-started/index.md +0 -290
  127. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/azure.md +0 -96
  128. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/bamboo.md +0 -94
  129. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/bitbucket.md +0 -106
  130. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/circle.md +0 -115
  131. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/github.md +0 -120
  132. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/gitlab.md +0 -88
  133. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/index.mdx +0 -151
  134. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/jenkins.md +0 -121
  135. package/skills/testeiya/testomatio-docs/docs/integrations/continuous-integration/teamcity.md +0 -96
  136. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/azure.md +0 -31
  137. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/clickup.md +0 -54
  138. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/confluence.md +0 -34
  139. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/github.md +0 -31
  140. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/gitlab.md +0 -93
  141. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/index.md +0 -131
  142. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/jira.md +0 -164
  143. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/linear.md +0 -29
  144. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/shortcut.md +0 -67
  145. package/skills/testeiya/testomatio-docs/docs/integrations/issues-management/youtrack.md +0 -94
  146. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/azure-devops.md +0 -53
  147. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/email.md +0 -71
  148. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/jira.md +0 -52
  149. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/ms-teams.md +0 -60
  150. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/rules.md +0 -267
  151. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/slack.md +0 -82
  152. package/skills/testeiya/testomatio-docs/docs/integrations/report-notifications/telegram.md +0 -73
  153. package/skills/testeiya/testomatio-docs/docs/integrations/scim-provisioning/index.mdx +0 -207
  154. package/skills/testeiya/testomatio-docs/docs/integrations/scim-provisioning/okta.md +0 -204
  155. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/azure.md +0 -95
  156. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/google.md +0 -75
  157. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/index.mdx +0 -33
  158. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/okta.md +0 -108
  159. package/skills/testeiya/testomatio-docs/docs/integrations/single-sign-on/saml.md +0 -66
  160. package/skills/testeiya/testomatio-docs/docs/legal/compliance/gdpr.md +0 -95
  161. package/skills/testeiya/testomatio-docs/docs/legal/compliance/index.mdx +0 -94
  162. package/skills/testeiya/testomatio-docs/docs/legal/compliance/privacy.md +0 -26
  163. package/skills/testeiya/testomatio-docs/docs/legal/compliance/terms.md +0 -32
  164. package/skills/testeiya/testomatio-docs/docs/legal/security/index.mdx +0 -242
  165. package/skills/testeiya/testomatio-docs/docs/legal/security/jira.md +0 -140
  166. package/skills/testeiya/testomatio-docs/docs/legal/security/subprocessors.md +0 -76
  167. package/skills/testeiya/testomatio-docs/docs/management/company/administration.md +0 -363
  168. package/skills/testeiya/testomatio-docs/docs/management/company/audit-log.md +0 -41
  169. package/skills/testeiya/testomatio-docs/docs/management/company/plan-features-comparison.md +0 -240
  170. package/skills/testeiya/testomatio-docs/docs/management/company/subscriptions.md +0 -326
  171. package/skills/testeiya/testomatio-docs/docs/management/company/trials.md +0 -75
  172. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/accountant.md +0 -49
  173. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/index.mdx +0 -285
  174. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/read-only-user.md +0 -67
  175. package/skills/testeiya/testomatio-docs/docs/management/company/users-and-permissions/teams.md +0 -138
  176. package/skills/testeiya/testomatio-docs/docs/management/project/settings.md +0 -87
  177. package/skills/testeiya/testomatio-docs/docs/management/project/templates.md +0 -546
  178. package/skills/testeiya/testomatio-docs/docs/project/analytics/index.md +0 -326
  179. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/classical-tests-markdown-format.md +0 -386
  180. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/download-manual-tests-as-files.md +0 -378
  181. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/export-to-obsidian.md +0 -112
  182. package/skills/testeiya/testomatio-docs/docs/project/import-export/export-tests/export-to-spreadsheet.md +0 -127
  183. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/auto-import.md +0 -63
  184. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Allure-TestOps.md +0 -49
  185. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-QTest.md +0 -41
  186. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Qase.md +0 -39
  187. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-Zephyr.md +0 -37
  188. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-csv-xlsx.md +0 -117
  189. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-cucumber.md +0 -93
  190. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-qmetry.md +0 -44
  191. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-source-code.md +0 -117
  192. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testcaselabs.md +0 -44
  193. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testmo.md +0 -47
  194. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-testrail.md +0 -82
  195. package/skills/testeiya/testomatio-docs/docs/project/import-export/import/import-tests-from-xray.md +0 -55
  196. package/skills/testeiya/testomatio-docs/docs/project/plans/index.md +0 -334
  197. package/skills/testeiya/testomatio-docs/docs/project/pulse/index.md +0 -104
  198. package/skills/testeiya/testomatio-docs/docs/project/runs/archive-runs-and-groups.md +0 -176
  199. package/skills/testeiya/testomatio-docs/docs/project/runs/custom-statuses.md +0 -195
  200. package/skills/testeiya/testomatio-docs/docs/project/runs/environments.md +0 -203
  201. package/skills/testeiya/testomatio-docs/docs/project/runs/managing-runs.md +0 -455
  202. package/skills/testeiya/testomatio-docs/docs/project/runs/merge-strategies.md +0 -137
  203. package/skills/testeiya/testomatio-docs/docs/project/runs/reports.md +0 -329
  204. package/skills/testeiya/testomatio-docs/docs/project/runs/rungroups.md +0 -342
  205. package/skills/testeiya/testomatio-docs/docs/project/runs/running-automated-tests.md +0 -256
  206. package/skills/testeiya/testomatio-docs/docs/project/runs/running-manual-and-automated-tests.md +0 -331
  207. package/skills/testeiya/testomatio-docs/docs/project/runs/running-tests-manually.md +0 -633
  208. package/skills/testeiya/testomatio-docs/docs/project/runs/temporary-tests-notes.md +0 -223
  209. package/skills/testeiya/testomatio-docs/docs/project/steps-snippets/snippets.md +0 -68
  210. package/skills/testeiya/testomatio-docs/docs/project/steps-snippets/steps.md +0 -181
  211. package/skills/testeiya/testomatio-docs/docs/project/tests/bdd-test-case-editor.md +0 -98
  212. package/skills/testeiya/testomatio-docs/docs/project/tests/classical-test-case-editor.md +0 -354
  213. package/skills/testeiya/testomatio-docs/docs/project/tests/classical-vs-bdd.md +0 -169
  214. package/skills/testeiya/testomatio-docs/docs/project/tests/copy-and-move-your-tests.md +0 -156
  215. package/skills/testeiya/testomatio-docs/docs/project/tests/other-features-for-test-case-design.md +0 -412
  216. package/skills/testeiya/testomatio-docs/docs/project/tests/test-case-creation-and-editing.md +0 -527
  217. package/skills/testeiya/testomatio-docs/docs/support/index.md +0 -75
  218. package/skills/testeiya/testomatio-docs/docs/test-reporting/artifacts.md +0 -388
  219. package/skills/testeiya/testomatio-docs/docs/test-reporting/cli.md +0 -215
  220. package/skills/testeiya/testomatio-docs/docs/test-reporting/configuration.md +0 -247
  221. package/skills/testeiya/testomatio-docs/docs/test-reporting/frameworks.md +0 -490
  222. package/skills/testeiya/testomatio-docs/docs/test-reporting/functions.md +0 -144
  223. package/skills/testeiya/testomatio-docs/docs/test-reporting/index.mdx +0 -48
  224. package/skills/testeiya/testomatio-docs/docs/test-reporting/junit.md +0 -248
  225. package/skills/testeiya/testomatio-docs/docs/test-reporting/logger.md +0 -138
  226. package/skills/testeiya/testomatio-docs/docs/test-reporting/php.md +0 -77
  227. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/bitbucket.md +0 -72
  228. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/csv.md +0 -23
  229. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/debug.md +0 -18
  230. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/github.md +0 -63
  231. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/gitlab.md +0 -29
  232. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/html.md +0 -80
  233. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/index.mdx +0 -57
  234. package/skills/testeiya/testomatio-docs/docs/test-reporting/pipes/testomatio.md +0 -331
  235. package/skills/testeiya/testomatio-docs/docs/test-reporting/python.md +0 -229
  236. package/skills/testeiya/testomatio-docs/docs/test-reporting/workflows.md +0 -325
  237. package/skills/testeiya/testomatio-docs/docs/tutorials/Interacting-via-API.md +0 -159
  238. package/skills/testeiya/testomatio-docs/docs/tutorials/Manual-Testing-Classic.md +0 -164
  239. package/skills/testeiya/testomatio-docs/docs/tutorials/Set-Up-Read-Only-Access.md +0 -85
  240. package/skills/testeiya/testomatio-docs/docs/tutorials/Using-AI-in-Testing.md +0 -163
  241. package/skills/testeiya/testomatio-docs/docs/tutorials/Working-with-Jira.md +0 -125
  242. package/skills/testeiya/testomatio-docs/docs/tutorials/java.md +0 -478
  243. package/skills/testeiya/testomatio-docs/docs/tutorials/playwright.md +0 -207
  244. package/skills/testeiya/testomatio-docs/docs/tutorials/webdriver.md +0 -218
  245. package/skills/testeiya/testomatio-docs/docs.lock.json +0 -6
  246. package/skills/testeiya/testomatio-reporter/SKILL.md +0 -307
  247. package/skills/testomatio/test-automation/setup-pr-testing/SKILL.md +0 -199
  248. package/skills.yaml +0 -21
  249. package/src/ai-debug.ts +0 -188
  250. package/src/api/agent-get.ts +0 -22
  251. package/src/api/agent-start.ts +0 -384
  252. package/src/api/client-log.ts +0 -29
  253. package/src/api/context.ts +0 -332
  254. package/src/api/debug-layout.ts +0 -47
  255. package/src/api/debug-report.ts +0 -29
  256. package/src/api/debug-snapshot.ts +0 -30
  257. package/src/api/debug-stream.ts +0 -52
  258. package/src/api/files-delete.ts +0 -184
  259. package/src/api/files-read.ts +0 -41
  260. package/src/api/files-rename.ts +0 -99
  261. package/src/api/files-tree.ts +0 -292
  262. package/src/api/files-write.ts +0 -41
  263. package/src/api/mcp.ts +0 -603
  264. package/src/api/memory.ts +0 -69
  265. package/src/api/open-external.ts +0 -39
  266. package/src/api/playwright-cli.ts +0 -606
  267. package/src/api/providers.ts +0 -457
  268. package/src/api/read-env-token.ts +0 -33
  269. package/src/api/sessions.ts +0 -79
  270. package/src/api/settings.ts +0 -120
  271. package/src/api/skills.ts +0 -58
  272. package/src/api/testomatio-attachment.ts +0 -89
  273. package/src/api/testomatio-auth.ts +0 -284
  274. package/src/api/testomatio-proxy.ts +0 -197
  275. package/src/api/testomatio-run-stats.ts +0 -81
  276. package/src/api/testomatio-target.ts +0 -225
  277. package/src/api/testomatio-transcription.ts +0 -82
  278. package/src/api/workspace-search.ts +0 -96
  279. package/src/api/workspace-sync.ts +0 -151
  280. package/src/api/workspace.ts +0 -165
  281. package/src/app-server.ts +0 -556
  282. package/src/bridge.ts +0 -251
  283. package/src/check-tests.ts +0 -156
  284. package/src/cli.ts +0 -17
  285. package/src/commands.ts +0 -244
  286. package/src/config.ts +0 -183
  287. package/src/connection.ts +0 -658
  288. package/src/context-store.ts +0 -265
  289. package/src/debug-bus.ts +0 -405
  290. package/src/extensions/tool-gate.ts +0 -220
  291. package/src/extensions/webui/ask-channel.ts +0 -52
  292. package/src/extensions/webui/index.ts +0 -184
  293. package/src/extensions/webui/tools/ask-question.ts +0 -88
  294. package/src/extensions/webui/tools/query-result.ts +0 -79
  295. package/src/extensions/webui/tools/render-chart.ts +0 -53
  296. package/src/extensions/webui/tools/render-item.ts +0 -61
  297. package/src/extensions/webui/tools/render-list.ts +0 -170
  298. package/src/extensions/webui/tools/render-result.ts +0 -85
  299. package/src/extensions/webui/tools/render-tree.ts +0 -71
  300. package/src/extensions/webui/tools/ui-widget.ts +0 -54
  301. package/src/extensions/webui/tools/widget-result.ts +0 -13
  302. package/src/extensions/webui/widget-channel.ts +0 -50
  303. package/src/file-log.ts +0 -196
  304. package/src/git-tracked.ts +0 -68
  305. package/src/gitignore.ts +0 -53
  306. package/src/json-store.ts +0 -43
  307. package/src/load-env.ts +0 -70
  308. package/src/loader-style.ts +0 -96
  309. package/src/main.ts +0 -140
  310. package/src/mcp-catalog.ts +0 -96
  311. package/src/models-catalog.ts +0 -72
  312. package/src/permissions.ts +0 -120
  313. package/src/project-dir.ts +0 -189
  314. package/src/project-info.ts +0 -108
  315. package/src/prompt/app-ui.ts +0 -59
  316. package/src/prompt/browser.ts +0 -27
  317. package/src/prompt/index.ts +0 -62
  318. package/src/prompt/tools.ts +0 -27
  319. package/src/server-info.ts +0 -62
  320. package/src/session-factory.ts +0 -442
  321. package/src/session-store.ts +0 -115
  322. package/src/shell-env.ts +0 -45
  323. package/src/skills.ts +0 -163
  324. package/src/sync-snapshot.ts +0 -140
  325. package/src/telemetry.ts +0 -239
  326. package/src/testomatio-auth.ts +0 -299
  327. package/src/testomatio.ts +0 -98
  328. package/src/theme.ts +0 -30
  329. package/src/user-env.ts +0 -94
  330. package/src/welcome.ts +0 -194
  331. package/src/workspace/safe-path.ts +0 -85
  332. package/src/workspace/test-md.ts +0 -70
  333. package/src/workspace-model.ts +0 -440
  334. package/testeiya.config.json +0 -14
  335. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/authentication-flows.md +0 -0
  336. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/authentication.md +0 -0
  337. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/clock-mocking.md +0 -0
  338. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/mobile-testing.md +0 -0
  339. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/multi-context.md +0 -0
  340. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/multi-user.md +0 -0
  341. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/network-advanced.md +0 -0
  342. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/advanced/third-party.md +0 -0
  343. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/architecture/pom-vs-fixtures.md +0 -0
  344. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/architecture/test-architecture.md +0 -0
  345. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/architecture/when-to-mock.md +0 -0
  346. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/browser-apis/browser-apis.md +0 -0
  347. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/browser-apis/iframes.md +0 -0
  348. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/browser-apis/service-workers.md +0 -0
  349. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/browser-apis/websockets.md +0 -0
  350. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/annotations.md +0 -0
  351. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/assertions-waiting.md +0 -0
  352. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/configuration.md +0 -0
  353. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/fixtures-hooks.md +0 -0
  354. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/global-setup.md +0 -0
  355. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/locators.md +0 -0
  356. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/page-object-model.md +0 -0
  357. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/projects-dependencies.md +0 -0
  358. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/test-data.md +0 -0
  359. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/test-suite-structure.md +0 -0
  360. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/core/test-tags.md +0 -0
  361. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/debugging/console-errors.md +0 -0
  362. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/debugging/debugging.md +0 -0
  363. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/debugging/error-testing.md +0 -0
  364. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/debugging/flaky-tests.md +0 -0
  365. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/frameworks/angular.md +0 -0
  366. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/frameworks/nextjs.md +0 -0
  367. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/frameworks/react.md +0 -0
  368. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/frameworks/vue.md +0 -0
  369. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/ci-cd.md +0 -0
  370. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/docker.md +0 -0
  371. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/github-actions.md +0 -0
  372. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/gitlab.md +0 -0
  373. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/other-providers.md +0 -0
  374. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/parallel-sharding.md +0 -0
  375. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/performance.md +0 -0
  376. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/reporting.md +0 -0
  377. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/infrastructure-ci-cd/test-coverage.md +0 -0
  378. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/accessibility.md +0 -0
  379. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/api-testing.md +0 -0
  380. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/browser-extensions.md +0 -0
  381. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/canvas-webgl.md +0 -0
  382. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/component-testing.md +0 -0
  383. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/drag-drop.md +0 -0
  384. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/electron.md +0 -0
  385. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/file-operations.md +0 -0
  386. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/file-upload-download.md +0 -0
  387. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/forms-validation.md +0 -0
  388. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/graphql-testing.md +0 -0
  389. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/i18n.md +0 -0
  390. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/performance-testing.md +0 -0
  391. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/security-testing.md +0 -0
  392. /package/skills/{playwright-best-practices-skill → playwright/playwright-best-practices}/testing-patterns/visual-regression.md +0 -0
  393. /package/skills/{playwright-cli → playwright/playwright-cli}/SKILL.md +0 -0
  394. /package/skills/{playwright-cli → playwright/playwright-cli}/references/element-attributes.md +0 -0
  395. /package/skills/{playwright-cli → playwright/playwright-cli}/references/playwright-tests.md +0 -0
  396. /package/skills/{playwright-cli → playwright/playwright-cli}/references/request-mocking.md +0 -0
  397. /package/skills/{playwright-cli → playwright/playwright-cli}/references/running-code.md +0 -0
  398. /package/skills/{playwright-cli → playwright/playwright-cli}/references/session-management.md +0 -0
  399. /package/skills/{playwright-cli → playwright/playwright-cli}/references/storage-state.md +0 -0
  400. /package/skills/{playwright-cli → playwright/playwright-cli}/references/test-generation.md +0 -0
  401. /package/skills/{playwright-cli → playwright/playwright-cli}/references/tracing.md +0 -0
  402. /package/skills/{playwright-cli → playwright/playwright-cli}/references/video-recording.md +0 -0
package/mcp-tools.json ADDED
@@ -0,0 +1,2967 @@
1
+ [
2
+ {
3
+ "name": "system_ping",
4
+ "description": "Check server status and active configuration",
5
+ "inputSchema": {
6
+ "type": "object",
7
+ "properties": {}
8
+ }
9
+ },
10
+ {
11
+ "name": "tests_list",
12
+ "description": "List tests (/api/v2/{project_id}/tests). TQL (Testomat.io Query Language) is a string expression passed in `tql` to filter tests. Supported syntax includes logical operators `and`, `or`, `not`, equality operators `==` and `!=`, list membership `in [...]`, `%` for partial text match on supported text fields, and parentheses for grouping. Ordered comparisons `>`, `<`, `>=`, `<=` are for ordered fields such as `priority`, dates, and numeric counters/durations. Use quotes for string values, for example `state == 'automated'`. Documented test variables: `tag`, `label`, `priority`, `issue`, `jira`, `state`, `status`, `custom_status`, `created_at`, `updated_at`, `last_run_at`, `executed_at`, `created_by`, `assigned_to`, `suite`, `test`, `shared`, `milestone`. Documented examples: `priority == 'high'`, `priority >= 'normal'`, `state == 'automated'`, `tag in ['smoke', 'stage1'] and status == 'failed'`, `suite % 'Checkout'`, `test % 'User login'`, `custom_status % 'issue'`, `created_at < 1.month_ago`, `jira in ['JST-1', 'JST-2']`, `milestone == 'Sprint 1'`. Do not invent undocumented fields or syntax. If a query fails, simplify it to one documented predicate.",
13
+ "inputSchema": {
14
+ "type": "object",
15
+ "properties": {
16
+ "page": {
17
+ "type": "integer",
18
+ "minimum": 1
19
+ },
20
+ "per_page": {
21
+ "type": "integer",
22
+ "minimum": 1,
23
+ "maximum": 100
24
+ },
25
+ "tql": {
26
+ "type": "string",
27
+ "description": "TQL filter for tests. Documented variables: `tag`, `label`, `priority`, `issue`, `jira`, `state`, `status`, `custom_status`, `created_at`, `updated_at`, `last_run_at`, `executed_at`, `created_by`, `assigned_to`, `suite`, `test`, `shared`, `milestone`. Examples: `priority == 'high'`, `priority >= 'normal'`, `state == 'automated'`, `tag in ['smoke', 'stage1'] and status == 'failed'`, `suite % 'Checkout'`, `test % 'User login'`, `custom_status % 'issue'`, `created_at < 1.month_ago`, `jira in ['JST-1', 'JST-2']`, `milestone == 'Sprint 1'`."
28
+ }
29
+ },
30
+ "additionalProperties": false
31
+ }
32
+ },
33
+ {
34
+ "name": "tests_get",
35
+ "description": "Get test by ID",
36
+ "inputSchema": {
37
+ "type": "object",
38
+ "properties": {
39
+ "test_id": {
40
+ "type": "string"
41
+ }
42
+ },
43
+ "required": [
44
+ "test_id"
45
+ ],
46
+ "additionalProperties": false
47
+ }
48
+ },
49
+ {
50
+ "name": "tests_create",
51
+ "description": "Create test (/api/v2/{project_id}/tests)",
52
+ "inputSchema": {
53
+ "type": "object",
54
+ "properties": {
55
+ "title": {
56
+ "type": "string"
57
+ },
58
+ "suite_id": {
59
+ "type": "string"
60
+ },
61
+ "description": {
62
+ "type": "string"
63
+ },
64
+ "emoji": {
65
+ "type": "string"
66
+ },
67
+ "priority": {
68
+ "type": "string"
69
+ },
70
+ "assigned_to": {
71
+ "type": "string"
72
+ },
73
+ "code": {
74
+ "type": "string"
75
+ },
76
+ "state": {
77
+ "type": "string"
78
+ },
79
+ "link": {
80
+ "type": "array",
81
+ "items": {
82
+ "type": "object",
83
+ "properties": {
84
+ "action": {
85
+ "type": "string",
86
+ "enum": [
87
+ "add",
88
+ "remove"
89
+ ]
90
+ },
91
+ "type": {
92
+ "type": "string",
93
+ "enum": [
94
+ "label",
95
+ "custom_field",
96
+ "tag",
97
+ "milestone",
98
+ "issue",
99
+ "jira"
100
+ ]
101
+ },
102
+ "value": {
103
+ "type": "string"
104
+ }
105
+ },
106
+ "required": [
107
+ "action",
108
+ "type",
109
+ "value"
110
+ ],
111
+ "additionalProperties": false
112
+ }
113
+ }
114
+ },
115
+ "required": [
116
+ "title",
117
+ "suite_id"
118
+ ],
119
+ "additionalProperties": false
120
+ }
121
+ },
122
+ {
123
+ "name": "tests_update",
124
+ "description": "Update test (/api/v2/{project_id}/tests/{id})",
125
+ "inputSchema": {
126
+ "type": "object",
127
+ "properties": {
128
+ "test_id": {
129
+ "type": "string"
130
+ },
131
+ "title": {
132
+ "type": "string"
133
+ },
134
+ "suite_id": {
135
+ "type": "string"
136
+ },
137
+ "description": {
138
+ "type": "string"
139
+ },
140
+ "emoji": {
141
+ "type": "string"
142
+ },
143
+ "priority": {
144
+ "type": "string"
145
+ },
146
+ "assigned_to": {
147
+ "type": "string"
148
+ },
149
+ "code": {
150
+ "type": "string"
151
+ },
152
+ "state": {
153
+ "type": "string"
154
+ },
155
+ "sync": {
156
+ "type": "boolean"
157
+ },
158
+ "link": {
159
+ "type": "array",
160
+ "items": {
161
+ "type": "object",
162
+ "properties": {
163
+ "action": {
164
+ "type": "string",
165
+ "enum": [
166
+ "add",
167
+ "remove"
168
+ ]
169
+ },
170
+ "type": {
171
+ "type": "string",
172
+ "enum": [
173
+ "label",
174
+ "custom_field",
175
+ "tag",
176
+ "milestone",
177
+ "issue",
178
+ "jira"
179
+ ]
180
+ },
181
+ "value": {
182
+ "type": "string"
183
+ }
184
+ },
185
+ "required": [
186
+ "action",
187
+ "type",
188
+ "value"
189
+ ],
190
+ "additionalProperties": false
191
+ }
192
+ }
193
+ },
194
+ "required": [
195
+ "test_id"
196
+ ],
197
+ "additionalProperties": false
198
+ }
199
+ },
200
+ {
201
+ "name": "tests_delete",
202
+ "description": "Delete test",
203
+ "inputSchema": {
204
+ "type": "object",
205
+ "properties": {
206
+ "test_id": {
207
+ "type": "string"
208
+ }
209
+ },
210
+ "required": [
211
+ "test_id"
212
+ ],
213
+ "additionalProperties": false
214
+ }
215
+ },
216
+ {
217
+ "name": "tests_search",
218
+ "description": "Search tests using TQL (delegates to tests_list). TQL (Testomat.io Query Language) is a string expression passed in `tql` to filter tests. Supported syntax includes logical operators `and`, `or`, `not`, equality operators `==` and `!=`, list membership `in [...]`, `%` for partial text match on supported text fields, and parentheses for grouping. Ordered comparisons `>`, `<`, `>=`, `<=` are for ordered fields such as `priority`, dates, and numeric counters/durations. Use quotes for string values, for example `state == 'automated'`. Documented test variables: `tag`, `label`, `priority`, `issue`, `jira`, `state`, `status`, `custom_status`, `created_at`, `updated_at`, `last_run_at`, `executed_at`, `created_by`, `assigned_to`, `suite`, `test`, `shared`, `milestone`. Documented examples: `priority == 'high'`, `priority >= 'normal'`, `state == 'automated'`, `tag in ['smoke', 'stage1'] and status == 'failed'`, `suite % 'Checkout'`, `test % 'User login'`, `custom_status % 'issue'`, `created_at < 1.month_ago`, `jira in ['JST-1', 'JST-2']`, `milestone == 'Sprint 1'`. Do not invent undocumented fields or syntax. If a query fails, simplify it to one documented predicate.",
219
+ "inputSchema": {
220
+ "type": "object",
221
+ "properties": {
222
+ "page": {
223
+ "type": "integer",
224
+ "minimum": 1
225
+ },
226
+ "per_page": {
227
+ "type": "integer",
228
+ "minimum": 1,
229
+ "maximum": 100
230
+ },
231
+ "tql": {
232
+ "type": "string",
233
+ "description": "TQL filter for tests. Documented variables: `tag`, `label`, `priority`, `issue`, `jira`, `state`, `status`, `custom_status`, `created_at`, `updated_at`, `last_run_at`, `executed_at`, `created_by`, `assigned_to`, `suite`, `test`, `shared`, `milestone`. Examples: `priority == 'high'`, `priority >= 'normal'`, `state == 'automated'`, `tag in ['smoke', 'stage1'] and status == 'failed'`, `suite % 'Checkout'`, `test % 'User login'`, `custom_status % 'issue'`, `created_at < 1.month_ago`, `jira in ['JST-1', 'JST-2']`, `milestone == 'Sprint 1'`."
234
+ }
235
+ },
236
+ "additionalProperties": false
237
+ }
238
+ },
239
+ {
240
+ "name": "tests_issues_list",
241
+ "description": "List linked issues for a test (/api/v2/{project_id}/issues?test_id=...)",
242
+ "inputSchema": {
243
+ "type": "object",
244
+ "properties": {
245
+ "test_id": {
246
+ "type": "string"
247
+ },
248
+ "page": {
249
+ "type": "integer",
250
+ "minimum": 1
251
+ },
252
+ "per_page": {
253
+ "type": "integer",
254
+ "minimum": 1,
255
+ "maximum": 100
256
+ },
257
+ "source": {
258
+ "type": "string"
259
+ }
260
+ },
261
+ "required": [
262
+ "test_id"
263
+ ],
264
+ "additionalProperties": false
265
+ }
266
+ },
267
+ {
268
+ "name": "tests_issues_link",
269
+ "description": "Link issue to a test (/api/v2/{project_id}/issues)",
270
+ "inputSchema": {
271
+ "type": "object",
272
+ "properties": {
273
+ "test_id": {
274
+ "type": "string"
275
+ },
276
+ "url": {
277
+ "type": "string"
278
+ },
279
+ "jira_id": {
280
+ "type": "string"
281
+ }
282
+ },
283
+ "required": [
284
+ "test_id"
285
+ ],
286
+ "additionalProperties": false
287
+ }
288
+ },
289
+ {
290
+ "name": "tests_issues_unlink",
291
+ "description": "Unlink issue from a test (/api/v2/{project_id}/issues/{id})",
292
+ "inputSchema": {
293
+ "type": "object",
294
+ "properties": {
295
+ "issue_id": {
296
+ "type": "integer"
297
+ },
298
+ "type": {
299
+ "type": "string",
300
+ "enum": [
301
+ "issue",
302
+ "jira_issue"
303
+ ]
304
+ }
305
+ },
306
+ "required": [
307
+ "issue_id",
308
+ "type"
309
+ ],
310
+ "additionalProperties": false
311
+ }
312
+ },
313
+ {
314
+ "name": "suites_list",
315
+ "description": "List suites as tree (/api/v2/{project_id}/suites)",
316
+ "inputSchema": {
317
+ "type": "object",
318
+ "properties": {
319
+ "page": {
320
+ "type": "integer",
321
+ "minimum": 1
322
+ },
323
+ "per_page": {
324
+ "type": "integer",
325
+ "minimum": 1,
326
+ "maximum": 100
327
+ },
328
+ "file_type": {
329
+ "type": "string",
330
+ "enum": [
331
+ "file",
332
+ "folder"
333
+ ]
334
+ },
335
+ "tag": {
336
+ "type": "string"
337
+ },
338
+ "labels": {
339
+ "type": "string"
340
+ },
341
+ "search_text": {
342
+ "type": "string"
343
+ }
344
+ },
345
+ "additionalProperties": false
346
+ }
347
+ },
348
+ {
349
+ "name": "suites_get",
350
+ "description": "Get suite by ID",
351
+ "inputSchema": {
352
+ "type": "object",
353
+ "properties": {
354
+ "suite_id": {
355
+ "type": "string"
356
+ }
357
+ },
358
+ "required": [
359
+ "suite_id"
360
+ ],
361
+ "additionalProperties": false
362
+ }
363
+ },
364
+ {
365
+ "name": "suites_create",
366
+ "description": "Create suite (/api/v2/{project_id}/suites)",
367
+ "inputSchema": {
368
+ "type": "object",
369
+ "properties": {
370
+ "title": {
371
+ "type": "string"
372
+ },
373
+ "description": {
374
+ "type": "string"
375
+ },
376
+ "emoji": {
377
+ "type": "string"
378
+ },
379
+ "parent_id": {
380
+ "type": "string"
381
+ },
382
+ "file_type": {
383
+ "type": "string"
384
+ },
385
+ "assigned_to": {
386
+ "type": "string"
387
+ },
388
+ "file": {
389
+ "type": "string"
390
+ },
391
+ "children": {
392
+ "type": "array",
393
+ "items": {}
394
+ },
395
+ "link": {
396
+ "type": "array",
397
+ "items": {
398
+ "type": "object",
399
+ "properties": {
400
+ "action": {
401
+ "type": "string",
402
+ "enum": [
403
+ "add",
404
+ "remove"
405
+ ]
406
+ },
407
+ "type": {
408
+ "type": "string",
409
+ "enum": [
410
+ "label",
411
+ "custom_field",
412
+ "tag",
413
+ "milestone",
414
+ "issue",
415
+ "jira",
416
+ "requirement"
417
+ ]
418
+ },
419
+ "value": {
420
+ "type": "string"
421
+ }
422
+ },
423
+ "required": [
424
+ "action",
425
+ "type",
426
+ "value"
427
+ ],
428
+ "additionalProperties": false
429
+ }
430
+ }
431
+ },
432
+ "required": [
433
+ "title"
434
+ ],
435
+ "additionalProperties": false
436
+ }
437
+ },
438
+ {
439
+ "name": "suites_update",
440
+ "description": "Update suite (/api/v2/{project_id}/suites/{id})",
441
+ "inputSchema": {
442
+ "type": "object",
443
+ "properties": {
444
+ "suite_id": {
445
+ "type": "string"
446
+ },
447
+ "title": {
448
+ "type": "string"
449
+ },
450
+ "description": {
451
+ "type": "string"
452
+ },
453
+ "emoji": {
454
+ "type": "string"
455
+ },
456
+ "parent_id": {
457
+ "type": "string"
458
+ },
459
+ "file_type": {
460
+ "type": "string"
461
+ },
462
+ "assigned_to": {
463
+ "type": "string"
464
+ },
465
+ "file": {
466
+ "type": "string"
467
+ },
468
+ "children": {
469
+ "type": "array",
470
+ "items": {}
471
+ },
472
+ "link": {
473
+ "type": "array",
474
+ "items": {
475
+ "type": "object",
476
+ "properties": {
477
+ "action": {
478
+ "type": "string",
479
+ "enum": [
480
+ "add",
481
+ "remove"
482
+ ]
483
+ },
484
+ "type": {
485
+ "type": "string",
486
+ "enum": [
487
+ "label",
488
+ "custom_field",
489
+ "tag",
490
+ "milestone",
491
+ "issue",
492
+ "jira",
493
+ "requirement"
494
+ ]
495
+ },
496
+ "value": {
497
+ "type": "string"
498
+ }
499
+ },
500
+ "required": [
501
+ "action",
502
+ "type",
503
+ "value"
504
+ ],
505
+ "additionalProperties": false
506
+ }
507
+ }
508
+ },
509
+ "required": [
510
+ "suite_id"
511
+ ],
512
+ "additionalProperties": false
513
+ }
514
+ },
515
+ {
516
+ "name": "suites_delete",
517
+ "description": "Delete suite",
518
+ "inputSchema": {
519
+ "type": "object",
520
+ "properties": {
521
+ "suite_id": {
522
+ "type": "string"
523
+ }
524
+ },
525
+ "required": [
526
+ "suite_id"
527
+ ],
528
+ "additionalProperties": false
529
+ }
530
+ },
531
+ {
532
+ "name": "suites_search",
533
+ "description": "Search suites by title (delegates to suites list with search_text)",
534
+ "inputSchema": {
535
+ "type": "object",
536
+ "properties": {
537
+ "search_text": {
538
+ "type": "string"
539
+ },
540
+ "page": {
541
+ "type": "integer",
542
+ "minimum": 1
543
+ },
544
+ "per_page": {
545
+ "type": "integer",
546
+ "minimum": 1,
547
+ "maximum": 100
548
+ },
549
+ "file_type": {
550
+ "type": "string",
551
+ "enum": [
552
+ "file",
553
+ "folder"
554
+ ]
555
+ },
556
+ "tag": {
557
+ "type": "string"
558
+ },
559
+ "labels": {
560
+ "type": "string"
561
+ }
562
+ },
563
+ "additionalProperties": false
564
+ }
565
+ },
566
+ {
567
+ "name": "suites_issues_list",
568
+ "description": "List linked issues for a suite (/api/v2/{project_id}/issues?suite_id=...)",
569
+ "inputSchema": {
570
+ "type": "object",
571
+ "properties": {
572
+ "suite_id": {
573
+ "type": "string"
574
+ },
575
+ "page": {
576
+ "type": "integer",
577
+ "minimum": 1
578
+ },
579
+ "per_page": {
580
+ "type": "integer",
581
+ "minimum": 1,
582
+ "maximum": 100
583
+ },
584
+ "source": {
585
+ "type": "string"
586
+ }
587
+ },
588
+ "required": [
589
+ "suite_id"
590
+ ],
591
+ "additionalProperties": false
592
+ }
593
+ },
594
+ {
595
+ "name": "suites_issues_link",
596
+ "description": "Link issue to a suite (/api/v2/{project_id}/issues)",
597
+ "inputSchema": {
598
+ "type": "object",
599
+ "properties": {
600
+ "suite_id": {
601
+ "type": "string"
602
+ },
603
+ "url": {
604
+ "type": "string"
605
+ },
606
+ "jira_id": {
607
+ "type": "string"
608
+ }
609
+ },
610
+ "required": [
611
+ "suite_id"
612
+ ],
613
+ "additionalProperties": false
614
+ }
615
+ },
616
+ {
617
+ "name": "suites_issues_unlink",
618
+ "description": "Unlink issue from a suite (/api/v2/{project_id}/issues/{id})",
619
+ "inputSchema": {
620
+ "type": "object",
621
+ "properties": {
622
+ "issue_id": {
623
+ "type": "integer"
624
+ },
625
+ "type": {
626
+ "type": "string",
627
+ "enum": [
628
+ "issue",
629
+ "jira_issue"
630
+ ]
631
+ }
632
+ },
633
+ "required": [
634
+ "issue_id",
635
+ "type"
636
+ ],
637
+ "additionalProperties": false
638
+ }
639
+ },
640
+ {
641
+ "name": "runs_list",
642
+ "description": "List runs (/api/v2/{project_id}/runs). TQL (Testomat.io Query Language) is a string expression passed in `tql` to filter runs. Supported syntax includes logical operators `and`, `or`, `not`, equality operators `==` and `!=`, list membership `in [...]`, `%` for partial text match on supported text fields, and parentheses for grouping. Ordered comparisons `>`, `<`, `>=`, `<=` are for ordered fields such as `priority`, dates, and numeric counters/durations. Use quotes for string values, for example `state == 'automated'`. Runs also support boolean flags without comparison such as `failed`, `finished`, `automated`, or `with_defect`. Documented run variables: `title`, `plan`, `rungroup`, `env`, `tag`, `label`, `jira`, `duration`, `passed_count`, `failed_count`, `skipped_count`, `automated`, `manual`, `mixed`, `finished`, `unfinished`, `passed`, `failed`, `terminated`, `published`, `private`, `archived`, `unarchived`, `with_defect`, `has_defect`, `has_test`, `has_test_tag`, `has_test_label`, `has_suite`, `has_message`, `has_custom_status`, `has_assigned_to`, `has_retries`, `has_test_duration`, `has_priority`, `created_at`, `updated_at`, `launched_at`, `finished_at`, `milestone`. Documented examples: `title % 'Manual tests'`, `plan == '{PLAN_ID}'`, `env in ['Windows', 'Linux']`, `failed and has_test_tag == 'regression'`, `finished and with_defect`, `has_retries > 2`, `automated and env == 'Production' and has_message % 'Server Error'`, `finished_at >= '2025-07-01' and finished_at <= '2025-07-31' and failed`. Do not invent undocumented fields or syntax. If a query fails, simplify it to one documented predicate.",
643
+ "inputSchema": {
644
+ "type": "object",
645
+ "properties": {
646
+ "page": {
647
+ "type": "integer",
648
+ "minimum": 1
649
+ },
650
+ "per_page": {
651
+ "type": "integer",
652
+ "minimum": 1,
653
+ "maximum": 100
654
+ },
655
+ "tql": {
656
+ "type": "string",
657
+ "description": "TQL filter for runs. Documented variables: `title`, `plan`, `rungroup`, `env`, `tag`, `label`, `jira`, `duration`, `passed_count`, `failed_count`, `skipped_count`, `automated`, `manual`, `mixed`, `finished`, `unfinished`, `passed`, `failed`, `terminated`, `published`, `private`, `archived`, `unarchived`, `with_defect`, `has_defect`, `has_test`, `has_test_tag`, `has_test_label`, `has_suite`, `has_message`, `has_custom_status`, `has_assigned_to`, `has_retries`, `has_test_duration`, `has_priority`, `created_at`, `updated_at`, `launched_at`, `finished_at`, `milestone`. Examples: `title % 'Manual tests'`, `plan == '{PLAN_ID}'`, `env in ['Windows', 'Linux']`, `failed and has_test_tag == 'regression'`, `finished and with_defect`, `has_retries > 2`, `automated and env == 'Production' and has_message % 'Server Error'`, `finished_at >= '2025-07-01' and finished_at <= '2025-07-31' and failed`."
658
+ }
659
+ },
660
+ "additionalProperties": false
661
+ }
662
+ },
663
+ {
664
+ "name": "runs_get",
665
+ "description": "Get run by ID",
666
+ "inputSchema": {
667
+ "type": "object",
668
+ "properties": {
669
+ "run_id": {
670
+ "type": "string"
671
+ }
672
+ },
673
+ "required": [
674
+ "run_id"
675
+ ],
676
+ "additionalProperties": false
677
+ }
678
+ },
679
+ {
680
+ "name": "runs_create",
681
+ "description": "Create run (/api/v2/{project_id}/runs)",
682
+ "inputSchema": {
683
+ "type": "object",
684
+ "properties": {
685
+ "title": {
686
+ "type": "string"
687
+ },
688
+ "description": {
689
+ "type": "string"
690
+ },
691
+ "plan_ids": {
692
+ "type": "array",
693
+ "items": {
694
+ "type": "string"
695
+ }
696
+ },
697
+ "kind": {
698
+ "type": "string",
699
+ "enum": [
700
+ "manual",
701
+ "automated",
702
+ "mixed"
703
+ ]
704
+ },
705
+ "rungroup_id": {
706
+ "type": "string"
707
+ },
708
+ "env": {
709
+ "type": "string"
710
+ },
711
+ "assigned_to": {
712
+ "type": "string"
713
+ },
714
+ "assign_strategy": {
715
+ "type": "string",
716
+ "enum": [
717
+ "test",
718
+ "random",
719
+ "none"
720
+ ]
721
+ },
722
+ "test_ids": {
723
+ "type": "array",
724
+ "items": {
725
+ "type": "string"
726
+ }
727
+ },
728
+ "suite_ids": {
729
+ "type": "array",
730
+ "items": {
731
+ "type": "string"
732
+ }
733
+ },
734
+ "envs": {
735
+ "type": "array",
736
+ "items": {
737
+ "type": "string"
738
+ }
739
+ },
740
+ "link": {
741
+ "type": "array",
742
+ "items": {
743
+ "type": "object",
744
+ "properties": {
745
+ "action": {
746
+ "type": "string",
747
+ "enum": [
748
+ "add",
749
+ "remove"
750
+ ]
751
+ },
752
+ "type": {
753
+ "type": "string",
754
+ "enum": [
755
+ "label",
756
+ "custom_field",
757
+ "tag",
758
+ "milestone",
759
+ "issue",
760
+ "jira"
761
+ ]
762
+ },
763
+ "value": {
764
+ "type": "string"
765
+ }
766
+ },
767
+ "required": [
768
+ "action",
769
+ "type",
770
+ "value"
771
+ ],
772
+ "additionalProperties": false
773
+ }
774
+ }
775
+ },
776
+ "required": [
777
+ "title"
778
+ ],
779
+ "additionalProperties": false
780
+ }
781
+ },
782
+ {
783
+ "name": "runs_update",
784
+ "description": "Update run (/api/v2/{project_id}/runs/{id})",
785
+ "inputSchema": {
786
+ "type": "object",
787
+ "properties": {
788
+ "run_id": {
789
+ "type": "string"
790
+ },
791
+ "title": {
792
+ "type": "string"
793
+ },
794
+ "description": {
795
+ "type": "string"
796
+ },
797
+ "kind": {
798
+ "type": "string",
799
+ "enum": [
800
+ "manual",
801
+ "automated",
802
+ "mixed"
803
+ ]
804
+ },
805
+ "rungroup_id": {
806
+ "type": "string"
807
+ },
808
+ "env": {
809
+ "type": "string"
810
+ },
811
+ "status_event": {
812
+ "type": "string",
813
+ "enum": [
814
+ "finish",
815
+ "finish_manual",
816
+ "launch",
817
+ "rerun",
818
+ "scheduled",
819
+ "terminate"
820
+ ]
821
+ },
822
+ "assigned_to": {
823
+ "type": "string"
824
+ },
825
+ "assign_strategy": {
826
+ "type": "string",
827
+ "enum": [
828
+ "test",
829
+ "random",
830
+ "none"
831
+ ]
832
+ },
833
+ "test_ids": {
834
+ "type": "array",
835
+ "items": {
836
+ "type": "string"
837
+ }
838
+ },
839
+ "suite_ids": {
840
+ "type": "array",
841
+ "items": {
842
+ "type": "string"
843
+ }
844
+ },
845
+ "link": {
846
+ "type": "array",
847
+ "items": {
848
+ "type": "object",
849
+ "properties": {
850
+ "action": {
851
+ "type": "string",
852
+ "enum": [
853
+ "add",
854
+ "remove"
855
+ ]
856
+ },
857
+ "type": {
858
+ "type": "string",
859
+ "enum": [
860
+ "label",
861
+ "custom_field",
862
+ "tag",
863
+ "milestone",
864
+ "issue",
865
+ "jira"
866
+ ]
867
+ },
868
+ "value": {
869
+ "type": "string"
870
+ }
871
+ },
872
+ "required": [
873
+ "action",
874
+ "type",
875
+ "value"
876
+ ],
877
+ "additionalProperties": false
878
+ }
879
+ }
880
+ },
881
+ "required": [
882
+ "run_id"
883
+ ],
884
+ "additionalProperties": false
885
+ }
886
+ },
887
+ {
888
+ "name": "runs_delete",
889
+ "description": "Delete run (/api/v2/{project_id}/runs/{id})",
890
+ "inputSchema": {
891
+ "type": "object",
892
+ "properties": {
893
+ "run_id": {
894
+ "type": "string"
895
+ }
896
+ },
897
+ "required": [
898
+ "run_id"
899
+ ],
900
+ "additionalProperties": false
901
+ }
902
+ },
903
+ {
904
+ "name": "runs_search",
905
+ "description": "Search runs using TQL (delegates to runs_list). TQL (Testomat.io Query Language) is a string expression passed in `tql` to filter runs. Supported syntax includes logical operators `and`, `or`, `not`, equality operators `==` and `!=`, list membership `in [...]`, `%` for partial text match on supported text fields, and parentheses for grouping. Ordered comparisons `>`, `<`, `>=`, `<=` are for ordered fields such as `priority`, dates, and numeric counters/durations. Use quotes for string values, for example `state == 'automated'`. Runs also support boolean flags without comparison such as `failed`, `finished`, `automated`, or `with_defect`. Documented run variables: `title`, `plan`, `rungroup`, `env`, `tag`, `label`, `jira`, `duration`, `passed_count`, `failed_count`, `skipped_count`, `automated`, `manual`, `mixed`, `finished`, `unfinished`, `passed`, `failed`, `terminated`, `published`, `private`, `archived`, `unarchived`, `with_defect`, `has_defect`, `has_test`, `has_test_tag`, `has_test_label`, `has_suite`, `has_message`, `has_custom_status`, `has_assigned_to`, `has_retries`, `has_test_duration`, `has_priority`, `created_at`, `updated_at`, `launched_at`, `finished_at`, `milestone`. Documented examples: `title % 'Manual tests'`, `plan == '{PLAN_ID}'`, `env in ['Windows', 'Linux']`, `failed and has_test_tag == 'regression'`, `finished and with_defect`, `has_retries > 2`, `automated and env == 'Production' and has_message % 'Server Error'`, `finished_at >= '2025-07-01' and finished_at <= '2025-07-31' and failed`. Do not invent undocumented fields or syntax. If a query fails, simplify it to one documented predicate.",
906
+ "inputSchema": {
907
+ "type": "object",
908
+ "properties": {
909
+ "page": {
910
+ "type": "integer",
911
+ "minimum": 1
912
+ },
913
+ "per_page": {
914
+ "type": "integer",
915
+ "minimum": 1,
916
+ "maximum": 100
917
+ },
918
+ "tql": {
919
+ "type": "string",
920
+ "description": "TQL filter for runs. Documented variables: `title`, `plan`, `rungroup`, `env`, `tag`, `label`, `jira`, `duration`, `passed_count`, `failed_count`, `skipped_count`, `automated`, `manual`, `mixed`, `finished`, `unfinished`, `passed`, `failed`, `terminated`, `published`, `private`, `archived`, `unarchived`, `with_defect`, `has_defect`, `has_test`, `has_test_tag`, `has_test_label`, `has_suite`, `has_message`, `has_custom_status`, `has_assigned_to`, `has_retries`, `has_test_duration`, `has_priority`, `created_at`, `updated_at`, `launched_at`, `finished_at`, `milestone`. Examples: `title % 'Manual tests'`, `plan == '{PLAN_ID}'`, `env in ['Windows', 'Linux']`, `failed and has_test_tag == 'regression'`, `finished and with_defect`, `has_retries > 2`, `automated and env == 'Production' and has_message % 'Server Error'`, `finished_at >= '2025-07-01' and finished_at <= '2025-07-31' and failed`."
921
+ }
922
+ },
923
+ "additionalProperties": false
924
+ }
925
+ },
926
+ {
927
+ "name": "runs_issues_list",
928
+ "description": "List linked issues for a run (/api/v2/{project_id}/issues?run_id=...)",
929
+ "inputSchema": {
930
+ "type": "object",
931
+ "properties": {
932
+ "run_id": {
933
+ "type": "string"
934
+ },
935
+ "page": {
936
+ "type": "integer",
937
+ "minimum": 1
938
+ },
939
+ "per_page": {
940
+ "type": "integer",
941
+ "minimum": 1,
942
+ "maximum": 100
943
+ },
944
+ "source": {
945
+ "type": "string"
946
+ }
947
+ },
948
+ "required": [
949
+ "run_id"
950
+ ],
951
+ "additionalProperties": false
952
+ }
953
+ },
954
+ {
955
+ "name": "runs_issues_link",
956
+ "description": "Link issue to a run (/api/v2/{project_id}/issues)",
957
+ "inputSchema": {
958
+ "type": "object",
959
+ "properties": {
960
+ "run_id": {
961
+ "type": "string"
962
+ },
963
+ "url": {
964
+ "type": "string"
965
+ },
966
+ "jira_id": {
967
+ "type": "string"
968
+ }
969
+ },
970
+ "required": [
971
+ "run_id"
972
+ ],
973
+ "additionalProperties": false
974
+ }
975
+ },
976
+ {
977
+ "name": "runs_issues_unlink",
978
+ "description": "Unlink issue from a run (/api/v2/{project_id}/issues/{id})",
979
+ "inputSchema": {
980
+ "type": "object",
981
+ "properties": {
982
+ "issue_id": {
983
+ "type": "integer"
984
+ },
985
+ "type": {
986
+ "type": "string",
987
+ "enum": [
988
+ "issue",
989
+ "jira_issue"
990
+ ]
991
+ }
992
+ },
993
+ "required": [
994
+ "issue_id",
995
+ "type"
996
+ ],
997
+ "additionalProperties": false
998
+ }
999
+ },
1000
+ {
1001
+ "name": "testruns_list",
1002
+ "description": "List testruns (/api/v2/{project_id}/testruns)",
1003
+ "inputSchema": {
1004
+ "type": "object",
1005
+ "properties": {
1006
+ "page": {
1007
+ "type": "integer",
1008
+ "minimum": 1
1009
+ },
1010
+ "per_page": {
1011
+ "type": "integer",
1012
+ "minimum": 1,
1013
+ "maximum": 100
1014
+ },
1015
+ "run_id": {
1016
+ "type": "string"
1017
+ },
1018
+ "test_ids": {
1019
+ "type": [
1020
+ "array",
1021
+ "string"
1022
+ ],
1023
+ "items": {
1024
+ "type": "string"
1025
+ }
1026
+ },
1027
+ "filter_status": {
1028
+ "type": "string",
1029
+ "enum": [
1030
+ "passed",
1031
+ "failed",
1032
+ "skipped",
1033
+ "pending"
1034
+ ]
1035
+ },
1036
+ "filter_kind": {
1037
+ "type": "string",
1038
+ "enum": [
1039
+ "manual",
1040
+ "automated"
1041
+ ]
1042
+ },
1043
+ "filter_user": {
1044
+ "type": [
1045
+ "integer",
1046
+ "string"
1047
+ ]
1048
+ },
1049
+ "filter_priority": {
1050
+ "type": "string",
1051
+ "enum": [
1052
+ "low",
1053
+ "normal",
1054
+ "important",
1055
+ "high",
1056
+ "critical"
1057
+ ]
1058
+ },
1059
+ "filter_substatus": {
1060
+ "type": "string"
1061
+ },
1062
+ "filter_search": {
1063
+ "type": "string"
1064
+ },
1065
+ "filter_message": {
1066
+ "type": "boolean"
1067
+ },
1068
+ "filter_link": {
1069
+ "type": "boolean"
1070
+ },
1071
+ "filter_finished_at_date_range": {
1072
+ "type": "string"
1073
+ },
1074
+ "tags": {
1075
+ "type": [
1076
+ "array",
1077
+ "string"
1078
+ ],
1079
+ "items": {
1080
+ "type": "string"
1081
+ }
1082
+ },
1083
+ "labels": {
1084
+ "type": [
1085
+ "array",
1086
+ "string"
1087
+ ],
1088
+ "items": {
1089
+ "type": "string"
1090
+ }
1091
+ },
1092
+ "envs": {
1093
+ "type": [
1094
+ "array",
1095
+ "string"
1096
+ ],
1097
+ "items": {
1098
+ "type": "string"
1099
+ }
1100
+ },
1101
+ "rungroups": {
1102
+ "type": [
1103
+ "array",
1104
+ "string"
1105
+ ],
1106
+ "items": {
1107
+ "type": "string"
1108
+ }
1109
+ },
1110
+ "defects": {
1111
+ "type": "string",
1112
+ "enum": [
1113
+ "has_defects",
1114
+ "without_defects"
1115
+ ]
1116
+ }
1117
+ },
1118
+ "additionalProperties": false
1119
+ }
1120
+ },
1121
+ {
1122
+ "name": "testruns_get",
1123
+ "description": "Get testrun by ID",
1124
+ "inputSchema": {
1125
+ "type": "object",
1126
+ "properties": {
1127
+ "testrun_id": {
1128
+ "type": "integer"
1129
+ }
1130
+ },
1131
+ "required": [
1132
+ "testrun_id"
1133
+ ],
1134
+ "additionalProperties": false
1135
+ }
1136
+ },
1137
+ {
1138
+ "name": "testruns_create",
1139
+ "description": "Create testrun (/api/v2/{project_id}/testruns)",
1140
+ "inputSchema": {
1141
+ "type": "object",
1142
+ "properties": {
1143
+ "run_id": {
1144
+ "type": "string"
1145
+ },
1146
+ "test_id": {
1147
+ "type": "string"
1148
+ },
1149
+ "status": {
1150
+ "type": "string"
1151
+ },
1152
+ "message": {
1153
+ "type": "string"
1154
+ },
1155
+ "run_time": {
1156
+ "type": "number"
1157
+ },
1158
+ "assigned_to": {
1159
+ "type": "string"
1160
+ },
1161
+ "test_title": {
1162
+ "type": "string"
1163
+ },
1164
+ "automated": {
1165
+ "type": "boolean"
1166
+ }
1167
+ },
1168
+ "required": [
1169
+ "run_id"
1170
+ ],
1171
+ "additionalProperties": false
1172
+ }
1173
+ },
1174
+ {
1175
+ "name": "testruns_update",
1176
+ "description": "Update testrun (/api/v2/{project_id}/testruns/{id})",
1177
+ "inputSchema": {
1178
+ "type": "object",
1179
+ "properties": {
1180
+ "testrun_id": {
1181
+ "type": "integer"
1182
+ },
1183
+ "run_id": {
1184
+ "type": "string"
1185
+ },
1186
+ "test_id": {
1187
+ "type": "string"
1188
+ },
1189
+ "status": {
1190
+ "type": "string"
1191
+ },
1192
+ "message": {
1193
+ "type": "string"
1194
+ },
1195
+ "run_time": {
1196
+ "type": "number"
1197
+ },
1198
+ "assigned_to": {
1199
+ "type": "string"
1200
+ },
1201
+ "test_title": {
1202
+ "type": "string"
1203
+ },
1204
+ "automated": {
1205
+ "type": "boolean"
1206
+ }
1207
+ },
1208
+ "required": [
1209
+ "testrun_id"
1210
+ ],
1211
+ "additionalProperties": false
1212
+ }
1213
+ },
1214
+ {
1215
+ "name": "testruns_delete",
1216
+ "description": "Delete testrun (/api/v2/{project_id}/testruns/{id})",
1217
+ "inputSchema": {
1218
+ "type": "object",
1219
+ "properties": {
1220
+ "testrun_id": {
1221
+ "type": "integer"
1222
+ }
1223
+ },
1224
+ "required": [
1225
+ "testrun_id"
1226
+ ],
1227
+ "additionalProperties": false
1228
+ }
1229
+ },
1230
+ {
1231
+ "name": "testruns_search",
1232
+ "description": "Search testruns (delegates to testruns list; docs has no dedicated search parameter)",
1233
+ "inputSchema": {
1234
+ "type": "object",
1235
+ "properties": {
1236
+ "run_id": {
1237
+ "type": "string"
1238
+ },
1239
+ "test_ids": {
1240
+ "type": [
1241
+ "array",
1242
+ "string"
1243
+ ],
1244
+ "items": {
1245
+ "type": "string"
1246
+ }
1247
+ },
1248
+ "filter_status": {
1249
+ "type": "string",
1250
+ "enum": [
1251
+ "passed",
1252
+ "failed",
1253
+ "skipped",
1254
+ "pending"
1255
+ ]
1256
+ },
1257
+ "filter_kind": {
1258
+ "type": "string",
1259
+ "enum": [
1260
+ "manual",
1261
+ "automated"
1262
+ ]
1263
+ },
1264
+ "filter_user": {
1265
+ "type": [
1266
+ "integer",
1267
+ "string"
1268
+ ]
1269
+ },
1270
+ "filter_priority": {
1271
+ "type": "string",
1272
+ "enum": [
1273
+ "low",
1274
+ "normal",
1275
+ "important",
1276
+ "high",
1277
+ "critical"
1278
+ ]
1279
+ },
1280
+ "filter_substatus": {
1281
+ "type": "string"
1282
+ },
1283
+ "filter_search": {
1284
+ "type": "string"
1285
+ },
1286
+ "page": {
1287
+ "type": "integer",
1288
+ "minimum": 1
1289
+ },
1290
+ "per_page": {
1291
+ "type": "integer",
1292
+ "minimum": 1,
1293
+ "maximum": 100
1294
+ },
1295
+ "filter_message": {
1296
+ "type": "boolean"
1297
+ },
1298
+ "filter_link": {
1299
+ "type": "boolean"
1300
+ },
1301
+ "filter_finished_at_date_range": {
1302
+ "type": "string"
1303
+ },
1304
+ "tags": {
1305
+ "type": [
1306
+ "array",
1307
+ "string"
1308
+ ],
1309
+ "items": {
1310
+ "type": "string"
1311
+ }
1312
+ },
1313
+ "labels": {
1314
+ "type": [
1315
+ "array",
1316
+ "string"
1317
+ ],
1318
+ "items": {
1319
+ "type": "string"
1320
+ }
1321
+ },
1322
+ "envs": {
1323
+ "type": [
1324
+ "array",
1325
+ "string"
1326
+ ],
1327
+ "items": {
1328
+ "type": "string"
1329
+ }
1330
+ },
1331
+ "rungroups": {
1332
+ "type": [
1333
+ "array",
1334
+ "string"
1335
+ ],
1336
+ "items": {
1337
+ "type": "string"
1338
+ }
1339
+ },
1340
+ "defects": {
1341
+ "type": "string",
1342
+ "enum": [
1343
+ "has_defects",
1344
+ "without_defects"
1345
+ ]
1346
+ }
1347
+ },
1348
+ "additionalProperties": false
1349
+ }
1350
+ },
1351
+ {
1352
+ "name": "testruns_issues_list",
1353
+ "description": "List linked issues for a testrun (/api/v2/{project_id}/issues?testrun_id=...)",
1354
+ "inputSchema": {
1355
+ "type": "object",
1356
+ "properties": {
1357
+ "testrun_id": {
1358
+ "type": "integer"
1359
+ },
1360
+ "page": {
1361
+ "type": "integer",
1362
+ "minimum": 1
1363
+ },
1364
+ "per_page": {
1365
+ "type": "integer",
1366
+ "minimum": 1,
1367
+ "maximum": 100
1368
+ },
1369
+ "source": {
1370
+ "type": "string"
1371
+ }
1372
+ },
1373
+ "required": [
1374
+ "testrun_id"
1375
+ ],
1376
+ "additionalProperties": false
1377
+ }
1378
+ },
1379
+ {
1380
+ "name": "testruns_issues_link",
1381
+ "description": "Link issue to a testrun (/api/v2/{project_id}/issues)",
1382
+ "inputSchema": {
1383
+ "type": "object",
1384
+ "properties": {
1385
+ "testrun_id": {
1386
+ "type": "integer"
1387
+ },
1388
+ "url": {
1389
+ "type": "string"
1390
+ },
1391
+ "jira_id": {
1392
+ "type": "string"
1393
+ }
1394
+ },
1395
+ "required": [
1396
+ "testrun_id"
1397
+ ],
1398
+ "additionalProperties": false
1399
+ }
1400
+ },
1401
+ {
1402
+ "name": "testruns_issues_unlink",
1403
+ "description": "Unlink issue from a testrun (/api/v2/{project_id}/issues/{id})",
1404
+ "inputSchema": {
1405
+ "type": "object",
1406
+ "properties": {
1407
+ "issue_id": {
1408
+ "type": "integer"
1409
+ },
1410
+ "type": {
1411
+ "type": "string",
1412
+ "enum": [
1413
+ "issue",
1414
+ "jira_issue"
1415
+ ]
1416
+ }
1417
+ },
1418
+ "required": [
1419
+ "issue_id",
1420
+ "type"
1421
+ ],
1422
+ "additionalProperties": false
1423
+ }
1424
+ },
1425
+ {
1426
+ "name": "rungroups_list",
1427
+ "description": "List run groups as tree (/api/v2/{project_id}/rungroups)",
1428
+ "inputSchema": {
1429
+ "type": "object",
1430
+ "properties": {
1431
+ "page": {
1432
+ "type": "integer",
1433
+ "minimum": 1
1434
+ },
1435
+ "per_page": {
1436
+ "type": "integer",
1437
+ "minimum": 1,
1438
+ "maximum": 100
1439
+ }
1440
+ },
1441
+ "additionalProperties": false
1442
+ }
1443
+ },
1444
+ {
1445
+ "name": "rungroups_get",
1446
+ "description": "Get run group by ID",
1447
+ "inputSchema": {
1448
+ "type": "object",
1449
+ "properties": {
1450
+ "rungroup_id": {
1451
+ "type": "string"
1452
+ }
1453
+ },
1454
+ "required": [
1455
+ "rungroup_id"
1456
+ ],
1457
+ "additionalProperties": false
1458
+ }
1459
+ },
1460
+ {
1461
+ "name": "rungroups_create",
1462
+ "description": "Create run group (/api/v2/{project_id}/rungroups)",
1463
+ "inputSchema": {
1464
+ "type": "object",
1465
+ "properties": {
1466
+ "title": {
1467
+ "type": "string"
1468
+ },
1469
+ "description": {
1470
+ "type": "string"
1471
+ },
1472
+ "emoji": {
1473
+ "type": "string"
1474
+ },
1475
+ "kind": {
1476
+ "type": "string"
1477
+ },
1478
+ "pin": {
1479
+ "type": "boolean"
1480
+ },
1481
+ "status": {
1482
+ "type": "string"
1483
+ },
1484
+ "parent_id": {
1485
+ "type": "string"
1486
+ },
1487
+ "children": {
1488
+ "type": "array",
1489
+ "items": {}
1490
+ }
1491
+ },
1492
+ "required": [
1493
+ "title"
1494
+ ],
1495
+ "additionalProperties": false
1496
+ }
1497
+ },
1498
+ {
1499
+ "name": "rungroups_update",
1500
+ "description": "Update run group (/api/v2/{project_id}/rungroups/{id})",
1501
+ "inputSchema": {
1502
+ "type": "object",
1503
+ "properties": {
1504
+ "rungroup_id": {
1505
+ "type": "string"
1506
+ },
1507
+ "title": {
1508
+ "type": "string"
1509
+ },
1510
+ "description": {
1511
+ "type": "string"
1512
+ },
1513
+ "emoji": {
1514
+ "type": "string"
1515
+ },
1516
+ "kind": {
1517
+ "type": "string"
1518
+ },
1519
+ "pin": {
1520
+ "type": "boolean"
1521
+ },
1522
+ "status": {
1523
+ "type": "string"
1524
+ },
1525
+ "parent_id": {
1526
+ "type": "string"
1527
+ },
1528
+ "children": {
1529
+ "type": "array",
1530
+ "items": {}
1531
+ }
1532
+ },
1533
+ "required": [
1534
+ "rungroup_id"
1535
+ ],
1536
+ "additionalProperties": false
1537
+ }
1538
+ },
1539
+ {
1540
+ "name": "rungroups_delete",
1541
+ "description": "Delete run group (/api/v2/{project_id}/rungroups/{id})",
1542
+ "inputSchema": {
1543
+ "type": "object",
1544
+ "properties": {
1545
+ "rungroup_id": {
1546
+ "type": "string"
1547
+ }
1548
+ },
1549
+ "required": [
1550
+ "rungroup_id"
1551
+ ],
1552
+ "additionalProperties": false
1553
+ }
1554
+ },
1555
+ {
1556
+ "name": "steps_list",
1557
+ "description": "List steps (/api/v2/{project_id}/steps)",
1558
+ "inputSchema": {
1559
+ "type": "object",
1560
+ "properties": {
1561
+ "page": {
1562
+ "type": "integer",
1563
+ "minimum": 1
1564
+ },
1565
+ "per_page": {
1566
+ "type": "integer",
1567
+ "minimum": 1,
1568
+ "maximum": 100
1569
+ }
1570
+ },
1571
+ "additionalProperties": false
1572
+ }
1573
+ },
1574
+ {
1575
+ "name": "steps_get",
1576
+ "description": "Get step by ID",
1577
+ "inputSchema": {
1578
+ "type": "object",
1579
+ "properties": {
1580
+ "step_id": {
1581
+ "type": "integer"
1582
+ }
1583
+ },
1584
+ "required": [
1585
+ "step_id"
1586
+ ],
1587
+ "additionalProperties": false
1588
+ }
1589
+ },
1590
+ {
1591
+ "name": "steps_create",
1592
+ "description": "Create step (/api/v2/{project_id}/steps)",
1593
+ "inputSchema": {
1594
+ "type": "object",
1595
+ "properties": {
1596
+ "title": {
1597
+ "type": "string"
1598
+ },
1599
+ "description": {
1600
+ "type": "string"
1601
+ },
1602
+ "link": {
1603
+ "type": "array",
1604
+ "items": {
1605
+ "type": "object",
1606
+ "properties": {
1607
+ "action": {
1608
+ "type": "string",
1609
+ "enum": [
1610
+ "add",
1611
+ "remove"
1612
+ ]
1613
+ },
1614
+ "type": {
1615
+ "type": "string",
1616
+ "enum": [
1617
+ "label",
1618
+ "custom_field",
1619
+ "tag",
1620
+ "milestone",
1621
+ "issue",
1622
+ "jira"
1623
+ ]
1624
+ },
1625
+ "value": {
1626
+ "type": "string"
1627
+ }
1628
+ },
1629
+ "required": [
1630
+ "action",
1631
+ "type",
1632
+ "value"
1633
+ ],
1634
+ "additionalProperties": false
1635
+ }
1636
+ }
1637
+ },
1638
+ "required": [
1639
+ "title"
1640
+ ],
1641
+ "additionalProperties": false
1642
+ }
1643
+ },
1644
+ {
1645
+ "name": "steps_update",
1646
+ "description": "Update step (/api/v2/{project_id}/steps/{id})",
1647
+ "inputSchema": {
1648
+ "type": "object",
1649
+ "properties": {
1650
+ "step_id": {
1651
+ "type": "integer"
1652
+ },
1653
+ "title": {
1654
+ "type": "string"
1655
+ },
1656
+ "description": {
1657
+ "type": "string"
1658
+ },
1659
+ "link": {
1660
+ "type": "array",
1661
+ "items": {
1662
+ "type": "object",
1663
+ "properties": {
1664
+ "action": {
1665
+ "type": "string",
1666
+ "enum": [
1667
+ "add",
1668
+ "remove"
1669
+ ]
1670
+ },
1671
+ "type": {
1672
+ "type": "string",
1673
+ "enum": [
1674
+ "label",
1675
+ "custom_field",
1676
+ "tag",
1677
+ "milestone",
1678
+ "issue",
1679
+ "jira"
1680
+ ]
1681
+ },
1682
+ "value": {
1683
+ "type": "string"
1684
+ }
1685
+ },
1686
+ "required": [
1687
+ "action",
1688
+ "type",
1689
+ "value"
1690
+ ],
1691
+ "additionalProperties": false
1692
+ }
1693
+ }
1694
+ },
1695
+ "required": [
1696
+ "step_id"
1697
+ ],
1698
+ "additionalProperties": false
1699
+ }
1700
+ },
1701
+ {
1702
+ "name": "steps_delete",
1703
+ "description": "Delete step (/api/v2/{project_id}/steps/{id})",
1704
+ "inputSchema": {
1705
+ "type": "object",
1706
+ "properties": {
1707
+ "step_id": {
1708
+ "type": "integer"
1709
+ }
1710
+ },
1711
+ "required": [
1712
+ "step_id"
1713
+ ],
1714
+ "additionalProperties": false
1715
+ }
1716
+ },
1717
+ {
1718
+ "name": "snippets_list",
1719
+ "description": "List snippets (/api/v2/{project_id}/snippets)",
1720
+ "inputSchema": {
1721
+ "type": "object",
1722
+ "properties": {
1723
+ "page": {
1724
+ "type": "integer",
1725
+ "minimum": 1
1726
+ },
1727
+ "per_page": {
1728
+ "type": "integer",
1729
+ "minimum": 1,
1730
+ "maximum": 100
1731
+ }
1732
+ },
1733
+ "additionalProperties": false
1734
+ }
1735
+ },
1736
+ {
1737
+ "name": "snippets_get",
1738
+ "description": "Get snippet by ID",
1739
+ "inputSchema": {
1740
+ "type": "object",
1741
+ "properties": {
1742
+ "snippet_id": {
1743
+ "type": "integer"
1744
+ }
1745
+ },
1746
+ "required": [
1747
+ "snippet_id"
1748
+ ],
1749
+ "additionalProperties": false
1750
+ }
1751
+ },
1752
+ {
1753
+ "name": "snippets_create",
1754
+ "description": "Create snippet (/api/v2/{project_id}/snippets)",
1755
+ "inputSchema": {
1756
+ "type": "object",
1757
+ "properties": {
1758
+ "title": {
1759
+ "type": "string"
1760
+ },
1761
+ "description": {
1762
+ "type": "string"
1763
+ },
1764
+ "link": {
1765
+ "type": "array",
1766
+ "items": {
1767
+ "type": "object",
1768
+ "properties": {
1769
+ "action": {
1770
+ "type": "string",
1771
+ "enum": [
1772
+ "add",
1773
+ "remove"
1774
+ ]
1775
+ },
1776
+ "type": {
1777
+ "type": "string",
1778
+ "enum": [
1779
+ "label",
1780
+ "custom_field",
1781
+ "tag",
1782
+ "milestone",
1783
+ "issue",
1784
+ "jira"
1785
+ ]
1786
+ },
1787
+ "value": {
1788
+ "type": "string"
1789
+ }
1790
+ },
1791
+ "required": [
1792
+ "action",
1793
+ "type",
1794
+ "value"
1795
+ ],
1796
+ "additionalProperties": false
1797
+ }
1798
+ }
1799
+ },
1800
+ "required": [
1801
+ "title"
1802
+ ],
1803
+ "additionalProperties": false
1804
+ }
1805
+ },
1806
+ {
1807
+ "name": "snippets_update",
1808
+ "description": "Update snippet (/api/v2/{project_id}/snippets/{id})",
1809
+ "inputSchema": {
1810
+ "type": "object",
1811
+ "properties": {
1812
+ "snippet_id": {
1813
+ "type": "integer"
1814
+ },
1815
+ "title": {
1816
+ "type": "string"
1817
+ },
1818
+ "description": {
1819
+ "type": "string"
1820
+ },
1821
+ "link": {
1822
+ "type": "array",
1823
+ "items": {
1824
+ "type": "object",
1825
+ "properties": {
1826
+ "action": {
1827
+ "type": "string",
1828
+ "enum": [
1829
+ "add",
1830
+ "remove"
1831
+ ]
1832
+ },
1833
+ "type": {
1834
+ "type": "string",
1835
+ "enum": [
1836
+ "label",
1837
+ "custom_field",
1838
+ "tag",
1839
+ "milestone",
1840
+ "issue",
1841
+ "jira"
1842
+ ]
1843
+ },
1844
+ "value": {
1845
+ "type": "string"
1846
+ }
1847
+ },
1848
+ "required": [
1849
+ "action",
1850
+ "type",
1851
+ "value"
1852
+ ],
1853
+ "additionalProperties": false
1854
+ }
1855
+ }
1856
+ },
1857
+ "required": [
1858
+ "snippet_id"
1859
+ ],
1860
+ "additionalProperties": false
1861
+ }
1862
+ },
1863
+ {
1864
+ "name": "snippets_delete",
1865
+ "description": "Delete snippet (/api/v2/{project_id}/snippets/{id})",
1866
+ "inputSchema": {
1867
+ "type": "object",
1868
+ "properties": {
1869
+ "snippet_id": {
1870
+ "type": "integer"
1871
+ }
1872
+ },
1873
+ "required": [
1874
+ "snippet_id"
1875
+ ],
1876
+ "additionalProperties": false
1877
+ }
1878
+ },
1879
+ {
1880
+ "name": "labels_list",
1881
+ "description": "List labels (/api/v2/{project_id}/labels)",
1882
+ "inputSchema": {
1883
+ "type": "object",
1884
+ "properties": {
1885
+ "page": {
1886
+ "type": "integer",
1887
+ "minimum": 1
1888
+ },
1889
+ "per_page": {
1890
+ "type": "integer",
1891
+ "minimum": 1,
1892
+ "maximum": 100
1893
+ }
1894
+ },
1895
+ "additionalProperties": false
1896
+ }
1897
+ },
1898
+ {
1899
+ "name": "labels_get",
1900
+ "description": "Get label by slug",
1901
+ "inputSchema": {
1902
+ "type": "object",
1903
+ "properties": {
1904
+ "label_id": {
1905
+ "type": "string"
1906
+ }
1907
+ },
1908
+ "required": [
1909
+ "label_id"
1910
+ ],
1911
+ "additionalProperties": false
1912
+ }
1913
+ },
1914
+ {
1915
+ "name": "labels_create",
1916
+ "description": "Create label (/api/v2/{project_id}/labels)",
1917
+ "inputSchema": {
1918
+ "type": "object",
1919
+ "properties": {
1920
+ "title": {
1921
+ "type": "string"
1922
+ },
1923
+ "color": {
1924
+ "type": "string"
1925
+ },
1926
+ "visibility": {
1927
+ "type": "array",
1928
+ "items": {
1929
+ "type": "string",
1930
+ "enum": [
1931
+ "filter",
1932
+ "list"
1933
+ ]
1934
+ }
1935
+ },
1936
+ "scope": {
1937
+ "type": "array",
1938
+ "items": {
1939
+ "type": "string",
1940
+ "enum": [
1941
+ "tests",
1942
+ "suites",
1943
+ "runs",
1944
+ "plans",
1945
+ "steps",
1946
+ "templates"
1947
+ ]
1948
+ }
1949
+ },
1950
+ "field": {
1951
+ "type": "object"
1952
+ }
1953
+ },
1954
+ "required": [
1955
+ "title"
1956
+ ],
1957
+ "additionalProperties": false
1958
+ }
1959
+ },
1960
+ {
1961
+ "name": "labels_update",
1962
+ "description": "Update label (/api/v2/{project_id}/labels/{id})",
1963
+ "inputSchema": {
1964
+ "type": "object",
1965
+ "properties": {
1966
+ "label_id": {
1967
+ "type": "string"
1968
+ },
1969
+ "title": {
1970
+ "type": "string"
1971
+ },
1972
+ "color": {
1973
+ "type": "string"
1974
+ },
1975
+ "visibility": {
1976
+ "type": "array",
1977
+ "items": {
1978
+ "type": "string",
1979
+ "enum": [
1980
+ "filter",
1981
+ "list"
1982
+ ]
1983
+ }
1984
+ },
1985
+ "scope": {
1986
+ "type": "array",
1987
+ "items": {
1988
+ "type": "string",
1989
+ "enum": [
1990
+ "tests",
1991
+ "suites",
1992
+ "runs",
1993
+ "plans",
1994
+ "steps",
1995
+ "templates"
1996
+ ]
1997
+ }
1998
+ },
1999
+ "field": {
2000
+ "type": "object"
2001
+ }
2002
+ },
2003
+ "required": [
2004
+ "label_id"
2005
+ ],
2006
+ "additionalProperties": false
2007
+ }
2008
+ },
2009
+ {
2010
+ "name": "labels_delete",
2011
+ "description": "Delete label (/api/v2/{project_id}/labels/{id})",
2012
+ "inputSchema": {
2013
+ "type": "object",
2014
+ "properties": {
2015
+ "label_id": {
2016
+ "type": "string"
2017
+ }
2018
+ },
2019
+ "required": [
2020
+ "label_id"
2021
+ ],
2022
+ "additionalProperties": false
2023
+ }
2024
+ },
2025
+ {
2026
+ "name": "tags_list",
2027
+ "description": "List tags with counts (/api/v2/{project_id}/tags)",
2028
+ "inputSchema": {
2029
+ "type": "object",
2030
+ "properties": {},
2031
+ "additionalProperties": false
2032
+ }
2033
+ },
2034
+ {
2035
+ "name": "tags_get",
2036
+ "description": "Get tests by tag title (/api/v2/{project_id}/tags/{id})",
2037
+ "inputSchema": {
2038
+ "type": "object",
2039
+ "properties": {
2040
+ "tag_id": {
2041
+ "type": "string"
2042
+ }
2043
+ },
2044
+ "required": [
2045
+ "tag_id"
2046
+ ],
2047
+ "additionalProperties": false
2048
+ }
2049
+ },
2050
+ {
2051
+ "name": "tags_search",
2052
+ "description": "Search by tag title (delegates to tags_get)",
2053
+ "inputSchema": {
2054
+ "type": "object",
2055
+ "properties": {
2056
+ "tag_id": {
2057
+ "type": "string"
2058
+ },
2059
+ "query": {
2060
+ "type": "string"
2061
+ }
2062
+ },
2063
+ "additionalProperties": false
2064
+ }
2065
+ },
2066
+ {
2067
+ "name": "milestones_list",
2068
+ "description": "List milestones (/api/v2/{project_id}/milestones)",
2069
+ "inputSchema": {
2070
+ "type": "object",
2071
+ "properties": {
2072
+ "page": {
2073
+ "type": "integer",
2074
+ "minimum": 1
2075
+ },
2076
+ "per_page": {
2077
+ "type": "integer",
2078
+ "minimum": 1,
2079
+ "maximum": 100
2080
+ },
2081
+ "type": {
2082
+ "type": "string",
2083
+ "description": "Filter by milestone type (title), e.g. Sprint or Release."
2084
+ },
2085
+ "status": {
2086
+ "type": "string",
2087
+ "enum": [
2088
+ "created",
2089
+ "active",
2090
+ "closed"
2091
+ ]
2092
+ }
2093
+ },
2094
+ "additionalProperties": false
2095
+ }
2096
+ },
2097
+ {
2098
+ "name": "milestones_get",
2099
+ "description": "Get milestone by ID",
2100
+ "inputSchema": {
2101
+ "type": "object",
2102
+ "properties": {
2103
+ "milestone_id": {
2104
+ "type": "string"
2105
+ }
2106
+ },
2107
+ "required": [
2108
+ "milestone_id"
2109
+ ],
2110
+ "additionalProperties": false
2111
+ }
2112
+ },
2113
+ {
2114
+ "name": "issues_list",
2115
+ "description": "List linked issues (/api/v2/{project_id}/issues)",
2116
+ "inputSchema": {
2117
+ "type": "object",
2118
+ "properties": {
2119
+ "page": {
2120
+ "type": "integer",
2121
+ "minimum": 1
2122
+ },
2123
+ "per_page": {
2124
+ "type": "integer",
2125
+ "minimum": 1,
2126
+ "maximum": 100
2127
+ },
2128
+ "test_id": {
2129
+ "type": "string"
2130
+ },
2131
+ "suite_id": {
2132
+ "type": "string"
2133
+ },
2134
+ "run_id": {
2135
+ "type": "string"
2136
+ },
2137
+ "testrun_id": {
2138
+ "type": "integer"
2139
+ },
2140
+ "plan_id": {
2141
+ "type": "string"
2142
+ },
2143
+ "source": {
2144
+ "type": "string"
2145
+ }
2146
+ },
2147
+ "additionalProperties": false
2148
+ }
2149
+ },
2150
+ {
2151
+ "name": "issues_create",
2152
+ "description": "Link issue to resource (/api/v2/{project_id}/issues)",
2153
+ "inputSchema": {
2154
+ "type": "object",
2155
+ "properties": {
2156
+ "test_id": {
2157
+ "type": "string"
2158
+ },
2159
+ "suite_id": {
2160
+ "type": "string"
2161
+ },
2162
+ "run_id": {
2163
+ "type": "string"
2164
+ },
2165
+ "testrun_id": {
2166
+ "type": "integer"
2167
+ },
2168
+ "plan_id": {
2169
+ "type": "string"
2170
+ },
2171
+ "url": {
2172
+ "type": "string"
2173
+ },
2174
+ "jira_id": {
2175
+ "type": "string"
2176
+ }
2177
+ },
2178
+ "additionalProperties": false
2179
+ }
2180
+ },
2181
+ {
2182
+ "name": "issues_delete",
2183
+ "description": "Unlink issue (/api/v2/{project_id}/issues/{id})",
2184
+ "inputSchema": {
2185
+ "type": "object",
2186
+ "properties": {
2187
+ "issue_id": {
2188
+ "type": "integer"
2189
+ },
2190
+ "type": {
2191
+ "type": "string",
2192
+ "enum": [
2193
+ "issue",
2194
+ "jira_issue"
2195
+ ]
2196
+ }
2197
+ },
2198
+ "required": [
2199
+ "issue_id",
2200
+ "type"
2201
+ ],
2202
+ "additionalProperties": false
2203
+ }
2204
+ },
2205
+ {
2206
+ "name": "issues_search",
2207
+ "description": "Search issues (delegates to issues_list filters)",
2208
+ "inputSchema": {
2209
+ "type": "object",
2210
+ "properties": {
2211
+ "page": {
2212
+ "type": "integer",
2213
+ "minimum": 1
2214
+ },
2215
+ "per_page": {
2216
+ "type": "integer",
2217
+ "minimum": 1,
2218
+ "maximum": 100
2219
+ },
2220
+ "test_id": {
2221
+ "type": "string"
2222
+ },
2223
+ "suite_id": {
2224
+ "type": "string"
2225
+ },
2226
+ "run_id": {
2227
+ "type": "string"
2228
+ },
2229
+ "testrun_id": {
2230
+ "type": "integer"
2231
+ },
2232
+ "plan_id": {
2233
+ "type": "string"
2234
+ },
2235
+ "source": {
2236
+ "type": "string"
2237
+ }
2238
+ },
2239
+ "additionalProperties": false
2240
+ }
2241
+ },
2242
+ {
2243
+ "name": "tests_attachments_list",
2244
+ "description": "List attachments for a test (/api/v2/{project_id}/attachments?test_id=...)",
2245
+ "inputSchema": {
2246
+ "type": "object",
2247
+ "properties": {
2248
+ "test_id": {
2249
+ "type": "string"
2250
+ }
2251
+ },
2252
+ "required": [
2253
+ "test_id"
2254
+ ],
2255
+ "additionalProperties": false
2256
+ }
2257
+ },
2258
+ {
2259
+ "name": "tests_attachments_upload",
2260
+ "description": "Upload one attachment to a test (/api/v2/{project_id}/attachments?test_id=...)",
2261
+ "inputSchema": {
2262
+ "type": "object",
2263
+ "properties": {
2264
+ "test_id": {
2265
+ "type": "string"
2266
+ },
2267
+ "file_path": {
2268
+ "type": "string",
2269
+ "description": "Local path to the file that will be sent as multipart/form-data field \"file\"."
2270
+ }
2271
+ },
2272
+ "required": [
2273
+ "test_id",
2274
+ "file_path"
2275
+ ],
2276
+ "additionalProperties": false
2277
+ }
2278
+ },
2279
+ {
2280
+ "name": "tests_attachments_delete",
2281
+ "description": "Delete attachment from a test (/api/v2/{project_id}/attachments/{id}?test_id=...)",
2282
+ "inputSchema": {
2283
+ "type": "object",
2284
+ "properties": {
2285
+ "test_id": {
2286
+ "type": "string"
2287
+ },
2288
+ "attachment_id": {
2289
+ "type": "string"
2290
+ }
2291
+ },
2292
+ "required": [
2293
+ "test_id",
2294
+ "attachment_id"
2295
+ ],
2296
+ "additionalProperties": false
2297
+ }
2298
+ },
2299
+ {
2300
+ "name": "suites_attachments_list",
2301
+ "description": "List attachments for a suite (/api/v2/{project_id}/attachments?suite_id=...)",
2302
+ "inputSchema": {
2303
+ "type": "object",
2304
+ "properties": {
2305
+ "suite_id": {
2306
+ "type": "string"
2307
+ }
2308
+ },
2309
+ "required": [
2310
+ "suite_id"
2311
+ ],
2312
+ "additionalProperties": false
2313
+ }
2314
+ },
2315
+ {
2316
+ "name": "suites_attachments_upload",
2317
+ "description": "Upload one attachment to a suite (/api/v2/{project_id}/attachments?suite_id=...)",
2318
+ "inputSchema": {
2319
+ "type": "object",
2320
+ "properties": {
2321
+ "suite_id": {
2322
+ "type": "string"
2323
+ },
2324
+ "file_path": {
2325
+ "type": "string",
2326
+ "description": "Local path to the file that will be sent as multipart/form-data field \"file\"."
2327
+ }
2328
+ },
2329
+ "required": [
2330
+ "suite_id",
2331
+ "file_path"
2332
+ ],
2333
+ "additionalProperties": false
2334
+ }
2335
+ },
2336
+ {
2337
+ "name": "suites_attachments_delete",
2338
+ "description": "Delete attachment from a suite (/api/v2/{project_id}/attachments/{id}?suite_id=...)",
2339
+ "inputSchema": {
2340
+ "type": "object",
2341
+ "properties": {
2342
+ "suite_id": {
2343
+ "type": "string"
2344
+ },
2345
+ "attachment_id": {
2346
+ "type": "string"
2347
+ }
2348
+ },
2349
+ "required": [
2350
+ "suite_id",
2351
+ "attachment_id"
2352
+ ],
2353
+ "additionalProperties": false
2354
+ }
2355
+ },
2356
+ {
2357
+ "name": "testruns_attachments_list",
2358
+ "description": "List attachments for a testrun (/api/v2/{project_id}/attachments?testrun_id=...)",
2359
+ "inputSchema": {
2360
+ "type": "object",
2361
+ "properties": {
2362
+ "testrun_id": {
2363
+ "type": "integer"
2364
+ }
2365
+ },
2366
+ "required": [
2367
+ "testrun_id"
2368
+ ],
2369
+ "additionalProperties": false
2370
+ }
2371
+ },
2372
+ {
2373
+ "name": "testruns_attachments_upload",
2374
+ "description": "Upload one attachment to a testrun (/api/v2/{project_id}/attachments?testrun_id=...)",
2375
+ "inputSchema": {
2376
+ "type": "object",
2377
+ "properties": {
2378
+ "testrun_id": {
2379
+ "type": "integer"
2380
+ },
2381
+ "file_path": {
2382
+ "type": "string",
2383
+ "description": "Local path to the file that will be sent as multipart/form-data field \"file\"."
2384
+ }
2385
+ },
2386
+ "required": [
2387
+ "testrun_id",
2388
+ "file_path"
2389
+ ],
2390
+ "additionalProperties": false
2391
+ }
2392
+ },
2393
+ {
2394
+ "name": "testruns_attachments_delete",
2395
+ "description": "Delete attachment from a testrun (/api/v2/{project_id}/attachments/{id}?testrun_id=...)",
2396
+ "inputSchema": {
2397
+ "type": "object",
2398
+ "properties": {
2399
+ "testrun_id": {
2400
+ "type": "integer"
2401
+ },
2402
+ "attachment_id": {
2403
+ "type": "string"
2404
+ }
2405
+ },
2406
+ "required": [
2407
+ "testrun_id",
2408
+ "attachment_id"
2409
+ ],
2410
+ "additionalProperties": false
2411
+ }
2412
+ },
2413
+ {
2414
+ "name": "plans_list",
2415
+ "description": "List plans (/api/v2/{project_id}/plans)",
2416
+ "inputSchema": {
2417
+ "type": "object",
2418
+ "properties": {
2419
+ "page": {
2420
+ "type": "integer",
2421
+ "minimum": 1
2422
+ },
2423
+ "per_page": {
2424
+ "type": "integer",
2425
+ "minimum": 1,
2426
+ "maximum": 100
2427
+ },
2428
+ "kind": {
2429
+ "type": "string",
2430
+ "enum": [
2431
+ "manual",
2432
+ "automated",
2433
+ "mixed"
2434
+ ]
2435
+ },
2436
+ "hidden": {
2437
+ "type": "boolean"
2438
+ },
2439
+ "labels": {
2440
+ "type": "array",
2441
+ "items": {
2442
+ "type": "string"
2443
+ }
2444
+ },
2445
+ "search_text": {
2446
+ "type": "string"
2447
+ }
2448
+ },
2449
+ "additionalProperties": false
2450
+ }
2451
+ },
2452
+ {
2453
+ "name": "plans_get",
2454
+ "description": "Get plan by ID",
2455
+ "inputSchema": {
2456
+ "type": "object",
2457
+ "properties": {
2458
+ "plan_id": {
2459
+ "type": "string"
2460
+ }
2461
+ },
2462
+ "required": [
2463
+ "plan_id"
2464
+ ],
2465
+ "additionalProperties": false
2466
+ }
2467
+ },
2468
+ {
2469
+ "name": "plans_create",
2470
+ "description": "Create plan (/api/v2/{project_id}/plans). TQL (Testomat.io Query Language) is a string expression passed in `tql` to select tests included in a plan. Supported syntax includes logical operators `and`, `or`, `not`, equality operators `==` and `!=`, list membership `in [...]`, `%` for partial text match on supported text fields, and parentheses for grouping. Ordered comparisons `>`, `<`, `>=`, `<=` are for ordered fields such as `priority`, dates, and numeric counters/durations. Use quotes for string values, for example `state == 'automated'`. Plan TQL uses documented test variables: `tag`, `label`, `priority`, `issue`, `jira`, `state`, `status`, `custom_status`, `created_at`, `updated_at`, `last_run_at`, `executed_at`, `created_by`, `assigned_to`, `suite`, `test`, `shared`, `milestone`. Documented examples: `priority == 'high'`, `priority >= 'normal'`, `state == 'automated'`, `tag in ['smoke', 'stage1'] and status == 'failed'`, `suite % 'Checkout'`, `test % 'User login'`, `custom_status % 'issue'`, `created_at < 1.month_ago`, `jira in ['JST-1', 'JST-2']`, `milestone == 'Sprint 1'`. Use `tql` when you want the API to resolve matching tests automatically instead of sending explicit `test_ids`. Do not invent undocumented fields or syntax. If a query fails, simplify it to one documented predicate.",
2471
+ "inputSchema": {
2472
+ "type": "object",
2473
+ "properties": {
2474
+ "title": {
2475
+ "type": "string"
2476
+ },
2477
+ "description": {
2478
+ "type": "string"
2479
+ },
2480
+ "kind": {
2481
+ "type": "string",
2482
+ "enum": [
2483
+ "manual",
2484
+ "automated",
2485
+ "mixed"
2486
+ ]
2487
+ },
2488
+ "hidden": {
2489
+ "type": "boolean"
2490
+ },
2491
+ "as_manual": {
2492
+ "type": "boolean"
2493
+ },
2494
+ "test_ids": {
2495
+ "type": "array",
2496
+ "items": {
2497
+ "type": "string"
2498
+ },
2499
+ "description": "List of test IDs (8-char) to include in the plan. If omitted, all tests matching the plan kind are included."
2500
+ },
2501
+ "suite_ids": {
2502
+ "type": "array",
2503
+ "items": {
2504
+ "type": "string"
2505
+ },
2506
+ "description": "List of suite IDs (8-char) to include in the plan. If omitted, all suites are considered."
2507
+ },
2508
+ "tql": {
2509
+ "type": "string",
2510
+ "description": "TQL filter for selecting tests included in the plan. Documented test variables: `tag`, `label`, `priority`, `issue`, `jira`, `state`, `status`, `custom_status`, `created_at`, `updated_at`, `last_run_at`, `executed_at`, `created_by`, `assigned_to`, `suite`, `test`, `shared`, `milestone`. Examples: `priority == 'high'`, `priority >= 'normal'`, `state == 'automated'`, `tag in ['smoke', 'stage1'] and status == 'failed'`, `suite % 'Checkout'`, `test % 'User login'`, `custom_status % 'issue'`, `created_at < 1.month_ago`, `jira in ['JST-1', 'JST-2']`, `milestone == 'Sprint 1'`."
2511
+ },
2512
+ "link": {
2513
+ "type": "array",
2514
+ "items": {
2515
+ "type": "object",
2516
+ "properties": {
2517
+ "action": {
2518
+ "type": "string",
2519
+ "enum": [
2520
+ "add",
2521
+ "remove"
2522
+ ]
2523
+ },
2524
+ "type": {
2525
+ "type": "string",
2526
+ "enum": [
2527
+ "label",
2528
+ "custom_field",
2529
+ "tag",
2530
+ "milestone",
2531
+ "issue",
2532
+ "jira"
2533
+ ]
2534
+ },
2535
+ "value": {
2536
+ "type": "string"
2537
+ }
2538
+ },
2539
+ "required": [
2540
+ "action",
2541
+ "type",
2542
+ "value"
2543
+ ],
2544
+ "additionalProperties": false
2545
+ }
2546
+ }
2547
+ },
2548
+ "required": [
2549
+ "title"
2550
+ ],
2551
+ "additionalProperties": false
2552
+ }
2553
+ },
2554
+ {
2555
+ "name": "plans_update",
2556
+ "description": "Update plan (/api/v2/{project_id}/plans/{id}). TQL (Testomat.io Query Language) is a string expression passed in `tql` to select tests included in a plan. Supported syntax includes logical operators `and`, `or`, `not`, equality operators `==` and `!=`, list membership `in [...]`, `%` for partial text match on supported text fields, and parentheses for grouping. Ordered comparisons `>`, `<`, `>=`, `<=` are for ordered fields such as `priority`, dates, and numeric counters/durations. Use quotes for string values, for example `state == 'automated'`. Plan TQL uses documented test variables: `tag`, `label`, `priority`, `issue`, `jira`, `state`, `status`, `custom_status`, `created_at`, `updated_at`, `last_run_at`, `executed_at`, `created_by`, `assigned_to`, `suite`, `test`, `shared`, `milestone`. Documented examples: `priority == 'high'`, `priority >= 'normal'`, `state == 'automated'`, `tag in ['smoke', 'stage1'] and status == 'failed'`, `suite % 'Checkout'`, `test % 'User login'`, `custom_status % 'issue'`, `created_at < 1.month_ago`, `jira in ['JST-1', 'JST-2']`, `milestone == 'Sprint 1'`. Use `tql` when you want the API to resolve matching tests automatically instead of sending explicit `test_ids`. Do not invent undocumented fields or syntax. If a query fails, simplify it to one documented predicate.",
2557
+ "inputSchema": {
2558
+ "type": "object",
2559
+ "properties": {
2560
+ "plan_id": {
2561
+ "type": "string"
2562
+ },
2563
+ "title": {
2564
+ "type": "string"
2565
+ },
2566
+ "description": {
2567
+ "type": "string"
2568
+ },
2569
+ "kind": {
2570
+ "type": "string",
2571
+ "enum": [
2572
+ "manual",
2573
+ "automated",
2574
+ "mixed"
2575
+ ]
2576
+ },
2577
+ "hidden": {
2578
+ "type": "boolean"
2579
+ },
2580
+ "as_manual": {
2581
+ "type": "boolean"
2582
+ },
2583
+ "test_ids": {
2584
+ "type": "array",
2585
+ "items": {
2586
+ "type": "string"
2587
+ },
2588
+ "description": "List of test IDs (8-char) to include in the plan. If omitted, all tests matching the plan kind are included."
2589
+ },
2590
+ "suite_ids": {
2591
+ "type": "array",
2592
+ "items": {
2593
+ "type": "string"
2594
+ },
2595
+ "description": "List of suite IDs (8-char) to include in the plan. If omitted, all suites are considered."
2596
+ },
2597
+ "tql": {
2598
+ "type": "string",
2599
+ "description": "TQL filter for selecting tests included in the plan. Documented test variables: `tag`, `label`, `priority`, `issue`, `jira`, `state`, `status`, `custom_status`, `created_at`, `updated_at`, `last_run_at`, `executed_at`, `created_by`, `assigned_to`, `suite`, `test`, `shared`, `milestone`. Examples: `priority == 'high'`, `priority >= 'normal'`, `state == 'automated'`, `tag in ['smoke', 'stage1'] and status == 'failed'`, `suite % 'Checkout'`, `test % 'User login'`, `custom_status % 'issue'`, `created_at < 1.month_ago`, `jira in ['JST-1', 'JST-2']`, `milestone == 'Sprint 1'`."
2600
+ },
2601
+ "link": {
2602
+ "type": "array",
2603
+ "items": {
2604
+ "type": "object",
2605
+ "properties": {
2606
+ "action": {
2607
+ "type": "string",
2608
+ "enum": [
2609
+ "add",
2610
+ "remove"
2611
+ ]
2612
+ },
2613
+ "type": {
2614
+ "type": "string",
2615
+ "enum": [
2616
+ "label",
2617
+ "custom_field",
2618
+ "tag",
2619
+ "milestone",
2620
+ "issue",
2621
+ "jira"
2622
+ ]
2623
+ },
2624
+ "value": {
2625
+ "type": "string"
2626
+ }
2627
+ },
2628
+ "required": [
2629
+ "action",
2630
+ "type",
2631
+ "value"
2632
+ ],
2633
+ "additionalProperties": false
2634
+ }
2635
+ }
2636
+ },
2637
+ "required": [
2638
+ "plan_id"
2639
+ ],
2640
+ "additionalProperties": false
2641
+ }
2642
+ },
2643
+ {
2644
+ "name": "plans_delete",
2645
+ "description": "Delete plan",
2646
+ "inputSchema": {
2647
+ "type": "object",
2648
+ "properties": {
2649
+ "plan_id": {
2650
+ "type": "string"
2651
+ }
2652
+ },
2653
+ "required": [
2654
+ "plan_id"
2655
+ ],
2656
+ "additionalProperties": false
2657
+ }
2658
+ },
2659
+ {
2660
+ "name": "plans_search",
2661
+ "description": "Search plans (delegates to plans list; docs has no dedicated search parameter)",
2662
+ "inputSchema": {
2663
+ "type": "object",
2664
+ "properties": {
2665
+ "search_text": {
2666
+ "type": "string"
2667
+ },
2668
+ "page": {
2669
+ "type": "integer",
2670
+ "minimum": 1
2671
+ },
2672
+ "per_page": {
2673
+ "type": "integer",
2674
+ "minimum": 1,
2675
+ "maximum": 100
2676
+ },
2677
+ "kind": {
2678
+ "type": "string",
2679
+ "enum": [
2680
+ "manual",
2681
+ "automated",
2682
+ "mixed"
2683
+ ]
2684
+ },
2685
+ "hidden": {
2686
+ "type": "boolean"
2687
+ },
2688
+ "labels": {
2689
+ "type": "array",
2690
+ "items": {
2691
+ "type": "string"
2692
+ }
2693
+ }
2694
+ },
2695
+ "additionalProperties": false
2696
+ }
2697
+ },
2698
+ {
2699
+ "name": "plans_issues_list",
2700
+ "description": "List linked issues for a plan (/api/v2/{project_id}/issues?plan_id=...)",
2701
+ "inputSchema": {
2702
+ "type": "object",
2703
+ "properties": {
2704
+ "plan_id": {
2705
+ "type": "string"
2706
+ },
2707
+ "page": {
2708
+ "type": "integer",
2709
+ "minimum": 1
2710
+ },
2711
+ "per_page": {
2712
+ "type": "integer",
2713
+ "minimum": 1,
2714
+ "maximum": 100
2715
+ },
2716
+ "source": {
2717
+ "type": "string"
2718
+ }
2719
+ },
2720
+ "required": [
2721
+ "plan_id"
2722
+ ],
2723
+ "additionalProperties": false
2724
+ }
2725
+ },
2726
+ {
2727
+ "name": "plans_issues_link",
2728
+ "description": "Link issue to a plan (/api/v2/{project_id}/issues)",
2729
+ "inputSchema": {
2730
+ "type": "object",
2731
+ "properties": {
2732
+ "plan_id": {
2733
+ "type": "string"
2734
+ },
2735
+ "url": {
2736
+ "type": "string"
2737
+ },
2738
+ "jira_id": {
2739
+ "type": "string"
2740
+ }
2741
+ },
2742
+ "required": [
2743
+ "plan_id"
2744
+ ],
2745
+ "additionalProperties": false
2746
+ }
2747
+ },
2748
+ {
2749
+ "name": "plans_issues_unlink",
2750
+ "description": "Unlink issue from a plan (/api/v2/{project_id}/issues/{id})",
2751
+ "inputSchema": {
2752
+ "type": "object",
2753
+ "properties": {
2754
+ "issue_id": {
2755
+ "type": "integer"
2756
+ },
2757
+ "type": {
2758
+ "type": "string",
2759
+ "enum": [
2760
+ "issue",
2761
+ "jira_issue"
2762
+ ]
2763
+ }
2764
+ },
2765
+ "required": [
2766
+ "issue_id",
2767
+ "type"
2768
+ ],
2769
+ "additionalProperties": false
2770
+ }
2771
+ },
2772
+ {
2773
+ "name": "requirements_list",
2774
+ "description": "List requirements (/api/v2/{project_id}/requirements)",
2775
+ "inputSchema": {
2776
+ "type": "object",
2777
+ "properties": {
2778
+ "page": {
2779
+ "type": "integer",
2780
+ "minimum": 1
2781
+ },
2782
+ "per_page": {
2783
+ "type": "integer",
2784
+ "minimum": 1,
2785
+ "maximum": 100
2786
+ },
2787
+ "source": {
2788
+ "type": "string",
2789
+ "enum": [
2790
+ "jira",
2791
+ "confluence",
2792
+ "file",
2793
+ "text"
2794
+ ]
2795
+ },
2796
+ "scope": {
2797
+ "type": "string",
2798
+ "enum": [
2799
+ "global",
2800
+ "attached",
2801
+ "detached",
2802
+ "without_suites"
2803
+ ]
2804
+ }
2805
+ },
2806
+ "additionalProperties": false
2807
+ }
2808
+ },
2809
+ {
2810
+ "name": "requirements_get",
2811
+ "description": "Get requirement by ID",
2812
+ "inputSchema": {
2813
+ "type": "object",
2814
+ "properties": {
2815
+ "requirement_id": {
2816
+ "type": "string"
2817
+ }
2818
+ },
2819
+ "required": [
2820
+ "requirement_id"
2821
+ ],
2822
+ "additionalProperties": false
2823
+ }
2824
+ },
2825
+ {
2826
+ "name": "requirements_create",
2827
+ "description": "Create requirement (/api/v2/{project_id}/requirements)",
2828
+ "inputSchema": {
2829
+ "type": "object",
2830
+ "properties": {
2831
+ "title": {
2832
+ "type": "string"
2833
+ },
2834
+ "source_type": {
2835
+ "type": "string",
2836
+ "enum": [
2837
+ "jira",
2838
+ "confluence",
2839
+ "file",
2840
+ "text"
2841
+ ]
2842
+ },
2843
+ "description": {
2844
+ "type": "string",
2845
+ "description": "Required for text requirements. Must be at least 500 characters."
2846
+ },
2847
+ "details": {
2848
+ "type": "string"
2849
+ },
2850
+ "active": {
2851
+ "type": "boolean"
2852
+ },
2853
+ "global": {
2854
+ "type": "boolean"
2855
+ },
2856
+ "confluence_url": {
2857
+ "type": "string",
2858
+ "description": "Required for confluence requirements."
2859
+ },
2860
+ "files": {
2861
+ "type": "array",
2862
+ "items": {
2863
+ "type": "string"
2864
+ },
2865
+ "description": "Local file paths to upload for file requirements."
2866
+ }
2867
+ },
2868
+ "required": [
2869
+ "title",
2870
+ "source_type"
2871
+ ],
2872
+ "additionalProperties": false
2873
+ }
2874
+ },
2875
+ {
2876
+ "name": "requirements_update",
2877
+ "description": "Update requirement (/api/v2/{project_id}/requirements/{id})",
2878
+ "inputSchema": {
2879
+ "type": "object",
2880
+ "properties": {
2881
+ "requirement_id": {
2882
+ "type": "string"
2883
+ },
2884
+ "title": {
2885
+ "type": "string"
2886
+ },
2887
+ "description": {
2888
+ "type": "string",
2889
+ "description": "Only applied for text requirements."
2890
+ },
2891
+ "details": {
2892
+ "type": "string"
2893
+ },
2894
+ "active": {
2895
+ "type": "boolean"
2896
+ },
2897
+ "global": {
2898
+ "type": "boolean"
2899
+ },
2900
+ "files": {
2901
+ "type": "array",
2902
+ "items": {
2903
+ "type": "string"
2904
+ },
2905
+ "description": "Local file paths to upload for file requirements."
2906
+ }
2907
+ },
2908
+ "required": [
2909
+ "requirement_id"
2910
+ ],
2911
+ "additionalProperties": false
2912
+ }
2913
+ },
2914
+ {
2915
+ "name": "requirements_delete",
2916
+ "description": "Delete requirement (/api/v2/{project_id}/requirements/{id})",
2917
+ "inputSchema": {
2918
+ "type": "object",
2919
+ "properties": {
2920
+ "requirement_id": {
2921
+ "type": "string"
2922
+ }
2923
+ },
2924
+ "required": [
2925
+ "requirement_id"
2926
+ ],
2927
+ "additionalProperties": false
2928
+ }
2929
+ },
2930
+ {
2931
+ "name": "requirements_search",
2932
+ "description": "Search requirements (delegates to requirements list with filters)",
2933
+ "inputSchema": {
2934
+ "type": "object",
2935
+ "properties": {
2936
+ "page": {
2937
+ "type": "integer",
2938
+ "minimum": 1
2939
+ },
2940
+ "per_page": {
2941
+ "type": "integer",
2942
+ "minimum": 1,
2943
+ "maximum": 100
2944
+ },
2945
+ "source": {
2946
+ "type": "string",
2947
+ "enum": [
2948
+ "jira",
2949
+ "confluence",
2950
+ "file",
2951
+ "text"
2952
+ ]
2953
+ },
2954
+ "scope": {
2955
+ "type": "string",
2956
+ "enum": [
2957
+ "global",
2958
+ "attached",
2959
+ "detached",
2960
+ "without_suites"
2961
+ ]
2962
+ }
2963
+ },
2964
+ "additionalProperties": false
2965
+ }
2966
+ }
2967
+ ]