auto-chrome-mcp-shared 1.1.0 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.mts CHANGED
@@ -198,6 +198,14 @@ declare const TOOL_NAMES: {
198
198
  PERFORMANCE_ANALYZE_INSIGHT: string;
199
199
  GIF_RECORDER: string;
200
200
  BATCH: string;
201
+ SET_WORK_TAB: string;
202
+ WAIT_FOR: string;
203
+ SCROLL_COLLECT: string;
204
+ EXTRACT: string;
205
+ FIND: string;
206
+ SHORTCUT: string;
207
+ LIST_BROWSERS: string;
208
+ USE_BROWSER: string;
201
209
  };
202
210
  RECORD_REPLAY: {
203
211
  FLOW_RUN: string;
package/dist/index.d.ts CHANGED
@@ -198,6 +198,14 @@ declare const TOOL_NAMES: {
198
198
  PERFORMANCE_ANALYZE_INSIGHT: string;
199
199
  GIF_RECORDER: string;
200
200
  BATCH: string;
201
+ SET_WORK_TAB: string;
202
+ WAIT_FOR: string;
203
+ SCROLL_COLLECT: string;
204
+ EXTRACT: string;
205
+ FIND: string;
206
+ SHORTCUT: string;
207
+ LIST_BROWSERS: string;
208
+ USE_BROWSER: string;
201
209
  };
202
210
  RECORD_REPLAY: {
203
211
  FLOW_RUN: string;
package/dist/index.js CHANGED
@@ -112,7 +112,16 @@ var TOOL_NAMES = {
112
112
  PERFORMANCE_STOP_TRACE: "performance_stop_trace",
113
113
  PERFORMANCE_ANALYZE_INSIGHT: "performance_analyze_insight",
114
114
  GIF_RECORDER: "chrome_gif_recorder",
115
- BATCH: "chrome_batch"
115
+ BATCH: "chrome_batch",
116
+ SET_WORK_TAB: "chrome_set_work_tab",
117
+ WAIT_FOR: "chrome_wait_for",
118
+ SCROLL_COLLECT: "chrome_scroll_collect",
119
+ EXTRACT: "chrome_extract",
120
+ FIND: "chrome_find",
121
+ SHORTCUT: "chrome_shortcut",
122
+ // stdio 프록시 전용 (extension 으로 forward 되지 않음 — mcp-server-stdio.ts 가 가로챔)
123
+ LIST_BROWSERS: "chrome_list_browsers",
124
+ USE_BROWSER: "chrome_use_browser"
116
125
  },
117
126
  RECORD_REPLAY: {
118
127
  FLOW_RUN: "record_replay_flow_run",
@@ -146,9 +155,166 @@ var TOOL_SCHEMAS = [
146
155
  required: ["steps"]
147
156
  }
148
157
  },
158
+ {
159
+ name: TOOL_NAMES.BROWSER.FIND,
160
+ description: 'Find elements on the page using natural language (Korean or English), e.g. "\uB85C\uADF8\uC778 \uBC84\uD2BC", "search input", "\uC7A5\uBC14\uAD6C\uB2C8 \uC544\uC774\uCF58". Matches element names/roles/placeholder/text via synonym + fuzzy scoring over the accessibility tree and returns ranked candidates with ref (usable directly in chrome_click_element / chrome_fill_or_select), role, name, coordinates, and frameId. Cheaper and more direct than reading the whole page when you know what you are looking for.',
161
+ inputSchema: {
162
+ type: "object",
163
+ properties: {
164
+ query: {
165
+ type: "string",
166
+ description: "Natural language description of the element (Korean/English)"
167
+ },
168
+ tabId: {
169
+ type: "number",
170
+ description: "Optional target tab id. Defaults to the MCP work tab (background work mode) or the active tab."
171
+ },
172
+ maxResults: { type: "number", description: "Max candidates to return (default 5, max 20)" },
173
+ allFrames: {
174
+ type: "boolean",
175
+ description: "Also search inside iframes (default true)"
176
+ }
177
+ },
178
+ required: ["query"]
179
+ }
180
+ },
181
+ {
182
+ name: TOOL_NAMES.BROWSER.SHORTCUT,
183
+ description: 'Save and run named multi-step shortcuts (macro = a chrome_batch step list stored under a name). action="save" stores {name, steps, description}; "run" executes a saved shortcut through the normal tool pipeline; "list" shows saved shortcuts; "delete" removes one. Useful for workflows you repeat across sessions (login flows, routine collection).',
184
+ inputSchema: {
185
+ type: "object",
186
+ properties: {
187
+ action: {
188
+ type: "string",
189
+ enum: ["save", "run", "list", "delete"],
190
+ description: "What to do"
191
+ },
192
+ name: { type: "string", description: "Shortcut name (save/run/delete)" },
193
+ steps: {
194
+ type: "array",
195
+ description: 'For action="save": steps in chrome_batch format, max 20. Each: { tool: string, args?: object }',
196
+ items: {
197
+ type: "object",
198
+ properties: {
199
+ tool: { type: "string" },
200
+ args: { type: "object" }
201
+ },
202
+ required: ["tool"]
203
+ }
204
+ },
205
+ description: { type: "string", description: 'For action="save": what this shortcut does' },
206
+ continueOnError: {
207
+ type: "boolean",
208
+ description: 'For action="run": keep running steps after a failure (default false)'
209
+ }
210
+ },
211
+ required: ["action"]
212
+ }
213
+ },
214
+ {
215
+ name: TOOL_NAMES.BROWSER.EXTRACT,
216
+ description: "Extract ONLY the fields you need from the page via CSS selectors \u2014 far cheaper than reading the whole page when you know what you want (e.g. price, title, links). Deterministic and precise. Prefer this over chrome_get_web_content/chrome_read_page for targeted scraping.",
217
+ inputSchema: {
218
+ type: "object",
219
+ properties: {
220
+ tabId: {
221
+ type: "number",
222
+ description: "Optional target tab id. Defaults to the MCP work tab (background work mode) or the active tab."
223
+ },
224
+ fields: {
225
+ type: "object",
226
+ description: "Map of fieldName \u2192 CSS selector (string) or { selector, attr?, all? }. Default value = trimmed innerText of first match; attr returns that attribute (href/src resolve to absolute URLs); all:true returns an array over every match (max 100, 2000 chars each). Max 20 fields."
227
+ },
228
+ frameId: {
229
+ type: "number",
230
+ description: "Optional frame id to extract from a specific iframe."
231
+ }
232
+ },
233
+ required: ["fields"]
234
+ }
235
+ },
236
+ {
237
+ name: TOOL_NAMES.BROWSER.WAIT_FOR,
238
+ description: 'Wait until the page is actually ready before acting \u2014 prevents "clicked/read too early" failures after navigation, clicks, or AJAX updates. Conditions (AND-combined, at least one required): selector appears/visible/hidden, text appears, document ready, or network idle. A timeout returns success:false with the observed state (not an error) so you can decide next steps.',
239
+ inputSchema: {
240
+ type: "object",
241
+ properties: {
242
+ tabId: {
243
+ type: "number",
244
+ description: "Optional target tab id. Defaults to the MCP work tab (background work mode) or the active tab."
245
+ },
246
+ selector: { type: "string", description: "CSS selector to wait for" },
247
+ state: {
248
+ type: "string",
249
+ enum: ["visible", "attached", "hidden"],
250
+ description: "Selector condition (default 'visible'). 'hidden' = absent or not visible."
251
+ },
252
+ text: { type: "string", description: "Wait until this text appears in the page body" },
253
+ documentReady: {
254
+ type: "boolean",
255
+ description: "Wait for document.readyState === 'complete'"
256
+ },
257
+ networkIdleMs: {
258
+ type: "number",
259
+ description: "Wait until the tab has no in-flight network requests for this many ms (e.g. 500)"
260
+ },
261
+ timeoutMs: { type: "number", description: "Max wait (default 15000, max 60000)" },
262
+ pollMs: { type: "number", description: "Poll interval (default 250, min 100)" }
263
+ },
264
+ required: []
265
+ }
266
+ },
267
+ {
268
+ name: TOOL_NAMES.BROWSER.SCROLL_COLLECT,
269
+ description: "Collect content from infinite-scroll / lazy-loaded pages in ONE call: repeatedly scrolls to the bottom (window or a container element), waits for new content, and returns the accumulated text or links. Stops when the page stops growing, stopText appears, maxScrolls or maxChars is reached.",
270
+ inputSchema: {
271
+ type: "object",
272
+ properties: {
273
+ tabId: {
274
+ type: "number",
275
+ description: "Optional target tab id. Defaults to the MCP work tab (background work mode) or the active tab."
276
+ },
277
+ maxScrolls: { type: "number", description: "Max scroll passes (default 10, max 30)" },
278
+ delayMs: {
279
+ type: "number",
280
+ description: "Wait after each scroll for content to load (default 700, 200\u20133000)"
281
+ },
282
+ containerSelector: {
283
+ type: "string",
284
+ description: "Scroll this element instead of the window (e.g. a feed container)"
285
+ },
286
+ stopText: { type: "string", description: "Stop early when this text appears" },
287
+ collect: {
288
+ type: "string",
289
+ enum: ["text", "links"],
290
+ description: "What to return (default 'text'). 'links' = deduped [{text, href}]"
291
+ },
292
+ maxChars: { type: "number", description: "Output cap (default 100000, max 300000)" }
293
+ },
294
+ required: []
295
+ }
296
+ },
297
+ {
298
+ name: TOOL_NAMES.BROWSER.SET_WORK_TAB,
299
+ description: "Retarget this session's default work tab WITHOUT activating/focusing anything (unlike chrome_switch_tab). Use when a tool result reports new_tabs_opened (a popup/new tab appeared, e.g. OAuth login) and you want subsequent tabId-less tool calls to target it \u2014 then call again with the original tabId to return. No args = report current work tab. clear:true = unset.",
300
+ inputSchema: {
301
+ type: "object",
302
+ properties: {
303
+ tabId: {
304
+ type: "number",
305
+ description: "Tab id to make this session's work tab. Omit to just query the current one."
306
+ },
307
+ clear: {
308
+ type: "boolean",
309
+ description: "Unset the session work tab (default false)"
310
+ }
311
+ },
312
+ required: []
313
+ }
314
+ },
149
315
  {
150
316
  name: TOOL_NAMES.BROWSER.GET_WINDOWS_AND_TABS,
151
- description: "Get all currently open browser windows and tabs",
317
+ description: "Get all currently open browser windows and tabs. Marks MCP session work tabs (mcpWorkTabSessions), the dedicated MCP work window (isMcpWorkWindow), and tabs recently spawned by page actions such as popups (recentlySpawned with openerTabId).",
152
318
  inputSchema: {
153
319
  type: "object",
154
320
  properties: {},
@@ -289,6 +455,18 @@ Tip: If the returned elements do not include the specific element you need, use
289
455
  windowId: {
290
456
  type: "number",
291
457
  description: "Target window ID to pick active tab when tabId is omitted."
458
+ },
459
+ allFrames: {
460
+ type: "boolean",
461
+ description: "Also collect content from iframes (merged, annotated with frameId \u2014 pair frame-local refs with that frameId). Default: false"
462
+ },
463
+ diff: {
464
+ type: "boolean",
465
+ description: "When true (default), returns {unchanged:true} instead of the full body if the page content is identical to your previous read \u2014 reuse the earlier content. Pass false to force full re-send."
466
+ },
467
+ compact: {
468
+ type: "boolean",
469
+ description: "Lossless output compaction (collapse empty wrappers etc., ~30-50% smaller). Default: true. Pass false for the verbose format."
292
470
  }
293
471
  },
294
472
  required: []
@@ -305,6 +483,10 @@ Tip: If the returned elements do not include the specific element you need, use
305
483
  type: "boolean",
306
484
  description: "Avoid focusing/activating tab/window for certain operations (best-effort). Default: false"
307
485
  },
486
+ fullResolution: {
487
+ type: "boolean",
488
+ description: 'For action="screenshot"/"zoom": skip the \u22641568px downscale of the returned image (default: false)'
489
+ },
308
490
  action: {
309
491
  type: "string",
310
492
  description: "Action to perform: left_click | right_click | double_click | triple_click | left_click_drag | scroll | scroll_to | type | key | fill | fill_form | hover | wait | resize_page | zoom | screenshot"
@@ -552,7 +734,11 @@ Tip: If the returned elements do not include the specific element you need, use
552
734
  height: { type: "number", description: "Height in pixels (default: 600)" },
553
735
  storeBase64: {
554
736
  type: "boolean",
555
- description: "return screenshot in base64 format (default: false) if you want to see the page, recommend set this to be true"
737
+ description: "Return the screenshot as an MCP image content block (default: false). Recommended when you want to SEE the page. The image is auto-downscaled to \u22641568px long edge (metadata reports imageScale vs the CSS viewport for coordinate math); pass fullResolution:true to skip downscaling."
738
+ },
739
+ fullResolution: {
740
+ type: "boolean",
741
+ description: "Skip the \u22641568px downscale for the returned image (default: false)"
556
742
  },
557
743
  fullPage: {
558
744
  type: "boolean",
@@ -640,6 +826,14 @@ Tip: If the returned elements do not include the specific element you need, use
640
826
  selector: {
641
827
  type: "string",
642
828
  description: "CSS selector to get content from a specific element. If provided, only content from this element will be returned"
829
+ },
830
+ raw: {
831
+ type: "boolean",
832
+ description: "Text mode returns reader-view content by default (navigation/footer/cookie-banner noise stripped, main content kept \u2014 fullTextChars vs returnedChars reported). Pass true for the unfiltered full text. Default: false"
833
+ },
834
+ diff: {
835
+ type: "boolean",
836
+ description: "When true (default), returns {unchanged:true} instead of the body if identical to your previous read of this tab \u2014 reuse the earlier content. Pass false to force full re-send."
643
837
  }
644
838
  },
645
839
  required: []
@@ -717,6 +911,18 @@ Tip: If the returned elements do not include the specific element you need, use
717
911
  tabId: {
718
912
  type: "number",
719
913
  description: "Optional target tab id. Defaults to the MCP work tab (background work mode) or the active tab."
914
+ },
915
+ limit: {
916
+ type: "number",
917
+ description: 'action="stop": return at most this many captured requests (default 100; paginate with offset)'
918
+ },
919
+ offset: {
920
+ type: "number",
921
+ description: 'action="stop": skip this many captured requests (default 0)'
922
+ },
923
+ countOnly: {
924
+ type: "boolean",
925
+ description: 'action="stop": return only counts/summary without the request array (default: false)'
720
926
  }
721
927
  },
722
928
  required: ["action"]
@@ -760,6 +966,18 @@ Tip: If the returned elements do not include the specific element you need, use
760
966
  excludeCurrentTabs: {
761
967
  type: "boolean",
762
968
  description: "When set to true, filters out URLs that are currently open in any browser tab. Useful for finding pages you've visited but don't have open anymore. (default: false)"
969
+ },
970
+ limit: {
971
+ type: "number",
972
+ description: "Return at most this many entries (default 100; pagination with offset)"
973
+ },
974
+ offset: {
975
+ type: "number",
976
+ description: "Skip this many entries before returning (default 0)"
977
+ },
978
+ countOnly: {
979
+ type: "boolean",
980
+ description: "Return only totalCount without the entries array (default: false)"
763
981
  }
764
982
  },
765
983
  required: []
@@ -1168,6 +1386,14 @@ Tip: If the returned elements do not include the specific element you need, use
1168
1386
  type: "number",
1169
1387
  description: "Maximum number of console messages to capture in snapshot mode (default: 100). If limit is provided, it takes precedence."
1170
1388
  },
