@probelabs/visor 0.1.124 → 0.1.126

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 (195) hide show
  1. package/dist/config.d.ts.map +1 -1
  2. package/dist/docs/DEPLOYMENT.md +117 -11
  3. package/dist/docs/GITHUB_CHECKS.md +18 -4
  4. package/dist/docs/NPM_USAGE.md +112 -39
  5. package/dist/docs/action-reference.md +63 -9
  6. package/dist/docs/advanced-ai.md +58 -51
  7. package/dist/docs/ai-configuration.md +99 -11
  8. package/dist/docs/ai-custom-tools-usage.md +70 -33
  9. package/dist/docs/ai-custom-tools.md +50 -27
  10. package/dist/docs/architecture.md +1232 -0
  11. package/dist/docs/bot-transports-rfc.md +13 -3
  12. package/dist/docs/ci-cli-mode.md +116 -8
  13. package/dist/docs/claude-code.md +111 -41
  14. package/dist/docs/command-provider.md +37 -15
  15. package/dist/docs/commands.md +252 -6
  16. package/dist/docs/configuration.md +138 -4
  17. package/dist/docs/contributing.md +737 -0
  18. package/dist/docs/custom-tools.md +39 -8
  19. package/dist/docs/dashboards/README.md +33 -19
  20. package/dist/docs/debug-visualizer-progress.md +14 -13
  21. package/dist/docs/debug-visualizer-rfc.md +14 -13
  22. package/dist/docs/debug-visualizer.md +30 -5
  23. package/dist/docs/debugging.md +73 -8
  24. package/dist/docs/default-output-schema.md +24 -20
  25. package/dist/docs/dependencies.md +75 -21
  26. package/dist/docs/dev-playbook.md +85 -9
  27. package/dist/docs/engine-pause-resume-rfc.md +11 -11
  28. package/dist/docs/engine-state-machine-plan.md +10 -3
  29. package/dist/docs/event-driven-github-integration-rfc.md +20 -11
  30. package/dist/docs/event-triggers.md +95 -6
  31. package/dist/docs/execution-statistics-rfc.md +16 -4
  32. package/dist/docs/fact-validator-gap-analysis.md +12 -1
  33. package/dist/docs/fact-validator-implementation-plan.md +19 -11
  34. package/dist/docs/fail-if.md +116 -11
  35. package/dist/docs/failure-conditions-implementation.md +40 -6
  36. package/dist/docs/failure-conditions-schema.md +243 -87
  37. package/dist/docs/failure-routing-rfc.md +43 -18
  38. package/dist/docs/failure-routing.md +80 -23
  39. package/dist/docs/faq.md +836 -0
  40. package/dist/docs/foreach-dependency-propagation.md +32 -15
  41. package/dist/docs/github-ops.md +6 -5
  42. package/dist/docs/glossary.md +322 -0
  43. package/dist/docs/goto-forward-run-plan.md +23 -10
  44. package/dist/docs/guides/criticality-modes.md +15 -13
  45. package/dist/docs/guides/fault-management-and-contracts.md +8 -5
  46. package/dist/docs/guides/workflow-style-guide.md +17 -8
  47. package/dist/docs/http.md +102 -3
  48. package/dist/docs/human-input-provider.md +20 -36
  49. package/dist/docs/index.md +206 -0
  50. package/dist/docs/lifecycle-hooks.md +322 -2
  51. package/dist/docs/limits.md +20 -5
  52. package/dist/docs/liquid-templates.md +86 -14
  53. package/dist/docs/loop-routing-refactor.md +4 -2
  54. package/dist/docs/mcp-provider.md +53 -19
  55. package/dist/docs/mcp.md +27 -1
  56. package/dist/docs/memory.md +7 -2
  57. package/dist/docs/migration.md +596 -0
  58. package/dist/docs/observability.md +227 -6
  59. package/dist/docs/output-formats.md +388 -9
  60. package/dist/docs/output-history.md +36 -6
  61. package/dist/docs/performance.md +510 -4
  62. package/dist/docs/pluggable.md +95 -4
  63. package/dist/docs/proposals/snapshot-scope-execution.md +6 -5
  64. package/dist/docs/providers/git-checkout.md +16 -14
  65. package/dist/docs/providers/noop.md +696 -0
  66. package/dist/docs/recipes.md +8 -9
  67. package/dist/docs/rfc/git-checkout-step.md +3 -1
  68. package/dist/docs/rfc/on_init-hook.md +18 -5
  69. package/dist/docs/rfc/workspace-isolation.md +16 -0
  70. package/dist/docs/roadmap/criticality-implementation-tasks.md +27 -27
  71. package/dist/docs/router-patterns.md +155 -43
  72. package/dist/docs/schema-templates.md +51 -15
  73. package/dist/docs/script.md +162 -13
  74. package/dist/docs/sdk.md +46 -12
  75. package/dist/docs/security.md +464 -5
  76. package/dist/docs/slack-integration.md +481 -0
  77. package/dist/docs/tag-filtering.md +60 -20
  78. package/dist/docs/telemetry-setup.md +157 -46
  79. package/dist/docs/test-framework-rfc.md +37 -36
  80. package/dist/docs/testing/assertions.md +92 -4
  81. package/dist/docs/testing/ci.md +56 -7
  82. package/dist/docs/testing/cli.md +57 -15
  83. package/dist/docs/testing/cookbook.md +53 -20
  84. package/dist/docs/testing/dsl-reference.md +110 -9
  85. package/dist/docs/testing/fixtures-and-mocks.md +28 -3
  86. package/dist/docs/testing/flows.md +59 -4
  87. package/dist/docs/testing/getting-started.md +14 -13
  88. package/dist/docs/testing/troubleshooting.md +39 -2
  89. package/dist/docs/timeouts.md +174 -18
  90. package/dist/docs/troubleshooting.md +176 -6
  91. package/dist/docs/workflow-creation-guide.md +101 -3
  92. package/dist/docs/workflows.md +138 -41
  93. package/dist/examples/README.md +169 -4
  94. package/dist/examples/ai-custom-tools-simple.yaml +2 -3
  95. package/dist/examples/cron-webhook-config.yaml +15 -0
  96. package/dist/examples/forEach-example.yaml +6 -0
  97. package/dist/examples/git-checkout-basic.yaml +4 -0
  98. package/dist/examples/git-checkout-compare.yaml +6 -0
  99. package/dist/examples/git-checkout-cross-repo.yaml +7 -0
  100. package/dist/examples/http-integration-config.yaml +30 -0
  101. package/dist/examples/https-server-config.yaml +15 -0
  102. package/dist/examples/mcp-provider-example.yaml +10 -10
  103. package/dist/examples/transform-example.yaml +3 -0
  104. package/dist/examples/webhook-pipeline-config.yaml +18 -0
  105. package/dist/examples/workflows/workflow-composition-example.yaml +4 -0
  106. package/dist/frontends/slack-frontend.d.ts +2 -0
  107. package/dist/frontends/slack-frontend.d.ts.map +1 -1
  108. package/dist/generated/config-schema.d.ts +11 -7
  109. package/dist/generated/config-schema.d.ts.map +1 -1
  110. package/dist/generated/config-schema.json +11 -7
  111. package/dist/index.js +3127 -974
  112. package/dist/output/traces/{run-2026-01-28T16-15-24-569Z.ndjson → run-2026-01-31T16-37-22-321Z.ndjson} +84 -84
  113. package/dist/output/traces/{run-2026-01-28T16-16-09-757Z.ndjson → run-2026-01-31T16-38-06-031Z.ndjson} +1013 -1013
  114. package/dist/providers/ai-check-provider.d.ts +9 -2
  115. package/dist/providers/ai-check-provider.d.ts.map +1 -1
  116. package/dist/providers/command-check-provider.d.ts.map +1 -1
  117. package/dist/providers/mcp-custom-sse-server.d.ts +17 -1
  118. package/dist/providers/mcp-custom-sse-server.d.ts.map +1 -1
  119. package/dist/providers/workflow-check-provider.d.ts.map +1 -1
  120. package/dist/providers/workflow-tool-executor.d.ts +68 -0
  121. package/dist/providers/workflow-tool-executor.d.ts.map +1 -0
  122. package/dist/sdk/{check-provider-registry-AQ3JETBG.mjs → check-provider-registry-3KI5RKXT.mjs} +6 -5
  123. package/dist/sdk/check-provider-registry-IYILYY35.mjs +28 -0
  124. package/dist/sdk/chunk-2CPMMNIX.mjs +1459 -0
  125. package/dist/sdk/chunk-2CPMMNIX.mjs.map +1 -0
  126. package/dist/sdk/chunk-5LI6T4O3.mjs +3600 -0
  127. package/dist/sdk/chunk-5LI6T4O3.mjs.map +1 -0
  128. package/dist/sdk/{chunk-YLQ4UN62.mjs → chunk-A4PGHURG.mjs} +6838 -6257
  129. package/dist/sdk/chunk-A4PGHURG.mjs.map +1 -0
  130. package/dist/sdk/chunk-EXFGO4FX.mjs +147 -0
  131. package/dist/sdk/chunk-EXFGO4FX.mjs.map +1 -0
  132. package/dist/sdk/chunk-PJ7K5UFC.mjs +17732 -0
  133. package/dist/sdk/chunk-PJ7K5UFC.mjs.map +1 -0
  134. package/dist/sdk/{chunk-BHZ4CKUS.mjs → chunk-PXFIALUH.mjs} +77 -8
  135. package/dist/sdk/chunk-PXFIALUH.mjs.map +1 -0
  136. package/dist/sdk/{chunk-PVITVJ6J.mjs → chunk-RTKJXNZS.mjs} +32 -9
  137. package/dist/sdk/chunk-RTKJXNZS.mjs.map +1 -0
  138. package/dist/sdk/chunk-VW2GBXQT.mjs +606 -0
  139. package/dist/sdk/chunk-VW2GBXQT.mjs.map +1 -0
  140. package/dist/sdk/{config-RQQPMLRD.mjs → config-5AUYQFHE.mjs} +2 -2
  141. package/dist/sdk/config-6CUVEH7H.mjs +16 -0
  142. package/dist/sdk/config-6CUVEH7H.mjs.map +1 -0
  143. package/dist/sdk/{github-frontend-6Q4BISZX.mjs → github-frontend-BZ4N3BFZ.mjs} +7 -3
  144. package/dist/sdk/github-frontend-BZ4N3BFZ.mjs.map +1 -0
  145. package/dist/sdk/host-4MT3EW2I.mjs +52 -0
  146. package/dist/sdk/{host-P5NQICP7.mjs → host-NYWXLIFC.mjs} +2 -2
  147. package/dist/sdk/host-NYWXLIFC.mjs.map +1 -0
  148. package/dist/sdk/{routing-DEY2AIXM.mjs → routing-6R42GXUO.mjs} +2 -2
  149. package/dist/sdk/routing-6R42GXUO.mjs.map +1 -0
  150. package/dist/sdk/routing-7FXPULTO.mjs +24 -0
  151. package/dist/sdk/routing-7FXPULTO.mjs.map +1 -0
  152. package/dist/sdk/sdk.d.mts +3 -1
  153. package/dist/sdk/sdk.d.ts +3 -1
  154. package/dist/sdk/sdk.js +12163 -11204
  155. package/dist/sdk/sdk.js.map +1 -1
  156. package/dist/sdk/sdk.mjs +14 -10
  157. package/dist/sdk/sdk.mjs.map +1 -1
  158. package/dist/sdk/slack-frontend-JUT3TYVC.mjs +821 -0
  159. package/dist/sdk/slack-frontend-JUT3TYVC.mjs.map +1 -0
  160. package/dist/sdk/workflow-check-provider-H3CUOLUD.mjs +28 -0
  161. package/dist/sdk/workflow-check-provider-H3CUOLUD.mjs.map +1 -0
  162. package/dist/sdk/workflow-check-provider-YUNNF4KC.mjs +28 -0
  163. package/dist/sdk/workflow-check-provider-YUNNF4KC.mjs.map +1 -0
  164. package/dist/sdk/workflow-registry-KFWSDSLM.mjs +12 -0
  165. package/dist/sdk/workflow-registry-KFWSDSLM.mjs.map +1 -0
  166. package/dist/slack/socket-runner.d.ts +2 -0
  167. package/dist/slack/socket-runner.d.ts.map +1 -1
  168. package/dist/state-machine/context/workflow-inputs.d.ts +20 -0
  169. package/dist/state-machine/context/workflow-inputs.d.ts.map +1 -0
  170. package/dist/state-machine/dispatch/execution-invoker.d.ts.map +1 -1
  171. package/dist/state-machine/dispatch/foreach-processor.d.ts.map +1 -1
  172. package/dist/state-machine/dispatch/stats-manager.d.ts.map +1 -1
  173. package/dist/state-machine/states/level-dispatch.d.ts.map +1 -1
  174. package/dist/state-machine/states/routing.d.ts +2 -1
  175. package/dist/state-machine/states/routing.d.ts.map +1 -1
  176. package/dist/traces/{run-2026-01-28T16-15-24-569Z.ndjson → run-2026-01-31T16-37-22-321Z.ndjson} +84 -84
  177. package/dist/traces/{run-2026-01-28T16-16-09-757Z.ndjson → run-2026-01-31T16-38-06-031Z.ndjson} +1013 -1013
  178. package/dist/types/config.d.ts +3 -1
  179. package/dist/types/config.d.ts.map +1 -1
  180. package/dist/utils/human-id.d.ts +12 -0
  181. package/dist/utils/human-id.d.ts.map +1 -0
  182. package/dist/utils/worktree-manager.d.ts +3 -0
  183. package/dist/utils/worktree-manager.d.ts.map +1 -1
  184. package/dist/workflow-executor.d.ts.map +1 -1
  185. package/dist/workflow-registry.d.ts +1 -0
  186. package/dist/workflow-registry.d.ts.map +1 -1
  187. package/package.json +2 -2
  188. package/dist/sdk/chunk-BHZ4CKUS.mjs.map +0 -1
  189. package/dist/sdk/chunk-PVITVJ6J.mjs.map +0 -1
  190. package/dist/sdk/chunk-YLQ4UN62.mjs.map +0 -1
  191. package/dist/sdk/github-frontend-6Q4BISZX.mjs.map +0 -1
  192. /package/dist/sdk/{check-provider-registry-AQ3JETBG.mjs.map → check-provider-registry-3KI5RKXT.mjs.map} +0 -0
  193. /package/dist/sdk/{config-RQQPMLRD.mjs.map → check-provider-registry-IYILYY35.mjs.map} +0 -0
  194. /package/dist/sdk/{routing-DEY2AIXM.mjs.map → config-5AUYQFHE.mjs.map} +0 -0
  195. /package/dist/sdk/{host-P5NQICP7.mjs.map → host-4MT3EW2I.mjs.map} +0 -0
