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 +8 -0
- package/dist/index.d.ts +8 -0
- package/dist/index.js +229 -3
- package/dist/index.mjs +229 -3
- package/package.json +1 -1
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: "
|
|
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: "
|
|
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"],
|