1389
+ offset: {
1390
+ type: "number",
1391
+ description: "Skip this many messages before returning (pagination; default 0)"
1392
+ },
1393
+ countOnly: {
1394
+ type: "boolean",
1395
+ description: "Return only counts/summary without the message array (default: false)"
1396
+ },
1171
1397
  mode: {
1172
1398
  type: "string",
1173
1399
  enum: ["snapshot", "buffer"],
package/dist/index.mjs CHANGED
@@ -67,7 +67,16 @@ var TOOL_NAMES = {
67
67
  PERFORMANCE_STOP_TRACE: "performance_stop_trace",
68
68
  PERFORMANCE_ANALYZE_INSIGHT: "performance_analyze_insight",
69
69
  GIF_RECORDER: "chrome_gif_recorder",
70
- BATCH: "chrome_batch"
70
+ BATCH: "chrome_batch",
71
+ SET_WORK_TAB: "chrome_set_work_tab",
72
+ WAIT_FOR: "chrome_wait_for",
73
+ SCROLL_COLLECT: "chrome_scroll_collect",
74
+ EXTRACT: "chrome_extract",
75
+ FIND: "chrome_find",
76
+ SHORTCUT: "chrome_shortcut",
77
+ // stdio 프록시 전용 (extension 으로 forward 되지 않음 — mcp-server-stdio.ts 가 가로챔)
78
+ LIST_BROWSERS: "chrome_list_browsers",
79
+ USE_BROWSER: "chrome_use_browser"
71
80
  },
72
81
  RECORD_REPLAY: {
73
82
  FLOW_RUN: "record_replay_flow_run",
@@ -101,9 +110,166 @@ var TOOL_SCHEMAS = [
101
110
  required: ["steps"]
102
111
  }
103
112
  },
113
+ {
114
+ name: TOOL_NAMES.BROWSER.FIND,
115
+ description: 'Find elements on the page using natural language (Korean or English), e.g. "\uB85C\uADF8\uC778 \uBC84\uD2BC", "search input", "\uC7A5\uBC14\uAD6C\uB2C8 \uC544\uC774\uCF58". Matches element names/roles/placeholder/text via synonym + fuzzy scoring over the accessibility tree and returns ranked candidates with ref (usable directly in chrome_click_element / chrome_fill_or_select), role, name, coordinates, and frameId. Cheaper and more direct than reading the whole page when you know what you are looking for.',
116
+ inputSchema: {
117
+ type: "object",
118
+ properties: {
119
+ query: {
120
+ type: "string",
121
+ description: "Natural language description of the element (Korean/English)"
122
+ },
123
+ tabId: {
124
+ type: "number",
125
+ description: "Optional target tab id. Defaults to the MCP work tab (background work mode) or the active tab."
126
+ },
127
+ maxResults: { type: "number", description: "Max candidates to return (default 5, max 20)" },
128
+ allFrames: {
129
+ type: "boolean",
130
+ description: "Also search inside iframes (default true)"
131
+ }
132
+ },
133
+ required: ["query"]
134
+ }
135
+ },
136
+ {
137
+ name: TOOL_NAMES.BROWSER.SHORTCUT,
138
+ description: 'Save and run named multi-step shortcuts (macro = a chrome_batch step list stored under a name). action="save" stores {name, steps, description}; "run" executes a saved shortcut through the normal tool pipeline; "list" shows saved shortcuts; "delete" removes one. Useful for workflows you repeat across sessions (login flows, routine collection).',
139
+ inputSchema: {
140
+ type: "object",
141
+ properties: {
142
+ action: {
143
+ type: "string",
144
+ enum: ["save", "run", "list", "delete"],
145
+ description: "What to do"
146
+ },
147
+ name: { type: "string", description: "Shortcut name (save/run/delete)" },
148
+ steps: {
149
+ type: "array",
150
+ description: 'For action="save": steps in chrome_batch format, max 20. Each: { tool: string, args?: object }',
151
+ items: {
152
+ type: "object",
153
+ properties: {
154
+ tool: { type: "string" },
155
+ args: { type: "object" }
156
+ },
157
+ required: ["tool"]
158
+ }
159
+ },
160
+ description: { type: "string", description: 'For action="save": what this shortcut does' },
161
+ continueOnError: {
162
+ type: "boolean",
163
+ description: 'For action="run": keep running steps after a failure (default false)'
164
+ }
165
+ },
166
+ required: ["action"]
167
+ }
168
+ },
169
+ {
170
+ name: TOOL_NAMES.BROWSER.EXTRACT,
171
+ description: "Extract ONLY the fields you need from the page via CSS selectors \u2014 far cheaper than reading the whole page when you know what you want (e.g. price, title, links). Deterministic and precise. Prefer this over chrome_get_web_content/chrome_read_page for targeted scraping.",
172
+ inputSchema: {
173
+ type: "object",
174
+ properties: {
175
+ tabId: {
176
+ type: "number",
177
+ description: "Optional target tab id. Defaults to the MCP work tab (background work mode) or the active tab."
178
+ },
179
+ fields: {
180
+ type: "object",
181
+ description: "Map of fieldName \u2192 CSS selector (string) or { selector, attr?, all? }. Default value = trimmed innerText of first match; attr returns that attribute (href/src resolve to absolute URLs); all:true returns an array over every match (max 100, 2000 chars each). Max 20 fields."
182
+ },
183
+ frameId: {
184
+ type: "number",
185
+ description: "Optional frame id to extract from a specific iframe."
186
+ }
187
+ },
188
+ required: ["fields"]
189
+ }
190
+ },
191
+ {
192
+ name: TOOL_NAMES.BROWSER.WAIT_FOR,
193
+ description: 'Wait until the page is actually ready before acting \u2014 prevents "clicked/read too early" failures after navigation, clicks, or AJAX updates. Conditions (AND-combined, at least one required): selector appears/visible/hidden, text appears, document ready, or network idle. A timeout returns success:false with the observed state (not an error) so you can decide next steps.',
194
+ inputSchema: {
195
+ type: "object",
196
+ properties: {
197
+ tabId: {
198
+ type: "number",
199
+ description: "Optional target tab id. Defaults to the MCP work tab (background work mode) or the active tab."
200
+ },
201
+ selector: { type: "string", description: "CSS selector to wait for" },
202
+ state: {
203
+ type: "string",
204
+ enum: ["visible", "attached", "hidden"],
205
+ description: "Selector condition (default 'visible'). 'hidden' = absent or not visible."
206
+ },
207
+ text: { type: "string", description: "Wait until this text appears in the page body" },
208
+ documentReady: {
209
+ type: "boolean",
210
+ description: "Wait for document.readyState === 'complete'"
211
+ },
212
+ networkIdleMs: {
213
+ type: "number",
214
+ description: "Wait until the tab has no in-flight network requests for this many ms (e.g. 500)"
215
+ },
216
+ timeoutMs: { type: "number", description: "Max wait (default 15000, max 60000)" },
217
+ pollMs: { type: "number", description: "Poll interval (default 250, min 100)" }
218
+ },
219
+ required: []
220
+ }
221
+ },
222
+ {
223
+ name: TOOL_NAMES.BROWSER.SCROLL_COLLECT,
224
+ description: "Collect content from infinite-scroll / lazy-loaded pages in ONE call: repeatedly scrolls to the bottom (window or a container element), waits for new content, and returns the accumulated text or links. Stops when the page stops growing, stopText appears, maxScrolls or maxChars is reached.",
225
+ inputSchema: {
226
+ type: "object",
227
+ properties: {
228
+ tabId: {
229
+ type: "number",
230
+ description: "Optional target tab id. Defaults to the MCP work tab (background work mode) or the active tab."
231
+ },
232
+ maxScrolls: { type: "number", description: "Max scroll passes (default 10, max 30)" },
233
+ delayMs: {
234
+ type: "number",
235
+ description: "Wait after each scroll for content to load (default 700, 200\u20133000)"
236
+ },
237
+ containerSelector: {
238
+ type: "string",
239
+ description: "Scroll this element instead of the window (e.g. a feed container)"
240
+ },
241
+ stopText: { type: "string", description: "Stop early when this text appears" },
242
+ collect: {
243
+ type: "string",
244
+ enum: ["text", "links"],
245
+ description: "What to return (default 'text'). 'links' = deduped [{text, href}]"
246
+ },
247
+ maxChars: { type: "number", description: "Output cap (default 100000, max 300000)" }
248
+ },
249
+ required: []
250
+ }
251
+ },
252
+ {
253
+ name: TOOL_NAMES.BROWSER.SET_WORK_TAB,
254
+ description: "Retarget this session's default work tab WITHOUT activating/focusing anything (unlike chrome_switch_tab). Use when a tool result reports new_tabs_opened (a popup/new tab appeared, e.g. OAuth login) and you want subsequent tabId-less tool calls to target it \u2014 then call again with the original tabId to return. No args = report current work tab. clear:true = unset.",
255
+ inputSchema: {
256
+ type: "object",
257
+ properties: {
258
+ tabId: {
259
+ type: "number",
260
+ description: "Tab id to make this session's work tab. Omit to just query the current one."
261
+ },
262
+ clear: {
263
+ type: "boolean",
264
+ description: "Unset the session work tab (default false)"
265
+ }
266
+ },
267
+ required: []
268
+ }
269
+ },
104
270
  {
105
271
  name: TOOL_NAMES.BROWSER.GET_WINDOWS_AND_TABS,
106
- description: "Get all currently open browser windows and tabs",
272
+ description: "Get all currently open browser windows and tabs. Marks MCP session work tabs (mcpWorkTabSessions), the dedicated MCP work window (isMcpWorkWindow), and tabs recently spawned by page actions such as popups (recentlySpawned with openerTabId).",
107
273
  inputSchema: {
108
274
  type: "object",
109
275
  properties: {},
@@ -244,6 +410,18 @@ Tip: If the returned elements do not include the specific element you need, use
244
410
  windowId: {
245
411
  type: "number",
246
412
  description: "Target window ID to pick active tab when tabId is omitted."
413
+ },
414
+ allFrames: {
415
+ type: "boolean",
416
+ description: "Also collect content from iframes (merged, annotated with frameId \u2014 pair frame-local refs with that frameId). Default: false"
417
+ },
418
+ diff: {
419
+ type: "boolean",
420
+ description: "When true (default), returns {unchanged:true} instead of the full body if the page content is identical to your previous read \u2014 reuse the earlier content. Pass false to force full re-send."
421
+ },
422
+ compact: {
423
+ type: "boolean",
424
+ description: "Lossless output compaction (collapse empty wrappers etc., ~30-50% smaller). Default: true. Pass false for the verbose format."
247
425
  }
248
426
  },
249
427
  required: []
@@ -260,6 +438,10 @@ Tip: If the returned elements do not include the specific element you need, use
260
438
  type: "boolean",
261
439
  description: "Avoid focusing/activating tab/window for certain operations (best-effort). Default: false"
262
440
  },
441
+ fullResolution: {
442
+ type: "boolean",
443
+ description: 'For action="screenshot"/"zoom": skip the \u22641568px downscale of the returned image (default: false)'
444
+ },
263
445
  action: {
264
446
  type: "string",
265
447
  description: "Action to perform: left_click | right_click | double_click | triple_click | left_click_drag | scroll | scroll_to | type | key | fill | fill_form | hover | wait | resize_page | zoom | screenshot"
@@ -507,7 +689,11 @@ Tip: If the returned elements do not include the specific element you need, use
507
689
  height: { type: "number", description: "Height in pixels (default: 600)" },
508
690
  storeBase64: {
509
691
  type: "boolean",
510
- description: "return screenshot in base64 format (default: false) if you want to see the page, recommend set this to be true"
692
+ description: "Return the screenshot as an MCP image content block (default: false). Recommended when you want to SEE the page. The image is auto-downscaled to \u22641568px long edge (metadata reports imageScale vs the CSS viewport for coordinate math); pass fullResolution:true to skip downscaling."
693
+ },
694
+ fullResolution: {
695
+ type: "boolean",
696
+ description: "Skip the \u22641568px downscale for the returned image (default: false)"
511
697
  },
512
698
  fullPage: {
513
699
  type: "boolean",
@@ -595,6 +781,14 @@ Tip: If the returned elements do not include the specific element you need, use
595
781
  selector: {
596
782
  type: "string",
597
783
  description: "CSS selector to get content from a specific element. If provided, only content from this element will be returned"
784
+ },
785
+ raw: {
786
+ type: "boolean",
787
+ description: "Text mode returns reader-view content by default (navigation/footer/cookie-banner noise stripped, main content kept \u2014 fullTextChars vs returnedChars reported). Pass true for the unfiltered full text. Default: false"
788
+ },
789
+ diff: {
790
+ type: "boolean",
791
+ description: "When true (default), returns {unchanged:true} instead of the body if identical to your previous read of this tab \u2014 reuse the earlier content. Pass false to force full re-send."
598
792
  }
599
793
  },
600
794
  required: []
@@ -672,6 +866,18 @@ Tip: If the returned elements do not include the specific element you need, use
672
866
  tabId: {
673
867
  type: "number",
674
868
  description: "Optional target tab id. Defaults to the MCP work tab (background work mode) or the active tab."
869
+ },
870
+ limit: {
871
+ type: "number",
872
+ description: 'action="stop": return at most this many captured requests (default 100; paginate with offset)'
873
+ },
874
+ offset: {
875
+ type: "number",
876
+ description: 'action="stop": skip this many captured requests (default 0)'
877
+ },
878
+ countOnly: {
879
+ type: "boolean",
880
+ description: 'action="stop": return only counts/summary without the request array (default: false)'
675
881
  }
676
882
  },
677
883
  required: ["action"]
@@ -715,6 +921,18 @@ Tip: If the returned elements do not include the specific element you need, use
715
921
  excludeCurrentTabs: {
716
922
  type: "boolean",
717
923
  description: "When set to true, filters out URLs that are currently open in any browser tab. Useful for finding pages you've visited but don't have open anymore. (default: false)"
924
+ },
925
+ limit: {
926
+ type: "number",
927
+ description: "Return at most this many entries (default 100; pagination with offset)"
928
+ },
929
+ offset: {
930
+ type: "number",
931
+ description: "Skip this many entries before returning (default 0)"
932
+ },
933
+ countOnly: {
934
+ type: "boolean",
935
+ description: "Return only totalCount without the entries array (default: false)"
718
936
  }
719
937
  },
720
938
  required: []
@@ -1123,6 +1341,14 @@ Tip: If the returned elements do not include the specific element you need, use
1123
1341
  type: "number",
1124
1342
  description: "Maximum number of console messages to capture in snapshot mode (default: 100). If limit is provided, it takes precedence."
1125
1343
  },
1344
+ offset: {
1345
+ type: "number",
1346
+ description: "Skip this many messages before returning (pagination; default 0)"
1347
+ },
1348
+ countOnly: {
1349
+ type: "boolean",
1350
+ description: "Return only counts/summary without the message array (default: false)"
1351
+ },
1126
1352
  mode: {
1127
1353
  type: "string",
1128
1354
  enum: ["snapshot", "buffer"],
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "auto-chrome-mcp-shared",
3
- "version": "1.1.0",
3
+ "version": "1.3.0",
4
4
  "author": "hangye (upstream), scalemaker-ship-it (scalemaker fork)",
5
5
  "main": "dist/index.js",
6
6
  "module": "./dist/index.mjs",