@@ -13,7 +13,7 @@ Unlike the AI provider's MCP support (which enhances AI models with additional t
13
13
 
14
14
  ## Transport Types
15
15
 
16
- The MCP provider supports three transport mechanisms:
16
+ The MCP provider supports four transport mechanisms:
17
17
 
18
18
  ### 1. stdio (default)
19
19
 
@@ -25,7 +25,7 @@ steps:
25
25
  type: mcp
26
26
  transport: stdio
27
27
  command: npx
28
- args: ["-y", "@probelabs/probe@latest", "mcp"]
28
+ command_args: ["-y", "@probelabs/probe@latest", "mcp"]
29
29
  method: search_code
30
30
  methodArgs:
31
31
  query: "TODO"
@@ -33,7 +33,7 @@ steps:
33
33
 
34
34
  **Configuration:**
35
35
  - `command` (required): Command to execute
36
- - `args` (optional): Array of command arguments
36
+ - `command_args` (optional): Array of command arguments
37
37
  - `env` (optional): Environment variables
38
38
  - `workingDirectory` (optional): Working directory for the command
39
39
 
@@ -85,6 +85,37 @@ steps:
85
85
 
86
86
  **Note:** HTTP transport supports stateful sessions. The server may generate a session ID if not provided.
87
87
 
