@bdayadev/flutter-ultra-mcp 1.16.1 → 1.16.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -10,7 +10,7 @@
10
10
  {
11
11
  "name": "flutter",
12
12
  "description": "Durable cross-platform Flutter automation via 8 specialized MCP servers, in-app mixin binding, and an optional DevTools panel. Replaces marionette_mcp and the official dart mcp-server for Claude Code.",
13
- "version": "1.16.1",
13
+ "version": "1.16.3",
14
14
  "author": {
15
15
  "name": "Bdaya-Dev",
16
16
  "url": "https://github.com/Bdaya-Dev"
@@ -23,5 +23,5 @@
23
23
  "tags": ["flutter", "dart", "mcp", "testing", "automation", "patrol", "cross-platform"]
24
24
  }
25
25
  ],
26
- "version": "1.16.1"
26
+ "version": "1.16.3"
27
27
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/claude-code-plugin-manifest.json",
3
3
  "name": "flutter",
4
- "version": "1.16.1",
4
+ "version": "1.16.3",
5
5
  "description": "Durable cross-platform Flutter automation via 8 specialized MCP servers, in-app mixin binding, and an optional DevTools panel. Replaces marionette_mcp and the official dart mcp-server for Claude Code.",
6
6
  "author": {
7
7
  "name": "Bdaya-Dev",
package/.mcp.json CHANGED
@@ -36,7 +36,8 @@
36
36
  "args": ["${CLAUDE_PLUGIN_ROOT}/packages/flutter-ultra-native-mobile/dist/bin.cjs"],
37
37
  "env": {
38
38
  "FLUTTER_ULTRA_GO_IOS_BIN": "${CLAUDE_PLUGIN_ROOT}/sidecars/go-ios",
39
- "FLUTTER_ULTRA_STATE_DIR": "${CLAUDE_PLUGIN_DATA}/state"
39
+ "FLUTTER_ULTRA_STATE_DIR": "${CLAUDE_PLUGIN_DATA}/state",
40
+ "NODE_PATH": "${CLAUDE_PLUGIN_DATA}/node_modules"
40
41
  }
41
42
  },
42
43
  "flutter-ultra-native-desktop": {
@@ -45,7 +46,8 @@
45
46
  "env": {
46
47
  "FLUTTER_ULTRA_MAC_HELPER": "${CLAUDE_PLUGIN_ROOT}/sidecars/mac-helper/flutter-ultra-mac",
47
48
  "FLUTTER_ULTRA_LINUX_HELPER": "${CLAUDE_PLUGIN_ROOT}/sidecars/linux-helper/at-spi-bridge.py",
48
- "FLUTTER_ULTRA_STATE_DIR": "${CLAUDE_PLUGIN_DATA}/state"
49
+ "FLUTTER_ULTRA_STATE_DIR": "${CLAUDE_PLUGIN_DATA}/state",
50
+ "NODE_PATH": "${CLAUDE_PLUGIN_DATA}/node_modules"
49
51
  }
50
52
  },
51
53
  "flutter-ultra-devtools": {
@@ -4,7 +4,7 @@ description: >-
4
4
  extensions (gesture, screenshot, inspector, screencast, log collection)
5
5
  for the flutter-ultra-mcp Claude Code plugin. Composable with Sentry and
6
6
  other WidgetsFlutterBinding subclasses via the mixin form.
7
- version: 1.16.1
7
+ version: 1.16.3
8
8
  homepage: https://github.com/Bdaya-Dev/flutter-ultra-mcp
9
9
  repository: https://github.com/Bdaya-Dev/flutter-ultra-mcp
10
10
  issue_tracker: https://github.com/Bdaya-Dev/flutter-ultra-mcp/issues
@@ -2,7 +2,7 @@ name: ultra_flutter_devtools
2
2
  description: >-
3
3
  Flutter DevTools extension showing live MCP activity for the flutter-ultra-mcp
4
4
  Claude Code plugin (sessions, recent tool calls, errors, screenshot grid).
5
- version: 1.16.1
5
+ version: 1.16.3
6
6
  homepage: https://github.com/Bdaya-Dev/flutter-ultra-mcp
7
7
  repository: https://github.com/Bdaya-Dev/flutter-ultra-mcp
8
8
  issue_tracker: https://github.com/Bdaya-Dev/flutter-ultra-mcp/issues
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bdayadev/flutter-ultra-mcp",
3
- "version": "1.16.1",
3
+ "version": "1.16.3",
4
4
  "description": "Flutter Ultra MCP plugin monorepo — 8 MCP servers + ultra_flutter Dart packages + skills for Claude Code.",
5
5
  "license": "Apache-2.0",
6
6
  "homepage": "https://github.com/Bdaya-Dev/flutter-ultra-mcp",
@@ -34,7 +34,8 @@
34
34
  "test:dogfood": "vitest run tests/e2e/dogfood/"
35
35
  },