88
+ ### 4. Custom (YAML-defined tools)
89
+
90
+ Use custom tools defined in your YAML configuration. See [Custom Tools](./custom-tools.md) for full documentation.
91
+
92
+ ```yaml
93
+ tools:
94
+ my-grep-tool:
95
+ name: my-grep-tool
96
+ description: Search for patterns in code
97
+ inputSchema:
98
+ type: object
99
+ properties:
100
+ pattern:
101
+ type: string
102
+ required: [pattern]
103
+ exec: 'grep -rn "{{ args.pattern }}" src/'
104
+
105
+ steps:
106
+ search-patterns:
107
+ type: mcp
108
+ transport: custom
109
+ method: my-grep-tool
110
+ methodArgs:
111
+ pattern: "TODO"
112
+ ```
113
+
114
+ **Configuration:**
115
+ - `transport: custom`
116
+ - `method`: Name of the tool defined in `tools:` section
117
+ - `methodArgs`: Arguments to pass to the tool
118
+
88
119
  ## Method Arguments
89
120
 
90
121
  ### Static Arguments
@@ -96,7 +127,7 @@ steps:
96
127
  search-todos:
97
128
  type: mcp
98
129
  command: npx
99
- args: ["-y", "@probelabs/probe@latest", "mcp"]
130
+ command_args: ["-y", "@probelabs/probe@latest", "mcp"]
100
131
  method: search_code
101
132
  methodArgs:
102
133
  query: "TODO"
@@ -112,7 +143,7 @@ steps:
112
143
  dynamic-search:
113
144
  type: mcp
114
145
  command: npx
115
- args: ["-y", "@probelabs/probe@latest", "mcp"]
146
+ command_args: ["-y", "@probelabs/probe@latest", "mcp"]
116
147
  method: search_code
117
148
  argsTransform: |
118
149
  {
@@ -139,7 +170,7 @@ steps:
139
170
  format-results:
140
171
  type: mcp
141
172
  command: npx
142
- args: ["-y", "@probelabs/probe@latest", "mcp"]
173
+ command_args: ["-y", "@probelabs/probe@latest", "mcp"]
143
174
  method: search_code
144
175
  methodArgs:
145
176
  query: "FIXME"
@@ -163,7 +194,7 @@ steps:
163
194
  js-transform:
164
195
  type: mcp
165
196
  command: npx
166
- args: ["-y", "@probelabs/probe@latest", "mcp"]
197
+ command_args: ["-y", "@probelabs/probe@latest", "mcp"]
167
198
  method: search_code
168
199
  methodArgs:
169
200
  query: "TODO"
@@ -249,7 +280,7 @@ steps:
249
280
  type: mcp
250
281
  depends_on: [fetch-data]
251
282
  command: npx
252
- args: ["-y", "@probelabs/probe@latest", "mcp"]
283
+ command_args: ["-y", "@probelabs/probe@latest", "mcp"]
253
284
  method: analyze
254
285
  argsTransform: |
255
286
  {
@@ -273,7 +304,7 @@ Outputs are available as:
273
304
  **stdio transport:**
274
305
  - `transport: stdio` (optional, default)
275
306
  - `command` - Command to execute
276
- - `args` - Command arguments (optional)
307
+ - `command_args` - Command arguments (optional)
277
308
  - `env` - Environment variables (optional)
278
309
  - `workingDirectory` - Working directory (optional)
279
310
 
@@ -295,7 +326,9 @@ Outputs are available as:
295
326
  - `transform` - Liquid template for output transformation (optional)
296
327
  - `transform_js` - JavaScript expression for output transformation (optional)
297
328
 
298
- ### General
329
+ ### General (Check-Level Options)
330
+
331
+ These options are available to all check types, not just MCP:
299
332
 
300
333
  - `timeout` - Timeout in seconds (default: 60)
301
334
  - `depends_on` - Array of check names this depends on
@@ -303,6 +336,7 @@ Outputs are available as:
303
336
  - `on` - Event filter (pr_opened, pr_updated, etc.)
304
337
  - `tags` - Array of tags for filtering
305
338
  - `group` - Comment group name
339
+ - `forEach` - Run check for each item in a collection (see examples)
306
340
 
307
341
  ## Real-World Examples
308
342
 
@@ -317,7 +351,7 @@ steps:
317
351
  semgrep-scan:
318
352
  type: mcp
319
353
  command: npx
320
- args: ["-y", "@semgrep/mcp"]
354
+ command_args: ["-y", "@semgrep/mcp"]
321
355
  method: scan
322
356
  methodArgs:
323
357
  paths: "{{ files | map: 'filename' | json }}"
@@ -333,7 +367,7 @@ steps:
333
367
  check-duplicates:
334
368
  type: mcp
335
369
  command: npx
336
- args: ["-y", "@modelcontextprotocol/server-github"]
370
+ command_args: ["-y", "@modelcontextprotocol/server-github"]
337
371
  method: search_issues
338
372
  methodArgs:
339
373
  query: "{{ pr.title }}"
@@ -359,7 +393,7 @@ steps:
359
393
  validate-schema:
360
394
  type: mcp
361
395
  command: npx
362
- args: ["-y", "@modelcontextprotocol/server-postgres"]
396
+ command_args: ["-y", "@modelcontextprotocol/server-postgres"]
363
397
  if: "files.some(f => f.filename.includes('migrations/'))"
364
398
  method: query
365
399
  methodArgs:
@@ -387,7 +421,7 @@ steps:
387
421
  jira-check:
388
422
  type: mcp
389
423
  command: npx
390
- args: ["-y", "@atlassian/mcp-server-jira"]
424
+ command_args: ["-y", "@atlassian/mcp-server-jira"]
391
425
  method: get_issue
392
426
  argsTransform: |
393
427
  {
@@ -416,13 +450,13 @@ steps:
416
450
  type: mcp
417
451
  depends_on: [semgrep-scan]
418
452
  command: npx
419
- args: ["-y", "@modelcontextprotocol/server-slack"]
453
+ command_args: ["-y", "@modelcontextprotocol/server-slack"]
420
454
  if: "outputs['semgrep-scan']?.issues?.filter(i => i.severity === 'error').length > 0"
421
455
  method: post_message
422
456
  argsTransform: |
423
457
  {
424
458
  "channel": "#security-alerts",
425
- "text": "🚨 PR #{{ pr.number }} has critical security issues"
459
+ "text": "Security Alert: PR #{{ pr.number }} has critical security issues"
426
460
  }
427
461
  ```
428
462
 
@@ -435,7 +469,7 @@ steps:
435
469
  check-licenses:
436
470
  type: mcp
437
471
  command: npx
438
- args: ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"]
472
+ command_args: ["-y", "@modelcontextprotocol/server-filesystem", "/workspace"]
439
473
  method: read_file
440
474
  forEach:
441
475
  items: "{{ files | map: 'filename' | json }}"
@@ -468,7 +502,7 @@ steps:
468
502
  validate-links:
469
503
  type: mcp
470
504
  command: npx
471
- args: ["-y", "@modelcontextprotocol/server-puppeteer"]
505
+ command_args: ["-y", "@modelcontextprotocol/server-puppeteer"]
472
506
  if: "files.some(f => f.filename.endsWith('.md'))"
473
507
  method: navigate
474
508
  methodArgs:
@@ -496,7 +530,7 @@ steps:
496
530
  check-cves:
497
531
  type: mcp
498
532
  command: npx
499
- args: ["-y", "@modelcontextprotocol/server-brave-search"]
533
+ command_args: ["-y", "@modelcontextprotocol/server-brave-search"]
500
534
  if: "files.some(f => f.filename.match(/package\\.json|requirements\\.txt/))"
501
535
  method: search
502
536
  argsTransform: |
package/dist/docs/mcp.md CHANGED
@@ -78,6 +78,7 @@ steps:
78
78
  github:
79
79
  command: "npx"
80
80
  args: ["-y", "@modelcontextprotocol/server-github"]
81
+ ```
81
82
 
82
83
  #### Claude Code Provider (check-level)
83
84
 
@@ -106,6 +107,27 @@ steps:
106
107
  - For Claude Code checks (`type: claude-code`), Visor passes `claude_code.mcpServers` configuration directly to the Claude Code SDK via the query object. The SDK manages all server operations internally.
107
108
 
108
109
  Tip: run with `--debug` to see how many MCP servers were configured for a check.
110
+
111
+ #### MCP Server Configuration Options
112
+
113
+ Each MCP server entry supports:
114
+
115
+ | Option | Type | Required | Description |
116
+ |--------|------|----------|-------------|
117
+ | `command` | string | Yes | Command to execute (e.g., `npx`, `node`, `python`) |
118
+ | `args` | string[] | No | Arguments to pass to the command |
119
+ | `env` | object | No | Environment variables for the MCP server |
120
+
121
+ Example with all options:
122
+
123
+ ```yaml
124
+ ai_mcp_servers:
125
+ my_server:
126
+ command: "node"
127
+ args: ["./mcp-servers/custom-server.js", "--port", "3000"]
128
+ env:
129
+ API_KEY: "${MY_API_KEY}"
130
+ DEBUG: "true"
109
131
  ```
110
132
 
111
133
  #### Available MCP Servers
@@ -121,4 +143,8 @@ Tip: run with `--debug` to see how many MCP servers were configured for a check.
121
143
  - [Basic MCP with Probe](../examples/ai-with-mcp.yaml) - Code analysis with multiple MCP servers
122
144
  - [Jira Workflow Automation](../examples/jira-workflow-mcp.yaml) - Complete Jira integration examples
123
145
  - [Simple Jira Analysis](../examples/jira-simple-example.yaml) - Basic JQL → analyze → label workflow
124
- - [Setup Guide](../examples/JIRA_MCP_SETUP.md) - Detailed Jira MCP configuration instructions
146
+
147
+ #### Related Documentation
148
+
149
+ - [MCP Provider](./mcp-provider.md) - Standalone MCP tool execution (direct tool calls without AI)
150
+ - [Custom Tools](./custom-tools.md) - Define custom tools for use with MCP
@@ -254,15 +254,20 @@ steps:
254
254
  - `memory.list(namespace?)` - List keys
255
255
  - `memory.has(key, namespace?)` - Check if key exists
256
256
  - `memory.getAll(namespace?)` - Get all key-value pairs
257
- - `memory.listNamespaces()` - List all namespaces
258
257
 
259
258
  **Context available in script content:**
260
- - `memory` - Memory operations object
259
+ - `memory` - Memory operations object (see available operations above)
261
260
  - `pr` - PR information (number, title, author, etc.)
262
261
  - `outputs` - Previous check outputs (current values)
263
262
  - `outputs.history` - All previous outputs from each check (arrays). See [Output History](./output-history.md)
263
+ - `outputs_history` - Alias for `outputs.history` (top-level access)
264
+ - `inputs` - Workflow inputs (when running inside a workflow)
265
+ - `args` - Arguments passed via `with:` directive in `on_init`
264
266
  - `env` - Environment variables
265
267
  - `log(...args)` - Debug logging function
268
+ - `escapeXml(str)` - Escape string for XML output
269
+ - `btoa(str)` - Base64 encode a string
270
+ - `atob(str)` - Base64 decode a string
266
271
 
267
272
  ## Namespaces
268
273