36
36
  "dependencies": {
37
- "playwright-core": "^1.49.0"
37
+ "playwright-core": "^1.49.0",
38
+ "ssh2": "^1.16.0"
38
39
  },
39
40
  "devDependencies": {
40
41
  "@commitlint/cli": "^19.0.0",
@@ -1,11 +1,13 @@
1
1
  #!/usr/bin/env node
2
- // Ensures production dependencies (playwright-core) are installed in
2
+ // Ensures production dependencies (playwright-core, ssh2) are installed in
3
3
  // CLAUDE_PLUGIN_DATA. Strips workspaces/devDependencies from the copied
4
4
  // package.json so npm install works in a flat directory.
5
5
  const fs = require('node:fs');
6
6
  const path = require('node:path');
7
7
  const { execSync } = require('node:child_process');
8
8
 
9
+ const REQUIRED_DEPS = ['playwright-core', 'ssh2'];
10
+
9
11
  const pluginRoot = process.env.CLAUDE_PLUGIN_ROOT;
10
12
  const pluginData = process.env.CLAUDE_PLUGIN_DATA;
11
13
  if (!pluginRoot || !pluginData) {
@@ -20,17 +22,21 @@ const cleaned = {
20
22
  };
21
23
  const cleanedStr = JSON.stringify(cleaned, null, 2) + '\n';
22
24
 
25
+ function allDepsInstalled(dataDir) {
26
+ return REQUIRED_DEPS.every((dep) => fs.existsSync(path.join(dataDir, 'node_modules', dep)));
27
+ }
28
+
23
29
  const dstPath = path.join(pluginData, 'package.json');
24
30
  try {
25
- if (fs.readFileSync(dstPath, 'utf8') === cleanedStr) {
26
- const nmExists = fs.existsSync(path.join(pluginData, 'node_modules', 'playwright-core'));
27
- if (nmExists) process.exit(0);
31
+ if (fs.readFileSync(dstPath, 'utf8') === cleanedStr && allDepsInstalled(pluginData)) {
32
+ process.exit(0);
28
33
  }
29
34
  } catch {}
30
35
 
36
+ fs.mkdirSync(pluginData, { recursive: true });
31
37
  fs.writeFileSync(dstPath, cleanedStr);
32
38
  try {
33
- execSync('npm install --production --no-audit --no-fund', {
39
+ execSync('npm install --omit=dev --no-audit --no-fund', {
34
40
  cwd: pluginData,
35
41
  stdio: 'inherit',
36
42
  timeout: 90_000,
@@ -146,14 +146,14 @@ Use LSP tools for pinpoint navigation when reading unfamiliar call paths:
146
146
 
147
147
  ## Build and LSP tool reference
148
148
 
149
- | Action | Tool |
150
- | ------------------------- | ----------------------------------------------------------------- |
151
- | Static analysis | `mcp__plugin_flutter_flutter-ultra-build__analyze` |
152
- | Preview auto-fixes | `mcp__plugin_flutter_flutter-ultra-build__fix_preview` |
153
- | Apply auto-fixes | `mcp__plugin_flutter_flutter-ultra-build__fix` |
154
- | Hover type/docs | `mcp__plugin_oh-my-claudecode_t__lsp_hover` |
155
- | Go to definition | `mcp__plugin_oh-my-claudecode_t__lsp_goto_definition` |
156
- | List file symbols | `mcp__plugin_oh-my-claudecode_t__lsp_document_symbols` |
149
+ | Action | Tool |
150
+ | ------------------ | ------------------------------------------------------ |
151
+ | Static analysis | `mcp__plugin_flutter_flutter-ultra-build__analyze` |
152
+ | Preview auto-fixes | `mcp__plugin_flutter_flutter-ultra-build__fix_preview` |
153
+ | Apply auto-fixes | `mcp__plugin_flutter_flutter-ultra-build__fix` |
154
+ | Hover type/docs | `mcp__plugin_oh-my-claudecode_t__lsp_hover` |
155
+ | Go to definition | `mcp__plugin_oh-my-claudecode_t__lsp_goto_definition` |
156
+ | List file symbols | `mcp__plugin_oh-my-claudecode_t__lsp_document_symbols` |
157
157
 
158
158
  ## Common patterns
159
159
 
@@ -186,22 +186,22 @@ Produce a markdown report with the following sections:
186
186
 
187
187
  ## Tool reference
188
188
 
189
- | Action | Tool |
190
- | ------------------------- | --------------------------------------------------------------------------- |
191
- | Attach | `mcp__plugin_flutter_flutter-ultra-runtime__attach` |
192
- | Screenshot | `mcp__plugin_flutter_flutter-ultra-runtime__screenshot` |
193
- | Full design audit | `mcp__plugin_flutter_flutter-ultra-runtime__audit_design` |
194
- | Responsive audit | `mcp__plugin_flutter_flutter-ultra-runtime__audit_responsive` |
195
- | Extract design tokens | `mcp__plugin_flutter_flutter-ultra-runtime__extract_design_tokens` |
196
- | Extract component inventory | `mcp__plugin_flutter_flutter-ultra-runtime__extract_component_inventory` |
197
- | Widget tree | `mcp__plugin_flutter_flutter-ultra-runtime__get_widget_tree` |
198
- | Find widget | `mcp__plugin_flutter_flutter-ultra-runtime__find_widget` |
199
- | Widget details | `mcp__plugin_flutter_flutter-ultra-runtime__get_widget_details` |
200
- | Count tree nodes | `mcp__plugin_flutter_flutter-ultra-runtime__count_widget_tree_nodes` |
201
- | Dump render tree | `mcp__plugin_flutter_flutter-ultra-runtime__dump_render_tree` |
202
- | Dump semantics tree | `mcp__plugin_flutter_flutter-ultra-runtime__dump_semantics_tree` |
203
- | Toggle debug paint | `mcp__plugin_flutter_flutter-ultra-runtime__toggle_debug_paint` |
204
- | Evaluate expression | `mcp__plugin_flutter_flutter-ultra-runtime__evaluate` |
189
+ | Action | Tool |
190
+ | --------------------------- | ------------------------------------------------------------------------ |
191
+ | Attach | `mcp__plugin_flutter_flutter-ultra-runtime__attach` |
192
+ | Screenshot | `mcp__plugin_flutter_flutter-ultra-runtime__screenshot` |
193
+ | Full design audit | `mcp__plugin_flutter_flutter-ultra-runtime__audit_design` |
194
+ | Responsive audit | `mcp__plugin_flutter_flutter-ultra-runtime__audit_responsive` |
195
+ | Extract design tokens | `mcp__plugin_flutter_flutter-ultra-runtime__extract_design_tokens` |
196
+ | Extract component inventory | `mcp__plugin_flutter_flutter-ultra-runtime__extract_component_inventory` |
197
+ | Widget tree | `mcp__plugin_flutter_flutter-ultra-runtime__get_widget_tree` |
198
+ | Find widget | `mcp__plugin_flutter_flutter-ultra-runtime__find_widget` |
199
+ | Widget details | `mcp__plugin_flutter_flutter-ultra-runtime__get_widget_details` |
200
+ | Count tree nodes | `mcp__plugin_flutter_flutter-ultra-runtime__count_widget_tree_nodes` |
201
+ | Dump render tree | `mcp__plugin_flutter_flutter-ultra-runtime__dump_render_tree` |
202
+ | Dump semantics tree | `mcp__plugin_flutter_flutter-ultra-runtime__dump_semantics_tree` |
203
+ | Toggle debug paint | `mcp__plugin_flutter_flutter-ultra-runtime__toggle_debug_paint` |
204
+ | Evaluate expression | `mcp__plugin_flutter_flutter-ultra-runtime__evaluate` |
205
205
 
206
206
  ## See also
207
207
 
@@ -87,22 +87,22 @@ Useful during:
87
87
 
88
88
  ## Tool reference
89
89
 
90
- | Action | Tool |
91
- | ---------------- | --------------------------------------------------------------------- |
92
- | Start server | `mcp__plugin_flutter_flutter-ultra-devtools__start_panel_server` |
93
- | Stop server | `mcp__plugin_flutter_flutter-ultra-devtools__stop_panel_server` |
94
- | Check status | `mcp__plugin_flutter_flutter-ultra-devtools__panel_status` |
95
- | Push event | `mcp__plugin_flutter_flutter-ultra-devtools__push_event` |
96
- | Wait for command | `mcp__plugin_flutter_flutter-ultra-devtools__panel_command` |
97
- | Dump diagnostics | `mcp__plugin_flutter_flutter-ultra-devtools__dump_diagnostics` |
98
- | Project info | `mcp__plugin_flutter_flutter-ultra-build__project_info` |
99
- | Add dependency | `mcp__plugin_flutter_flutter-ultra-build__pub_add` |
100
- | Resolve deps | `mcp__plugin_flutter_flutter-ultra-build__pub_get` |
101
- | Overrides set | `mcp__plugin_flutter_flutter-ultra-build__pubspec_overrides_set` |
102
- | VM screenshot | `mcp__plugin_flutter_flutter-ultra-runtime__screenshot` |
103
- | Runtime errors | `mcp__plugin_flutter_flutter-ultra-runtime__get_runtime_errors` |
104
- | Gesture tap | `mcp__plugin_flutter_flutter-ultra-gesture__tap` |
105
- | Patrol result | `mcp__plugin_flutter_flutter-ultra-patrol__get_patrol_result` |
90
+ | Action | Tool |
91
+ | ---------------- | ---------------------------------------------------------------- |
92
+ | Start server | `mcp__plugin_flutter_flutter-ultra-devtools__start_panel_server` |
93
+ | Stop server | `mcp__plugin_flutter_flutter-ultra-devtools__stop_panel_server` |
94
+ | Check status | `mcp__plugin_flutter_flutter-ultra-devtools__panel_status` |
95
+ | Push event | `mcp__plugin_flutter_flutter-ultra-devtools__push_event` |
96
+ | Wait for command | `mcp__plugin_flutter_flutter-ultra-devtools__panel_command` |
97
+ | Dump diagnostics | `mcp__plugin_flutter_flutter-ultra-devtools__dump_diagnostics` |
98
+ | Project info | `mcp__plugin_flutter_flutter-ultra-build__project_info` |
99
+ | Add dependency | `mcp__plugin_flutter_flutter-ultra-build__pub_add` |
100
+ | Resolve deps | `mcp__plugin_flutter_flutter-ultra-build__pub_get` |
101
+ | Overrides set | `mcp__plugin_flutter_flutter-ultra-build__pubspec_overrides_set` |
102
+ | VM screenshot | `mcp__plugin_flutter_flutter-ultra-runtime__screenshot` |
103
+ | Runtime errors | `mcp__plugin_flutter_flutter-ultra-runtime__get_runtime_errors` |
104
+ | Gesture tap | `mcp__plugin_flutter_flutter-ultra-gesture__tap` |
105
+ | Patrol result | `mcp__plugin_flutter_flutter-ultra-patrol__get_patrol_result` |
106
106
 
107
107
  ## Event types reference
108
108
 
@@ -167,26 +167,26 @@ Use this path when the demo must exactly match a test scenario for reproducibili
167
167
 
168
168
  ## Tool reference
169
169
 
170
- | Action | Tool |
171
- | --------------------------- | --------------------------------------------------------------------------- |
172
- | Discover sessions | `mcp__plugin_flutter_flutter-ultra-runtime__discover_sessions` |
173
- | Runtime evaluate | `mcp__plugin_flutter_flutter-ultra-runtime__evaluate` |
174
- | Find widget | `mcp__plugin_flutter_flutter-ultra-runtime__find_widget` |
175
- | Hot reload | `mcp__plugin_flutter_flutter-ultra-runtime__hot_reload` |
176
- | Browser new context | `mcp__plugin_flutter_flutter-ultra-browser__new_context` |
177
- | Browser screenshot | `mcp__plugin_flutter_flutter-ultra-browser__screenshot` |
178
- | Browser navigate | `mcp__plugin_flutter_flutter-ultra-browser__navigate` |
179
- | Browser click | `mcp__plugin_flutter_flutter-ultra-browser__click` |
180
- | Browser fill | `mcp__plugin_flutter_flutter-ultra-browser__fill` |
181
- | Browser start tracing | `mcp__plugin_flutter_flutter-ultra-browser__start_tracing` |
182
- | Browser stop tracing | `mcp__plugin_flutter_flutter-ultra-browser__stop_tracing` |
183
- | Browser close context | `mcp__plugin_flutter_flutter-ultra-browser__close_context` |
184
- | Patrol start recording | `mcp__plugin_flutter_flutter-ultra-patrol__start_patrol_recording` |
185
- | Patrol stop recording | `mcp__plugin_flutter_flutter-ultra-patrol__stop_patrol_recording` |
186
- | Patrol start test | `mcp__plugin_flutter_flutter-ultra-patrol__start_patrol_test` |
187
- | Patrol poll | `mcp__plugin_flutter_flutter-ultra-patrol__poll_patrol_job` |
188
- | Patrol extract frame | `mcp__plugin_flutter_flutter-ultra-patrol__extract_video_frame` |
189
- | Convert recording | `mcp__plugin_flutter_flutter-ultra-build__convert_recording` |
170
+ | Action | Tool |
171
+ | ---------------------- | ------------------------------------------------------------------ |
172
+ | Discover sessions | `mcp__plugin_flutter_flutter-ultra-runtime__discover_sessions` |
173
+ | Runtime evaluate | `mcp__plugin_flutter_flutter-ultra-runtime__evaluate` |
174
+ | Find widget | `mcp__plugin_flutter_flutter-ultra-runtime__find_widget` |
175
+ | Hot reload | `mcp__plugin_flutter_flutter-ultra-runtime__hot_reload` |
176
+ | Browser new context | `mcp__plugin_flutter_flutter-ultra-browser__new_context` |
177
+ | Browser screenshot | `mcp__plugin_flutter_flutter-ultra-browser__screenshot` |
178
+ | Browser navigate | `mcp__plugin_flutter_flutter-ultra-browser__navigate` |
179
+ | Browser click | `mcp__plugin_flutter_flutter-ultra-browser__click` |
180
+ | Browser fill | `mcp__plugin_flutter_flutter-ultra-browser__fill` |
181
+ | Browser start tracing | `mcp__plugin_flutter_flutter-ultra-browser__start_tracing` |
182
+ | Browser stop tracing | `mcp__plugin_flutter_flutter-ultra-browser__stop_tracing` |
183
+ | Browser close context | `mcp__plugin_flutter_flutter-ultra-browser__close_context` |
184
+ | Patrol start recording | `mcp__plugin_flutter_flutter-ultra-patrol__start_patrol_recording` |
185
+ | Patrol stop recording | `mcp__plugin_flutter_flutter-ultra-patrol__stop_patrol_recording` |
186
+ | Patrol start test | `mcp__plugin_flutter_flutter-ultra-patrol__start_patrol_test` |
187
+ | Patrol poll | `mcp__plugin_flutter_flutter-ultra-patrol__poll_patrol_job` |
188
+ | Patrol extract frame | `mcp__plugin_flutter_flutter-ultra-patrol__extract_video_frame` |
189
+ | Convert recording | `mcp__plugin_flutter_flutter-ultra-build__convert_recording` |
190
190
 
191
191
  ## Notes
192
192
 
@@ -128,34 +128,34 @@ Got: InvoiceListLoaded with 0 items
128
128
 
129
129
  ## Tool reference
130
130
 
131
- | Action | Tool |
132
- | ------------------ | ------------------------------------------------------------------------ |
133
- | List projects | `mcp__plugin_flutter_flutter-ultra-build__list_projects` |
134
- | Project info | `mcp__plugin_flutter_flutter-ultra-build__project_info` |
135
- | Discover tests | `mcp__plugin_flutter_flutter-ultra-build__test_filter` |
136
- | Static analysis | `mcp__plugin_flutter_flutter-ultra-build__analyze` |
137
- | Start unit tests | `mcp__plugin_flutter_flutter-ultra-build__start_run_unit_tests` |
138
- | Poll unit tests | `mcp__plugin_flutter_flutter-ultra-build__poll_run_unit_tests` |
139
- | Get unit results | `mcp__plugin_flutter_flutter-ultra-build__get_run_unit_tests_result` |
140
- | Start widget tests | `mcp__plugin_flutter_flutter-ultra-build__start_run_widget_tests` |
141
- | Start golden tests | `mcp__plugin_flutter_flutter-ultra-build__start_run_golden_tests` |
142
- | Update goldens | `mcp__plugin_flutter_flutter-ultra-build__start_update_goldens` |
143
- | Start integ tests | `mcp__plugin_flutter_flutter-ultra-build__start_run_integration_tests` |
144
- | Poll integ tests | `mcp__plugin_flutter_flutter-ultra-build__poll_run_integration_tests` |
131
+ | Action | Tool |
132
+ | ------------------ | --------------------------------------------------------------------------- |
133
+ | List projects | `mcp__plugin_flutter_flutter-ultra-build__list_projects` |
134
+ | Project info | `mcp__plugin_flutter_flutter-ultra-build__project_info` |
135
+ | Discover tests | `mcp__plugin_flutter_flutter-ultra-build__test_filter` |
136
+ | Static analysis | `mcp__plugin_flutter_flutter-ultra-build__analyze` |
137
+ | Start unit tests | `mcp__plugin_flutter_flutter-ultra-build__start_run_unit_tests` |
138
+ | Poll unit tests | `mcp__plugin_flutter_flutter-ultra-build__poll_run_unit_tests` |
139
+ | Get unit results | `mcp__plugin_flutter_flutter-ultra-build__get_run_unit_tests_result` |
140
+ | Start widget tests | `mcp__plugin_flutter_flutter-ultra-build__start_run_widget_tests` |
141
+ | Start golden tests | `mcp__plugin_flutter_flutter-ultra-build__start_run_golden_tests` |
142
+ | Update goldens | `mcp__plugin_flutter_flutter-ultra-build__start_update_goldens` |
143
+ | Start integ tests | `mcp__plugin_flutter_flutter-ultra-build__start_run_integration_tests` |
144
+ | Poll integ tests | `mcp__plugin_flutter_flutter-ultra-build__poll_run_integration_tests` |
145
145
  | Get integ results | `mcp__plugin_flutter_flutter-ultra-build__get_run_integration_tests_result` |
146
- | Cancel integ tests | `mcp__plugin_flutter_flutter-ultra-build__cancel_run_integration_tests` |
147
- | List patrol tests | `mcp__plugin_flutter_flutter-ultra-patrol__list_tests` |
148
- | Start patrol test | `mcp__plugin_flutter_flutter-ultra-patrol__start_patrol_test` |
149
- | Poll patrol | `mcp__plugin_flutter_flutter-ultra-patrol__poll_patrol_job` |
150
- | Get patrol result | `mcp__plugin_flutter_flutter-ultra-patrol__get_patrol_result` |
151
- | Patrol screenshot | `mcp__plugin_flutter_flutter-ultra-patrol__take_patrol_screenshot` |
152
- | Patrol recording | `mcp__plugin_flutter_flutter-ultra-patrol__start_patrol_recording` |
153
- | Extract frame | `mcp__plugin_flutter_flutter-ultra-patrol__extract_video_frame` |
154
- | Browser errors | `mcp__plugin_flutter_flutter-ultra-patrol__get_patrol_browser_errors` |
155
- | Web debugger port | `mcp__plugin_flutter_flutter-ultra-patrol__get_patrol_web_debugger_port` |
156
- | Connect CDP | `mcp__plugin_flutter_flutter-ultra-browser__connect_over_cdp` |
157
- | HTTP capture | `mcp__plugin_flutter_flutter-ultra-runtime__start_http_capture` |
158
- | VM screenshot | `mcp__plugin_flutter_flutter-ultra-runtime__screenshot` |
146
+ | Cancel integ tests | `mcp__plugin_flutter_flutter-ultra-build__cancel_run_integration_tests` |
147
+ | List patrol tests | `mcp__plugin_flutter_flutter-ultra-patrol__list_tests` |
148
+ | Start patrol test | `mcp__plugin_flutter_flutter-ultra-patrol__start_patrol_test` |
149
+ | Poll patrol | `mcp__plugin_flutter_flutter-ultra-patrol__poll_patrol_job` |
150
+ | Get patrol result | `mcp__plugin_flutter_flutter-ultra-patrol__get_patrol_result` |
151
+ | Patrol screenshot | `mcp__plugin_flutter_flutter-ultra-patrol__take_patrol_screenshot` |
152
+ | Patrol recording | `mcp__plugin_flutter_flutter-ultra-patrol__start_patrol_recording` |
153
+ | Extract frame | `mcp__plugin_flutter_flutter-ultra-patrol__extract_video_frame` |
154
+ | Browser errors | `mcp__plugin_flutter_flutter-ultra-patrol__get_patrol_browser_errors` |
155
+ | Web debugger port | `mcp__plugin_flutter_flutter-ultra-patrol__get_patrol_web_debugger_port` |
156
+ | Connect CDP | `mcp__plugin_flutter_flutter-ultra-browser__connect_over_cdp` |
157
+ | HTTP capture | `mcp__plugin_flutter_flutter-ultra-runtime__start_http_capture` |
158
+ | VM screenshot | `mcp__plugin_flutter_flutter-ultra-runtime__screenshot` |
159
159
 
160
160
  ## Example
161
161