auto-chrome-mcp-shared 1.9.0 → 1.10.1
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/README.md +5 -5
- package/dist/index.d.mts +17 -2
- package/dist/index.d.ts +17 -2
- package/dist/index.js +267 -547
- package/dist/index.mjs +267 -547
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -45,7 +45,7 @@ module.exports = __toCommonJS(index_exports);
|
|
|
45
45
|
|
|
46
46
|
// src/constants.ts
|
|
47
47
|
var DEFAULT_SERVER_PORT = 12320;
|
|
48
|
-
var HOST_NAME = "com.
|
|
48
|
+
var HOST_NAME = "com.autochromemcp.nativehost";
|
|
49
49
|
|
|
50
50
|
// src/types.ts
|
|
51
51
|
var NativeMessageType = /* @__PURE__ */ ((NativeMessageType2) => {
|
|
@@ -133,16 +133,32 @@ var TOOL_NAMES = {
|
|
|
133
133
|
LIST_PUBLISHED: "record_replay_list_published"
|
|
134
134
|
}
|
|
135
135
|
};
|
|
136
|
+
var P_TAB_ID = "Tab id; omit to use the session work tab.";
|
|
137
|
+
var P_WINDOW_ID = "Window to pick the active tab from when tabId is omitted.";
|
|
138
|
+
var P_FRAME_ID = "Target frame id (iframe).";
|
|
139
|
+
var P_SELECTOR_TYPE = 'Selector type (default "css").';
|
|
140
|
+
var P_WAIT_FOR_ELEMENT_MS = "Ms to wait for the element to appear/become visible before failing (default 2000; 0 = fail now).";
|
|
141
|
+
var P_BACKGROUND = "Do not activate the tab or focus the window (default false).";
|
|
142
|
+
var tabIdProp = { type: "number", description: P_TAB_ID };
|
|
143
|
+
var windowIdProp = { type: "number", description: P_WINDOW_ID };
|
|
144
|
+
var frameIdProp = { type: "number", description: P_FRAME_ID };
|
|
145
|
+
var selectorTypeProp = {
|
|
146
|
+
type: "string",
|
|
147
|
+
enum: ["css", "xpath"],
|
|
148
|
+
description: P_SELECTOR_TYPE
|
|
149
|
+
};
|
|
150
|
+
var waitForElementMsProp = { type: "number", description: P_WAIT_FOR_ELEMENT_MS };
|
|
151
|
+
var backgroundProp = { type: "boolean", description: P_BACKGROUND };
|
|
136
152
|
var TOOL_SCHEMAS = [
|
|
137
153
|
{
|
|
138
154
|
name: TOOL_NAMES.BROWSER.BATCH,
|
|
139
|
-
description: "
|
|
155
|
+
description: "Run several browser steps in ONE call (fewer round-trips for chains like click -> fill -> screenshot). Steps target the session work tab. Cannot nest chrome_batch or interactive tools (switch_tab, element selection, consent). Stops on first error unless continueOnError. Returns per-step JSON.",
|
|
140
156
|
inputSchema: {
|
|
141
157
|
type: "object",
|
|
142
158
|
properties: {
|
|
143
159
|
steps: {
|
|
144
160
|
type: "array",
|
|
145
|
-
description: "Steps
|
|
161
|
+
description: "Steps in order (max 20). Each: { tool: string, args?: object }",
|
|
146
162
|
items: {
|
|
147
163
|
type: "object",
|
|
148
164
|
properties: {
|
|
@@ -154,7 +170,7 @@ var TOOL_SCHEMAS = [
|
|
|
154
170
|
},
|
|
155
171
|
continueOnError: {
|
|
156
172
|
type: "boolean",
|
|
157
|
-
description: "
|
|
173
|
+
description: "Keep running after a step fails (default false)"
|
|
158
174
|
}
|
|
159
175
|
},
|
|
160
176
|
required: ["steps"]
|
|
@@ -162,7 +178,7 @@ var TOOL_SCHEMAS = [
|
|
|
162
178
|
},
|
|
163
179
|
{
|
|
164
180
|
name: TOOL_NAMES.BROWSER.FIND,
|
|
165
|
-
description: 'Find elements
|
|
181
|
+
description: 'Find elements by natural-language query (Korean/English, e.g. "\uB85C\uADF8\uC778 \uBC84\uD2BC", "search input"). Returns ranked candidates with ref (usable in chrome_click_element / chrome_fill_or_select), role, name, coordinates, frameId. Cheaper than reading the whole page when you know the target.',
|
|
166
182
|
inputSchema: {
|
|
167
183
|
type: "object",
|
|
168
184
|
properties: {
|
|
@@ -170,11 +186,8 @@ var TOOL_SCHEMAS = [
|
|
|
170
186
|
type: "string",
|
|
171
187
|
description: "Natural language description of the element (Korean/English)"
|
|
172
188
|
},
|
|
173
|
-
tabId:
|
|
174
|
-
|
|
175
|
-
description: "Optional target tab id. Defaults to the MCP work tab (background work mode) or the active tab."
|
|
176
|
-
},
|
|
177
|
-
maxResults: { type: "number", description: "Max candidates to return (default 5, max 20)" },
|
|
189
|
+
tabId: tabIdProp,
|
|
190
|
+
maxResults: { type: "number", description: "Max candidates (default 5, max 20)" },
|
|
178
191
|
allFrames: {
|
|
179
192
|
type: "boolean",
|
|
180
193
|
description: "Also search inside iframes (default true)"
|
|
@@ -185,7 +198,7 @@ var TOOL_SCHEMAS = [
|
|
|
185
198
|
},
|
|
186
199
|
{
|
|
187
200
|
name: TOOL_NAMES.BROWSER.SHORTCUT,
|
|
188
|
-
description:
|
|
201
|
+
description: "Save and run named macros (a chrome_batch step list stored under a name). action: save {name, steps, description} | run (through the normal pipeline) | list | delete. Use for flows you repeat across sessions (logins, routine collection).",
|
|
189
202
|
inputSchema: {
|
|
190
203
|
type: "object",
|
|
191
204
|
properties: {
|
|
@@ -197,7 +210,7 @@ var TOOL_SCHEMAS = [
|
|
|
197
210
|
name: { type: "string", description: "Shortcut name (save/run/delete)" },
|
|
198
211
|
steps: {
|
|
199
212
|
type: "array",
|
|
200
|
-
description: '
|
|
213
|
+
description: 'action="save": chrome_batch steps, max 20. Each: { tool: string, args?: object }',
|
|
201
214
|
items: {
|
|
202
215
|
type: "object",
|
|
203
216
|
properties: {
|
|
@@ -207,10 +220,10 @@ var TOOL_SCHEMAS = [
|
|
|
207
220
|
required: ["tool"]
|
|
208
221
|
}
|
|
209
222
|
},
|
|
210
|
-
description: { type: "string", description: '
|
|
223
|
+
description: { type: "string", description: 'action="save": what this shortcut does' },
|
|
211
224
|
continueOnError: {
|
|
212
225
|
type: "boolean",
|
|
213
|
-
description: '
|
|
226
|
+
description: 'action="run": keep running after a failure (default false)'
|
|
214
227
|
}
|
|
215
228
|
},
|
|
216
229
|
required: ["action"]
|
|
@@ -218,36 +231,27 @@ var TOOL_SCHEMAS = [
|
|
|
218
231
|
},
|
|
219
232
|
{
|
|
220
233
|
name: TOOL_NAMES.BROWSER.EXTRACT,
|
|
221
|
-
description: "Extract ONLY the fields you need
|
|
234
|
+
description: "Extract ONLY the fields you need via CSS selectors, far cheaper than reading the whole page (e.g. price, title, links). Prefer over chrome_get_web_content / chrome_read_page for targeted scraping.",
|
|
222
235
|
inputSchema: {
|
|
223
236
|
type: "object",
|
|
224
237
|
properties: {
|
|
225
|
-
tabId:
|
|
226
|
-
type: "number",
|
|
227
|
-
description: "Optional target tab id. Defaults to the MCP work tab (background work mode) or the active tab."
|
|
228
|
-
},
|
|
238
|
+
tabId: tabIdProp,
|
|
229
239
|
fields: {
|
|
230
240
|
type: "object",
|
|
231
|
-
description: "Map of fieldName
|
|
241
|
+
description: "Map of fieldName -> CSS selector (string) or { selector, attr?, all? }. Default = trimmed innerText of first match; attr returns that attribute (href/src become absolute URLs); all:true returns an array over every match (max 100, 2000 chars each). Max 20 fields."
|
|
232
242
|
},
|
|
233
|
-
frameId:
|
|
234
|
-
type: "number",
|
|
235
|
-
description: "Optional frame id to extract from a specific iframe."
|
|
236
|
-
}
|
|
243
|
+
frameId: frameIdProp
|
|
237
244
|
},
|
|
238
245
|
required: ["fields"]
|
|
239
246
|
}
|
|
240
247
|
},
|
|
241
248
|
{
|
|
242
249
|
name: TOOL_NAMES.BROWSER.WAIT_FOR,
|
|
243
|
-
description: 'Wait until the page is
|
|
250
|
+
description: 'Wait until the page is ready before acting, avoiding "acted too early" failures after navigation/clicks/AJAX. Conditions (AND-combined, at least one required): selector state, text appears, document ready, or network idle. A timeout returns success:false with the observed state (not an error).',
|
|
244
251
|
inputSchema: {
|
|
245
252
|
type: "object",
|
|
246
253
|
properties: {
|
|
247
|
-
tabId:
|
|
248
|
-
type: "number",
|
|
249
|
-
description: "Optional target tab id. Defaults to the MCP work tab (background work mode) or the active tab."
|
|
250
|
-
},
|
|
254
|
+
tabId: tabIdProp,
|
|
251
255
|
selector: { type: "string", description: "CSS selector to wait for" },
|
|
252
256
|
state: {
|
|
253
257
|
type: "string",
|
|
@@ -261,7 +265,7 @@ var TOOL_SCHEMAS = [
|
|
|
261
265
|
},
|
|
262
266
|
networkIdleMs: {
|
|
263
267
|
type: "number",
|
|
264
|
-
description: "Wait until
|
|
268
|
+
description: "Wait until no in-flight requests for this many ms (e.g. 500)"
|
|
265
269
|
},
|
|
266
270
|
timeoutMs: { type: "number", description: "Max wait (default 15000, max 60000)" },
|
|
267
271
|
pollMs: { type: "number", description: "Poll interval (default 250, min 100)" }
|
|
@@ -271,18 +275,15 @@ var TOOL_SCHEMAS = [
|
|
|
271
275
|
},
|
|
272
276
|
{
|
|
273
277
|
name: TOOL_NAMES.BROWSER.SCROLL_COLLECT,
|
|
274
|
-
description: "Collect content from infinite-scroll / lazy-loaded pages in ONE call: repeatedly scrolls to the bottom (window or a container
|
|
278
|
+
description: "Collect content from infinite-scroll / lazy-loaded pages in ONE call: repeatedly scrolls to the bottom (window or a container), waits for new content, returns accumulated text or links. Stops when the page stops growing, stopText appears, or maxScrolls/maxChars is reached.",
|
|
275
279
|
inputSchema: {
|
|
276
280
|
type: "object",
|
|
277
281
|
properties: {
|
|
278
|
-
tabId:
|
|
279
|
-
type: "number",
|
|
280
|
-
description: "Optional target tab id. Defaults to the MCP work tab (background work mode) or the active tab."
|
|
281
|
-
},
|
|
282
|
+
tabId: tabIdProp,
|
|
282
283
|
maxScrolls: { type: "number", description: "Max scroll passes (default 10, max 30)" },
|
|
283
284
|
delayMs: {
|
|
284
285
|
type: "number",
|
|
285
|
-
description: "Wait after each scroll for content to load (default 700, 200
|
|
286
|
+
description: "Wait after each scroll for content to load (default 700, 200-3000)"
|
|
286
287
|
},
|
|
287
288
|
containerSelector: {
|
|
288
289
|
type: "string",
|
|
@@ -298,7 +299,7 @@ var TOOL_SCHEMAS = [
|
|
|
298
299
|
renderMode: {
|
|
299
300
|
type: "string",
|
|
300
301
|
enum: ["auto", "force", "off"],
|
|
301
|
-
description: "Keep a background tab rendering so lazy loading
|
|
302
|
+
description: "Keep a background tab rendering so lazy loading fires (inactive tabs stop producing frames, so IntersectionObserver never triggers). 'auto' (default) = only when hidden, 'force' = always, 'off' = never. Uses CDP (shows a debug infobar)."
|
|
302
303
|
}
|
|
303
304
|
},
|
|
304
305
|
required: []
|
|
@@ -306,7 +307,7 @@ var TOOL_SCHEMAS = [
|
|
|
306
307
|
},
|
|
307
308
|
{
|
|
308
309
|
name: TOOL_NAMES.BROWSER.SET_WORK_TAB,
|
|
309
|
-
description: "Retarget this session's default work tab WITHOUT
|
|
310
|
+
description: "Retarget this session's default work tab WITHOUT focusing anything (unlike chrome_switch_tab). Use when a result reports new_tabs_opened (a popup/new tab, e.g. OAuth) so later tabId-less calls target it; call again with the original tabId to return. No args = report current; clear:true = unset.",
|
|
310
311
|
inputSchema: {
|
|
311
312
|
type: "object",
|
|
312
313
|
properties: {
|
|
@@ -324,139 +325,109 @@ var TOOL_SCHEMAS = [
|
|
|
324
325
|
},
|
|
325
326
|
{
|
|
326
327
|
name: TOOL_NAMES.BROWSER.GET_WINDOWS_AND_TABS,
|
|
327
|
-
description: "Get all
|
|
328
|
+
description: "Get all open windows and tabs. Marks MCP session work tabs (mcpWorkTabSessions), the dedicated MCP work window (isMcpWorkWindow), and tabs recently spawned by page actions like popups (recentlySpawned with openerTabId).",
|
|
328
329
|
inputSchema: {
|
|
329
330
|
type: "object",
|
|
330
331
|
properties: {},
|
|
331
332
|
required: []
|
|
332
333
|
}
|
|
333
334
|
},
|
|
335
|
+
// record_replay 두 도구는 **의도적으로 MCP 에 노출하지 않는다** (2026-09-04 Codex 3차 검토, 항목 3).
|
|
336
|
+
//
|
|
337
|
+
// replay 엔진은 대상 탭을 스스로 고른다 — rr-utils 의 ensureTab() 이 tabTarget 미지정·'current'
|
|
338
|
+
// 에서 사용자의 활성 탭을 잡고, legacy step executor 와 대부분의 노드(click·fill·extract·
|
|
339
|
+
// assert·script·wait·drag 등)가 ctx.tabId 를 무시하고 같은 조회를 다시 한다(엔진·노드 전체
|
|
340
|
+
// 28곳/16파일). 그래서 백그라운드 작업 게이트가 작업 탭 id 를 주입해도 소비하는 지점이 없고,
|
|
341
|
+
// flow_run 호출이 사용자가 보고 있는 탭을 조작한다. 엔진이 ctx.tabId 를 존중하도록 고치기 전에는
|
|
342
|
+
// 노출하지 않으며, 확장의 게이트도 백그라운드 모드에서 flow_run 을 거절한다
|
|
343
|
+
// (utils/work-tab-gate.ts 의 BACKGROUND_MODE_UNSUPPORTED_TOOLS).
|
|
344
|
+
//
|
|
334
345
|
// {
|
|
335
346
|
// name: TOOL_NAMES.RECORD_REPLAY.FLOW_RUN,
|
|
336
|
-
//
|
|
337
|
-
// 'Run a recorded flow by ID with optional variables and run options. Returns a standardized run result.',
|
|
338
|
-
// inputSchema: {
|
|
339
|
-
// type: 'object',
|
|
340
|
-
// properties: {
|
|
341
|
-
// flowId: { type: 'string', description: 'ID of the flow to run' },
|
|
342
|
-
// args: {
|
|
343
|
-
// type: 'object',
|
|
344
|
-
// description: 'Variable values for the flow (flat object of key/value)',
|
|
345
|
-
// },
|
|
346
|
-
// tabTarget: {
|
|
347
|
-
// type: 'string',
|
|
348
|
-
// description: "Target tab: 'current' or 'new' (default: current)",
|
|
349
|
-
// enum: ['current', 'new'],
|
|
350
|
-
// },
|
|
351
|
-
// refresh: { type: 'boolean', description: 'Refresh before running (default false)' },
|
|
352
|
-
// captureNetwork: {
|
|
353
|
-
// type: 'boolean',
|
|
354
|
-
// description: 'Capture network snippets for debugging (default false)',
|
|
355
|
-
// },
|
|
356
|
-
// returnLogs: { type: 'boolean', description: 'Return run logs (default false)' },
|
|
357
|
-
// timeoutMs: { type: 'number', description: 'Global timeout in ms (optional)' },
|
|
358
|
-
// startUrl: { type: 'string', description: 'Optional start URL to open before running' },
|
|
359
|
-
// },
|
|
360
|
-
// required: ['flowId'],
|
|
361
|
-
// },
|
|
347
|
+
// ...
|
|
362
348
|
// },
|
|
363
349
|
// {
|
|
364
350
|
// name: TOOL_NAMES.RECORD_REPLAY.LIST_PUBLISHED,
|
|
365
|
-
//
|
|
366
|
-
// inputSchema: {
|
|
367
|
-
// type: 'object',
|
|
368
|
-
// properties: {},
|
|
369
|
-
// required: [],
|
|
370
|
-
// },
|
|
351
|
+
// ...
|
|
371
352
|
// },
|
|
372
353
|
{
|
|
373
354
|
name: TOOL_NAMES.BROWSER.PERFORMANCE_START_TRACE,
|
|
374
|
-
description: "
|
|
355
|
+
description: "Start a performance trace on the selected page. Optionally reload and/or auto-stop after a short duration.",
|
|
375
356
|
inputSchema: {
|
|
376
357
|
type: "object",
|
|
377
358
|
properties: {
|
|
378
359
|
reload: {
|
|
379
360
|
type: "boolean",
|
|
380
|
-
description: "
|
|
361
|
+
description: "Reload the page (ignoring cache) once tracing starts."
|
|
381
362
|
},
|
|
382
363
|
autoStop: {
|
|
383
364
|
type: "boolean",
|
|
384
|
-
description: "
|
|
365
|
+
description: "Automatically stop the trace (default false)."
|
|
385
366
|
},
|
|
386
367
|
durationMs: {
|
|
387
368
|
type: "number",
|
|
388
|
-
description: "Auto-stop duration in
|
|
369
|
+
description: "Auto-stop duration in ms when autoStop is true (default 5000)."
|
|
389
370
|
},
|
|
390
|
-
tabId:
|
|
391
|
-
type: "number",
|
|
392
|
-
description: "Optional target tab id. Defaults to the MCP work tab (background work mode) or the active tab."
|
|
393
|
-
}
|
|
371
|
+
tabId: tabIdProp
|
|
394
372
|
},
|
|
395
373
|
required: []
|
|
396
374
|
}
|
|
397
375
|
},
|
|
398
376
|
{
|
|
399
377
|
name: TOOL_NAMES.BROWSER.PERFORMANCE_STOP_TRACE,
|
|
400
|
-
description: "
|
|
378
|
+
description: "Stop the active performance trace on the selected page.",
|
|
401
379
|
inputSchema: {
|
|
402
380
|
type: "object",
|
|
403
381
|
properties: {
|
|
404
382
|
saveToDownloads: {
|
|
405
383
|
type: "boolean",
|
|
406
|
-
description: "
|
|
384
|
+
description: "Save the trace as a JSON file in Downloads (default true)."
|
|
407
385
|
},
|
|
408
386
|
filenamePrefix: {
|
|
409
387
|
type: "string",
|
|
410
388
|
description: "Optional filename prefix for the downloaded trace JSON."
|
|
411
389
|
},
|
|
412
|
-
tabId:
|
|
413
|
-
type: "number",
|
|
414
|
-
description: "Optional target tab id. Defaults to the MCP work tab (background work mode) or the active tab."
|
|
415
|
-
}
|
|
390
|
+
tabId: tabIdProp
|
|
416
391
|
},
|
|
417
392
|
required: []
|
|
418
393
|
}
|
|
419
394
|
},
|
|
420
395
|
{
|
|
421
396
|
name: TOOL_NAMES.BROWSER.PERFORMANCE_ANALYZE_INSIGHT,
|
|
422
|
-
description: "
|
|
397
|
+
description: "Lightweight summary of the last recorded trace. Deep insights (CWV, breakdowns) need the native DevTools trace engine.",
|
|
423
398
|
inputSchema: {
|
|
424
399
|
type: "object",
|
|
425
400
|
properties: {
|
|
426
401
|
insightName: {
|
|
427
402
|
type: "string",
|
|
428
|
-
description: '
|
|
403
|
+
description: 'Insight name for future deep analysis (e.g. "DocumentLatency").'
|
|
429
404
|
},
|
|
430
405
|
timeoutMs: {
|
|
431
406
|
type: "number",
|
|
432
|
-
description: "
|
|
407
|
+
description: "Native-host deep-analysis timeout in ms (default 60000)."
|
|
433
408
|
},
|
|
434
|
-
tabId:
|
|
435
|
-
type: "number",
|
|
436
|
-
description: "Optional target tab id. Defaults to the MCP work tab (background work mode) or the active tab."
|
|
437
|
-
}
|
|
409
|
+
tabId: tabIdProp
|
|
438
410
|
},
|
|
439
411
|
required: []
|
|
440
412
|
}
|
|
441
413
|
},
|
|
442
414
|
{
|
|
443
415
|
name: TOOL_NAMES.BROWSER.READ_PAGE,
|
|
444
|
-
description:
|
|
445
|
-
Tip: If the returned elements do not include the specific element you need, use the computer tool's screenshot (action="screenshot") to capture the element's on-screen coordinates, then operate by coordinates.`,
|
|
416
|
+
description: 'Accessibility-tree view of the elements visible in the viewport; optional interactive-only filter. Prefer over a screenshot for locating/acting on elements; use chrome_extract for known fields, chrome_find for a natural-language lookup.\nCompact format (default, lossless): 1 space indent per tree level; the bare token ref_N is the element ref (pass as refId, or as ref to click/fill/computer); @x,y is the element center; empty wrappers collapsed. compact:false for verbose. With allFrames, sections read "=== frame <frameId> | <url> ===" and refs inside are frame-local (pass that frameId).\nIf an element is missing, screenshot (chrome_computer action="screenshot") for its coordinates. markedElements are user-marked with highest priority.',
|
|
446
417
|
inputSchema: {
|
|
447
418
|
type: "object",
|
|
448
419
|
properties: {
|
|
449
420
|
filter: {
|
|
450
421
|
type: "string",
|
|
451
|
-
description: '
|
|
422
|
+
description: '"interactive" for buttons/links/inputs only (default: all visible elements)'
|
|
452
423
|
},
|
|
453
424
|
depth: {
|
|
454
425
|
type: "number",
|
|
455
|
-
description: "
|
|
426
|
+
description: "Max DOM depth to traverse (integer >= 0). Lower = smaller output."
|
|
456
427
|
},
|
|
457
428
|
refId: {
|
|
458
429
|
type: "string",
|
|
459
|
-
description: 'Focus on the subtree
|
|
430
|
+
description: 'Focus on the subtree at this refId (e.g. "ref_12"), from a recent read of the same tab (refs may expire).'
|
|
460
431
|
},
|
|
461
432
|
tabId: {
|
|
462
433
|
type: "number",
|
|
@@ -468,15 +439,15 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
468
439
|
},
|
|
469
440
|
allFrames: {
|
|
470
441
|
type: "boolean",
|
|
471
|
-
description: "Also collect
|
|
442
|
+
description: "Also collect from iframes (merged, annotated with frameId). Default: false"
|
|
472
443
|
},
|
|
473
444
|
diff: {
|
|
474
445
|
type: "boolean",
|
|
475
|
-
description: "When true (default), returns {unchanged:true}
|
|
446
|
+
description: "When true (default), returns {unchanged:true} if the page is identical to your last read; false forces re-send."
|
|
476
447
|
},
|
|
477
448
|
compact: {
|
|
478
449
|
type: "boolean",
|
|
479
|
-
description: "Lossless
|
|
450
|
+
description: "Lossless compaction (~30-50% smaller). Default: true; false for verbose."
|
|
480
451
|
}
|
|
481
452
|
},
|
|
482
453
|
required: []
|
|
@@ -484,34 +455,34 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
484
455
|
},
|
|
485
456
|
{
|
|
486
457
|
name: TOOL_NAMES.BROWSER.COMPUTER,
|
|
487
|
-
description: "
|
|
458
|
+
description: "Mouse/keyboard interaction and screenshots. Before clicking (especially an icon), get its ref from chrome_read_page. If a click misses, screenshot and aim the cursor tip at the target center.",
|
|
488
459
|
inputSchema: {
|
|
489
460
|
type: "object",
|
|
490
461
|
properties: {
|
|
491
462
|
tabId: { type: "number", description: "Target tab ID (default: active tab)" },
|
|
492
463
|
background: {
|
|
493
464
|
type: "boolean",
|
|
494
|
-
description: "Avoid focusing/activating tab
|
|
465
|
+
description: "Avoid focusing/activating the tab or window where possible. Default: false"
|
|
495
466
|
},
|
|
496
467
|
fullResolution: {
|
|
497
468
|
type: "boolean",
|
|
498
|
-
description:
|
|
469
|
+
description: "screenshot/zoom: skip the <=1568px downscale (default false)"
|
|
499
470
|
},
|
|
500
471
|
action: {
|
|
501
472
|
type: "string",
|
|
502
|
-
description: "Action
|
|
473
|
+
description: "Action: 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"
|
|
503
474
|
},
|
|
504
475
|
ref: {
|
|
505
476
|
type: "string",
|
|
506
|
-
description: "Element ref from chrome_read_page
|
|
477
|
+
description: "Element ref from chrome_read_page (click/scroll/key/type, drag end); beats coordinates."
|
|
507
478
|
},
|
|
508
479
|
coordinates: {
|
|
509
480
|
type: "object",
|
|
510
481
|
properties: {
|
|
511
|
-
x: { type: "number"
|
|
512
|
-
y: { type: "number"
|
|
482
|
+
x: { type: "number" },
|
|
483
|
+
y: { type: "number" }
|
|
513
484
|
},
|
|
514
|
-
description: "
|
|
485
|
+
description: "Screenshot-space if a recent screenshot exists, else viewport. Required for click/scroll and the drag end."
|
|
515
486
|
},
|
|
516
487
|
startCoordinates: {
|
|
517
488
|
type: "object",
|
|
@@ -519,15 +490,15 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
519
490
|
x: { type: "number" },
|
|
520
491
|
y: { type: "number" }
|
|
521
492
|
},
|
|
522
|
-
description: "Starting coordinates for drag
|
|
493
|
+
description: "Starting coordinates for drag."
|
|
523
494
|
},
|
|
524
495
|
startRef: {
|
|
525
496
|
type: "string",
|
|
526
|
-
description: "Drag start ref
|
|
497
|
+
description: "Drag start ref (alternative to startCoordinates)."
|
|
527
498
|
},
|
|
528
499
|
scrollDirection: {
|
|
529
500
|
type: "string",
|
|
530
|
-
description: "Scroll direction: up
|
|
501
|
+
description: "Scroll direction: up|down|left|right"
|
|
531
502
|
},
|
|
532
503
|
scrollAmount: {
|
|
533
504
|
type: "number",
|
|
@@ -535,15 +506,15 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
535
506
|
},
|
|
536
507
|
text: {
|
|
537
508
|
type: "string",
|
|
538
|
-
description: 'Text to type (
|
|
509
|
+
description: 'Text to type (action=type), or space-separated keys/chords (action=key, e.g. "Backspace Enter", "cmd+a")'
|
|
539
510
|
},
|
|
540
511
|
repeat: {
|
|
541
512
|
type: "number",
|
|
542
|
-
description: "
|
|
513
|
+
description: "action=key: repeat (1-100, default 1)."
|
|
543
514
|
},
|
|
544
515
|
modifiers: {
|
|
545
516
|
type: "object",
|
|
546
|
-
description: "Modifier keys for
|
|
517
|
+
description: "Modifier keys for clicks.",
|
|
547
518
|
properties: {
|
|
548
519
|
altKey: { type: "boolean" },
|
|
549
520
|
ctrlKey: { type: "boolean" },
|
|
@@ -553,7 +524,7 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
553
524
|
},
|
|
554
525
|
region: {
|
|
555
526
|
type: "object",
|
|
556
|
-
description: "
|
|
527
|
+
description: "action=zoom: region (x0,y0)-(x1,y1) in viewport px (or screenshot-space if a recent screenshot exists).",
|
|
557
528
|
properties: {
|
|
558
529
|
x0: { type: "number" },
|
|
559
530
|
y0: { type: "number" },
|
|
@@ -569,29 +540,29 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
569
540
|
},
|
|
570
541
|
value: {
|
|
571
542
|
oneOf: [{ type: "string" }, { type: "boolean" }, { type: "number" }],
|
|
572
|
-
description: "Value
|
|
543
|
+
description: "Value for action=fill (string|boolean|number)"
|
|
573
544
|
},
|
|
574
545
|
elements: {
|
|
575
546
|
type: "array",
|
|
576
|
-
description: "
|
|
547
|
+
description: "action=fill_form: elements to fill (ref + value)",
|
|
577
548
|
items: {
|
|
578
549
|
type: "object",
|
|
579
550
|
properties: {
|
|
580
551
|
ref: { type: "string", description: "Element ref from chrome_read_page" },
|
|
581
|
-
value: { type: "string", description: "Value to set (stringified if non-string)" }
|
|
552
|
+
value: { type: "string", description: "Value to set (stringified if non-string)." }
|
|
582
553
|
},
|
|
583
554
|
required: ["ref", "value"]
|
|
584
555
|
}
|
|
585
556
|
},
|
|
586
|
-
width: { type: "number", description: "
|
|
587
|
-
height: { type: "number", description: "
|
|
557
|
+
width: { type: "number", description: "action=resize_page: viewport width" },
|
|
558
|
+
height: { type: "number", description: "action=resize_page: viewport height" },
|
|
588
559
|
appear: {
|
|
589
560
|
type: "boolean",
|
|
590
|
-
description: "
|
|
561
|
+
description: "action=wait+text: appear (true, default) or disappear (false)"
|
|
591
562
|
},
|
|
592
563
|
timeout: {
|
|
593
564
|
type: "number",
|
|
594
|
-
description: "
|
|
565
|
+
description: "action=wait+text: timeout in ms (default 10000, max 120000)"
|
|
595
566
|
},
|
|
596
567
|
duration: {
|
|
597
568
|
type: "number",
|
|
@@ -601,133 +572,53 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
601
572
|
required: ["action"]
|
|
602
573
|
}
|
|
603
574
|
},
|
|
604
|
-
// {
|
|
605
|
-
// name: TOOL_NAMES.BROWSER.USERSCRIPT,
|
|
606
|
-
// description:
|
|
607
|
-
// 'Unified userscript tool (create/list/get/enable/disable/update/remove/send_command/export). Paste JS/CSS/Tampermonkey script and the system will auto-select the best strategy (insertCSS / persistent script in ISOLATED or MAIN world / once by CDP) with CSP-aware fallbacks.',
|
|
608
|
-
// inputSchema: {
|
|
609
|
-
// type: 'object',
|
|
610
|
-
// properties: {
|
|
611
|
-
// action: {
|
|
612
|
-
// type: 'string',
|
|
613
|
-
// description:
|
|
614
|
-
// 'Operation to perform',
|
|
615
|
-
// enum: [
|
|
616
|
-
// 'create',
|
|
617
|
-
// 'list',
|
|
618
|
-
// 'get',
|
|
619
|
-
// 'enable',
|
|
620
|
-
// 'disable',
|
|
621
|
-
// 'update',
|
|
622
|
-
// 'remove',
|
|
623
|
-
// 'send_command',
|
|
624
|
-
// 'export',
|
|
625
|
-
// ],
|
|
626
|
-
// },
|
|
627
|
-
// args: {
|
|
628
|
-
// type: 'object',
|
|
629
|
-
// description:
|
|
630
|
-
// 'Arguments for the specified action.\n- create: { script (required), name?, description?, matches?: string[], excludes?: string[], persist?: boolean (default true), runAt?: "document_start"|"document_end"|"document_idle"|"auto", world?: "auto"|"ISOLATED"|"MAIN", allFrames?: boolean (default true), mode?: "auto"|"css"|"persistent"|"once", dnrFallback?: boolean (default true), tags?: string[] }\n- list: { query?: string, status?: "enabled"|"disabled", domain?: string }\n- get: { id (required) }\n- enable/disable: { id (required) }\n- update: { id (required), script?, name?, description?, matches?, excludes?, runAt?, world?, allFrames?, persist?, dnrFallback?, tags? }\n- remove: { id (required) }\n- send_command: { id (required), payload?: string, tabId?: number }\n- export: {}\nTip: For a one-off execution that returns a value, use create with args.mode="once". The returned value is included as onceResult in the tool response.',
|
|
631
|
-
// properties: {
|
|
632
|
-
// // Common identifiers
|
|
633
|
-
// id: { type: 'string', description: 'Userscript id (for get/enable/disable/update/remove/send_command)' },
|
|
634
|
-
// // Create / Update fields
|
|
635
|
-
// script: { type: 'string', description: 'JS/CSS/Tampermonkey script source (required for create)' },
|
|
636
|
-
// name: { type: 'string', description: 'Userscript name (optional)' },
|
|
637
|
-
// description: { type: 'string', description: 'Userscript description (optional)' },
|
|
638
|
-
// matches: {
|
|
639
|
-
// type: 'array',
|
|
640
|
-
// items: { type: 'string' },
|
|
641
|
-
// description: 'Match patterns for pages to apply to (e.g., https://*.example.com/*)'
|
|
642
|
-
// },
|
|
643
|
-
// excludes: {
|
|
644
|
-
// type: 'array',
|
|
645
|
-
// items: { type: 'string' },
|
|
646
|
-
// description: 'Exclude patterns'
|
|
647
|
-
// },
|
|
648
|
-
// persist: { type: 'boolean', description: 'Persist userscript for matched pages (default true)' },
|
|
649
|
-
// runAt: {
|
|
650
|
-
// type: 'string',
|
|
651
|
-
// description: 'Injection timing',
|
|
652
|
-
// enum: ['document_start', 'document_end', 'document_idle', 'auto'],
|
|
653
|
-
// },
|
|
654
|
-
// world: {
|
|
655
|
-
// type: 'string',
|
|
656
|
-
// description: 'Execution world',
|
|
657
|
-
// enum: ['auto', 'ISOLATED', 'MAIN'],
|
|
658
|
-
// },
|
|
659
|
-
// allFrames: { type: 'boolean', description: 'Inject into all frames (default true)' },
|
|
660
|
-
// mode: {
|
|
661
|
-
// type: 'string',
|
|
662
|
-
// description:
|
|
663
|
-
// 'Injection strategy: auto | css | persistent | once. Use once to evaluate immediately (no persistence) and include the return value in onceResult.',
|
|
664
|
-
// enum: ['auto', 'css', 'persistent', 'once'],
|
|
665
|
-
// },
|
|
666
|
-
// dnrFallback: { type: 'boolean', description: 'Use DNR fallback when needed (default true)' },
|
|
667
|
-
// tags: { type: 'array', items: { type: 'string' }, description: 'Custom tags' },
|
|
668
|
-
// // List filters
|
|
669
|
-
// query: { type: 'string', description: 'Search by name/description (list action)' },
|
|
670
|
-
// status: { type: 'string', enum: ['enabled', 'disabled'], description: 'Filter by status (list action)' },
|
|
671
|
-
// domain: { type: 'string', description: 'Filter by domain (list action)' },
|
|
672
|
-
// // Send command
|
|
673
|
-
// payload: { type: 'string', description: 'Arbitrary payload (stringified) for send_command' },
|
|
674
|
-
// tabId: { type: 'number', description: 'Target tab for send_command (default active tab)' },
|
|
675
|
-
// },
|
|
676
|
-
// },
|
|
677
|
-
// },
|
|
678
|
-
// required: ['action'],
|
|
679
|
-
// },
|
|
680
|
-
// },
|
|
681
575
|
{
|
|
682
576
|
name: TOOL_NAMES.BROWSER.NAVIGATE,
|
|
683
|
-
description: "Navigate to a URL, refresh the current tab, or
|
|
577
|
+
description: "Navigate to a URL, refresh the current tab, or go back/forward in history",
|
|
684
578
|
inputSchema: {
|
|
685
579
|
type: "object",
|
|
686
580
|
properties: {
|
|
687
581
|
url: {
|
|
688
582
|
type: "string",
|
|
689
|
-
description: 'URL to navigate to. Special values
|
|
583
|
+
description: 'URL to navigate to. Special values "back"/"forward" navigate history in the target tab.'
|
|
690
584
|
},
|
|
691
585
|
newWindow: {
|
|
692
586
|
type: "boolean",
|
|
693
|
-
description: "Create a new window
|
|
587
|
+
description: "Create a new window for the URL (default false)."
|
|
694
588
|
},
|
|
695
589
|
waitUntil: {
|
|
696
590
|
type: "string",
|
|
697
591
|
enum: ["none", "domcontentloaded", "load", "networkidle"],
|
|
698
|
-
description: 'How far to wait
|
|
592
|
+
description: 'How far to wait before returning. Default "domcontentloaded" (avoids reading an empty page); "networkidle" for data-heavy SPAs, "none" to return immediately. The observed load state is reported back (a timeout is reported, not an error).'
|
|
699
593
|
},
|
|
700
594
|
waitTimeoutMs: {
|
|
701
595
|
type: "number",
|
|
702
|
-
description: "Max
|
|
596
|
+
description: "Max wait for waitUntil (default 15000, max 60000)."
|
|
703
597
|
},
|
|
704
598
|
tabId: {
|
|
705
599
|
type: "number",
|
|
706
|
-
description: "
|
|
600
|
+
description: "Navigate/refresh/back/forward this existing tab instead of the active tab."
|
|
707
601
|
},
|
|
708
602
|
windowId: {
|
|
709
603
|
type: "number",
|
|
710
|
-
description: "
|
|
711
|
-
},
|
|
712
|
-
background: {
|
|
713
|
-
type: "boolean",
|
|
714
|
-
description: "Perform the operation without stealing focus (do not activate the tab or focus the window). Default: false"
|
|
604
|
+
description: "Existing window for a new tab, or to pick the active tab when tabId is omitted."
|
|
715
605
|
},
|
|
606
|
+
background: backgroundProp,
|
|
716
607
|
newTab: {
|
|
717
608
|
type: "boolean",
|
|
718
|
-
description: "Force a brand-new tab. By default
|
|
609
|
+
description: "Force a brand-new tab. By default the session works in ONE tab: an existing MCP work tab is navigated instead of piling up tabs. Tabs set via chrome_set_work_tab are never reused this way."
|
|
719
610
|
},
|
|
720
611
|
width: {
|
|
721
612
|
type: "number",
|
|
722
|
-
description: "Window width
|
|
613
|
+
description: "Window width px (default 1280). Providing width or height creates a new window."
|
|
723
614
|
},
|
|
724
615
|
height: {
|
|
725
616
|
type: "number",
|
|
726
|
-
description: "Window height
|
|
617
|
+
description: "Window height px (default 720). Providing width or height creates a new window."
|
|
727
618
|
},
|
|
728
619
|
refresh: {
|
|
729
620
|
type: "boolean",
|
|
730
|
-
description: "Refresh the
|
|
621
|
+
description: "Refresh the active tab instead of navigating (url ignored). Default false."
|
|
731
622
|
}
|
|
732
623
|
},
|
|
733
624
|
required: []
|
|
@@ -735,7 +626,7 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
735
626
|
},
|
|
736
627
|
{
|
|
737
628
|
name: TOOL_NAMES.BROWSER.SCREENSHOT,
|
|
738
|
-
description: '[Prefer
|
|
629
|
+
description: '[Prefer chrome_read_page, or chrome_computer action="screenshot"] Take a screenshot of the page or an element. Use this tool only when you need its advanced options.',
|
|
739
630
|
inputSchema: {
|
|
740
631
|
type: "object",
|
|
741
632
|
properties: {
|
|
@@ -747,21 +638,21 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
747
638
|
},
|
|
748
639
|
windowId: {
|
|
749
640
|
type: "number",
|
|
750
|
-
description: "Target window ID to pick active tab
|
|
641
|
+
description: "Target window ID to pick active tab when tabId is not provided."
|
|
751
642
|
},
|
|
752
643
|
background: {
|
|
753
644
|
type: "boolean",
|
|
754
|
-
description: "
|
|
645
|
+
description: "Capture without bringing the tab/window to the foreground. For element/full-page capture the tab may still be activated in its window without focusing it. Default: false"
|
|
755
646
|
},
|
|
756
647
|
width: { type: "number", description: "Width in pixels (default: 800)" },
|
|
757
648
|
height: { type: "number", description: "Height in pixels (default: 600)" },
|
|
758
649
|
storeBase64: {
|
|
759
650
|
type: "boolean",
|
|
760
|
-
description: "Return the
|
|
651
|
+
description: "Return the image as an MCP image content block (default: false). Auto-downscaled to <=1568px long edge (metadata reports imageScale); pass fullResolution:true to skip."
|
|
761
652
|
},
|
|
762
653
|
fullResolution: {
|
|
763
654
|
type: "boolean",
|
|
764
|
-
description: "Skip the
|
|
655
|
+
description: "Skip the <=1568px downscale for the returned image (default: false)"
|
|
765
656
|
},
|
|
766
657
|
fullPage: {
|
|
767
658
|
type: "boolean",
|
|
@@ -769,15 +660,15 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
769
660
|
},
|
|
770
661
|
savePng: {
|
|
771
662
|
type: "boolean",
|
|
772
|
-
description: "Save
|
|
663
|
+
description: "Save as a PNG file (default: true). To see the page, set false and storeBase64 true."
|
|
773
664
|
},
|
|
774
665
|
saveToDownloads: {
|
|
775
666
|
type: "boolean",
|
|
776
|
-
description: "Also auto-save
|
|
667
|
+
description: "Also auto-save to Downloads/mcp-screenshots/ (default: false)"
|
|
777
668
|
},
|
|
778
669
|
filename: {
|
|
779
670
|
type: "string",
|
|
780
|
-
description: "Filename for saveToDownloads (sanitized,
|
|
671
|
+
description: "Filename for saveToDownloads (sanitized, under mcp-screenshots/)."
|
|
781
672
|
}
|
|
782
673
|
},
|
|
783
674
|
required: []
|
|
@@ -792,7 +683,7 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
792
683
|
tabIds: {
|
|
793
684
|
type: "array",
|
|
794
685
|
items: { type: "number" },
|
|
795
|
-
description: "
|
|
686
|
+
description: "Tab IDs to close. If not provided, closes the active tab."
|
|
796
687
|
},
|
|
797
688
|
url: {
|
|
798
689
|
type: "string",
|
|
@@ -804,7 +695,7 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
804
695
|
},
|
|
805
696
|
{
|
|
806
697
|
name: TOOL_NAMES.BROWSER.SWITCH_TAB,
|
|
807
|
-
description: "Bring a tab to the front (activates it and can take OS focus). Use ONLY when the user explicitly asked to switch/show a tab. To retarget automation
|
|
698
|
+
description: "Bring a tab to the front (activates it and can take OS focus). Use ONLY when the user explicitly asked to switch/show a tab. To retarget automation without disturbing the user, use chrome_set_work_tab; this tool is exempt from the no-interference gate, so it changes what the user sees.",
|
|
808
699
|
inputSchema: {
|
|
809
700
|
type: "object",
|
|
810
701
|
properties: {
|
|
@@ -822,45 +713,42 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
822
713
|
},
|
|
823
714
|
{
|
|
824
715
|
name: TOOL_NAMES.BROWSER.WEB_FETCHER,
|
|
825
|
-
description: "Read a page as text (reader view by default: nav/footer/cookie-banner noise stripped) or
|
|
716
|
+
description: "Read a page as text (reader view by default: nav/footer/cookie-banner noise stripped) or cleaned HTML. Repeat reads of an unchanged tab return {unchanged:true}; both modes are length-capped (report fullTextChars/fullHtmlChars vs returnedChars). For known fields prefer chrome_extract; for clicking/typing prefer chrome_read_page (returns refs); use this for the page content itself.",
|
|
826
717
|
inputSchema: {
|
|
827
718
|
type: "object",
|
|
828
719
|
properties: {
|
|
829
720
|
url: {
|
|
830
721
|
type: "string",
|
|
831
|
-
description: "URL to fetch
|
|
722
|
+
description: "URL to fetch. If not provided, uses the current active tab"
|
|
832
723
|
},
|
|
833
724
|
tabId: {
|
|
834
725
|
type: "number",
|
|
835
726
|
description: "Target an existing tab by ID (default: active tab)."
|
|
836
727
|
},
|
|
837
|
-
background:
|
|
838
|
-
type: "boolean",
|
|
839
|
-
description: "Do not activate tab/focus window while fetching (default: false)"
|
|
840
|
-
},
|
|
728
|
+
background: backgroundProp,
|
|
841
729
|
htmlContent: {
|
|
842
730
|
type: "boolean",
|
|
843
|
-
description: "Return cleaned HTML (scripts/styles/SVG stripped) instead of text. Much more expensive
|
|
731
|
+
description: "Return cleaned HTML (scripts/styles/SVG stripped) instead of text. Much more expensive; use only for markup/attributes and pair with selector. If true, textContent is ignored (default: false)"
|
|
844
732
|
},
|
|
845
733
|
textContent: {
|
|
846
734
|
type: "boolean",
|
|
847
|
-
description: "
|
|
735
|
+
description: "Visible text with metadata. Ignored if htmlContent is true (default true)"
|
|
848
736
|
},
|
|
849
737
|
selector: {
|
|
850
738
|
type: "string",
|
|
851
|
-
description: "CSS selector to
|
|
739
|
+
description: "CSS selector to return content from a specific element only."
|
|
852
740
|
},
|
|
853
741
|
maxChars: {
|
|
854
742
|
type: "number",
|
|
855
|
-
description: "Cap on returned HTML length (default 100000
|
|
743
|
+
description: "Cap on returned HTML length (default 100000, htmlContent mode only); reports truncated:true when cut."
|
|
856
744
|
},
|
|
857
745
|
raw: {
|
|
858
746
|
type: "boolean",
|
|
859
|
-
description: "Text mode
|
|
747
|
+
description: "Text mode: reader-view by default (noise stripped); true = unfiltered full text. Default false"
|
|
860
748
|
},
|
|
861
749
|
diff: {
|
|
862
750
|
type: "boolean",
|
|
863
|
-
description: "When true (default), returns {unchanged:true}
|
|
751
|
+
description: "When true (default), returns {unchanged:true} if identical to your last read (text/HTML tracked separately); false forces re-send."
|
|
864
752
|
}
|
|
865
753
|
},
|
|
866
754
|
required: []
|
|
@@ -894,11 +782,11 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
894
782
|
},
|
|
895
783
|
formData: {
|
|
896
784
|
type: "object",
|
|
897
|
-
description: "Multipart/form-data descriptor.
|
|
785
|
+
description: "Multipart/form-data descriptor. Overrides body and builds FormData with optional file attachments. Shape: { fields?: Record<string,string|number|boolean>, files?: Array<{ name, fileUrl?, filePath?, base64Data?, filename?, contentType? }> }. Also a compact array form: [ [name, fileSpec, filename?], ... ] where fileSpec is url:, file:, or base64:."
|
|
898
786
|
},
|
|
899
787
|
tabId: {
|
|
900
788
|
type: "number",
|
|
901
|
-
description: "
|
|
789
|
+
description: "Tab id whose browser context (cookies, origin) is used. Omit to use this session's work tab."
|
|
902
790
|
}
|
|
903
791
|
},
|
|
904
792
|
required: ["url"]
|
|
@@ -906,42 +794,39 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
906
794
|
},
|
|
907
795
|
{
|
|
908
796
|
name: TOOL_NAMES.BROWSER.NETWORK_CAPTURE,
|
|
909
|
-
description: 'Unified network capture
|
|
797
|
+
description: 'Unified network capture. action="start" begins, action="stop" ends and returns results. needResponseBody=true captures response bodies (Debugger API, may conflict with DevTools); the default webRequest mode is lightweight but has no response body.',
|
|
910
798
|
inputSchema: {
|
|
911
799
|
type: "object",
|
|
912
800
|
properties: {
|
|
913
801
|
action: {
|
|
914
802
|
type: "string",
|
|
915
803
|
enum: ["start", "stop"],
|
|
916
|
-
description: '
|
|
804
|
+
description: '"start" begins capture, "stop" ends and returns results'
|
|
917
805
|
},
|
|
918
806
|
needResponseBody: {
|
|
919
807
|
type: "boolean",
|
|
920
|
-
description: "
|
|
808
|
+
description: "Capture response bodies via the Debugger API (default: false)."
|
|
921
809
|
},
|
|
922
810
|
url: {
|
|
923
811
|
type: "string",
|
|
924
|
-
description: 'URL to capture
|
|
812
|
+
description: 'action="start": URL to capture from. If omitted, uses the current active tab.'
|
|
925
813
|
},
|
|
926
814
|
maxCaptureTime: {
|
|
927
815
|
type: "number",
|
|
928
|
-
description: "Maximum capture time in
|
|
816
|
+
description: "Maximum capture time in ms (default: 180000)"
|
|
929
817
|
},
|
|
930
818
|
inactivityTimeout: {
|
|
931
819
|
type: "number",
|
|
932
|
-
description: "Stop after inactivity in
|
|
820
|
+
description: "Stop after inactivity in ms (default: 60000). Set 0 to disable."
|
|
933
821
|
},
|
|
934
822
|
includeStatic: {
|
|
935
823
|
type: "boolean",
|
|
936
824
|
description: "Include static resources like images/scripts/styles (default: false)"
|
|
937
825
|
},
|
|
938
|
-
tabId:
|
|
939
|
-
type: "number",
|
|
940
|
-
description: "Optional target tab id. Defaults to the MCP work tab (background work mode) or the active tab."
|
|
941
|
-
},
|
|
826
|
+
tabId: tabIdProp,
|
|
942
827
|
limit: {
|
|
943
828
|
type: "number",
|
|
944
|
-
description: 'action="stop":
|
|
829
|
+
description: 'action="stop": max requests to return (default 100; paginate with offset)'
|
|
945
830
|
},
|
|
946
831
|
offset: {
|
|
947
832
|
type: "number",
|
|
@@ -949,7 +834,7 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
949
834
|
},
|
|
950
835
|
countOnly: {
|
|
951
836
|
type: "boolean",
|
|
952
|
-
description: 'action="stop":
|
|
837
|
+
description: 'action="stop": counts/summary only, no request array (default false)'
|
|
953
838
|
}
|
|
954
839
|
},
|
|
955
840
|
required: ["action"]
|
|
@@ -976,23 +861,23 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
976
861
|
properties: {
|
|
977
862
|
text: {
|
|
978
863
|
type: "string",
|
|
979
|
-
description: "Text to search
|
|
864
|
+
description: "Text to search in history URLs/titles. Empty = all entries in the time range."
|
|
980
865
|
},
|
|
981
866
|
startTime: {
|
|
982
867
|
type: "string",
|
|
983
|
-
description: 'Start time
|
|
868
|
+
description: 'Start time: ISO, relative ("1 day ago"), or keyword ("now"/"today"/"yesterday"). Default: 24 hours ago'
|
|
984
869
|
},
|
|
985
870
|
endTime: {
|
|
986
871
|
type: "string",
|
|
987
|
-
description: 'End time
|
|
872
|
+
description: 'End time: ISO, relative, or keyword ("now"/"today"/"yesterday"). Default: now'
|
|
988
873
|
},
|
|
989
874
|
maxResults: {
|
|
990
875
|
type: "number",
|
|
991
|
-
description: "
|
|
876
|
+
description: "Max history entries to return (default: 100)"
|
|
992
877
|
},
|
|
993
878
|
excludeCurrentTabs: {
|
|
994
879
|
type: "boolean",
|
|
995
|
-
description: "When
|
|
880
|
+
description: "When true, exclude URLs currently open in any tab. Default false"
|
|
996
881
|
},
|
|
997
882
|
limit: {
|
|
998
883
|
type: "number",
|
|
@@ -1018,15 +903,15 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1018
903
|
properties: {
|
|
1019
904
|
query: {
|
|
1020
905
|
type: "string",
|
|
1021
|
-
description: "
|
|
906
|
+
description: "Query matched against bookmark titles and URLs. Empty = all bookmarks."
|
|
1022
907
|
},
|
|
1023
908
|
maxResults: {
|
|
1024
909
|
type: "number",
|
|
1025
|
-
description: "
|
|
910
|
+
description: "Max bookmarks to return (default: 50)"
|
|
1026
911
|
},
|
|
1027
912
|
folderPath: {
|
|
1028
913
|
type: "string",
|
|
1029
|
-
description: '
|
|
914
|
+
description: 'Limit to a folder: a path string (e.g. "Work/Projects") or a folder ID.'
|
|
1030
915
|
}
|
|
1031
916
|
},
|
|
1032
917
|
required: []
|
|
@@ -1044,19 +929,19 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1044
929
|
},
|
|
1045
930
|
title: {
|
|
1046
931
|
type: "string",
|
|
1047
|
-
description: "Title
|
|
932
|
+
description: "Title. If not provided, uses the page title."
|
|
1048
933
|
},
|
|
1049
934
|
parentId: {
|
|
1050
935
|
type: "string",
|
|
1051
|
-
description: 'Parent folder path
|
|
936
|
+
description: 'Parent folder: path (e.g. "Work/Projects") or folder ID. Default: "Bookmarks Bar".'
|
|
1052
937
|
},
|
|
1053
938
|
createFolder: {
|
|
1054
939
|
type: "boolean",
|
|
1055
|
-
description: "
|
|
940
|
+
description: "Create the parent folder if missing (default: false)"
|
|
1056
941
|
},
|
|
1057
942
|
tabId: {
|
|
1058
943
|
type: "number",
|
|
1059
|
-
description: "
|
|
944
|
+
description: "Tab id to bookmark when url is omitted. Omit to use this session's work tab."
|
|
1060
945
|
}
|
|
1061
946
|
},
|
|
1062
947
|
required: []
|
|
@@ -1070,7 +955,7 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1070
955
|
properties: {
|
|
1071
956
|
bookmarkId: {
|
|
1072
957
|
type: "string",
|
|
1073
|
-
description: "ID of the bookmark to delete. Either bookmarkId or url
|
|
958
|
+
description: "ID of the bookmark to delete. Either bookmarkId or url is required."
|
|
1074
959
|
},
|
|
1075
960
|
url: {
|
|
1076
961
|
type: "string",
|
|
@@ -1078,112 +963,33 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1078
963
|
},
|
|
1079
964
|
title: {
|
|
1080
965
|
type: "string",
|
|
1081
|
-
description: "Title
|
|
966
|
+
description: "Title to help match when deleting by URL."
|
|
1082
967
|
}
|
|
1083
968
|
},
|
|
1084
969
|
required: []
|
|
1085
970
|
}
|
|
1086
971
|
},
|
|
1087
|
-
// {
|
|
1088
|
-
// name: TOOL_NAMES.BROWSER.SEARCH_TABS_CONTENT,
|
|
1089
|
-
// description:
|
|
1090
|
-
// 'search for related content from the currently open tab and return the corresponding web pages.',
|
|
1091
|
-
// inputSchema: {
|
|
1092
|
-
// type: 'object',
|
|
1093
|
-
// properties: {
|
|
1094
|
-
// query: {
|
|
1095
|
-
// type: 'string',
|
|
1096
|
-
// description: 'the query to search for related content.',
|
|
1097
|
-
// },
|
|
1098
|
-
// },
|
|
1099
|
-
// required: ['query'],
|
|
1100
|
-
// },
|
|
1101
|
-
// },
|
|
1102
|
-
// {
|
|
1103
|
-
// name: TOOL_NAMES.BROWSER.INJECT_SCRIPT,
|
|
1104
|
-
// description:
|
|
1105
|
-
// 'inject the user-specified content script into the webpage. By default, inject into the currently active tab',
|
|
1106
|
-
// inputSchema: {
|
|
1107
|
-
// type: 'object',
|
|
1108
|
-
// properties: {
|
|
1109
|
-
// url: {
|
|
1110
|
-
// type: 'string',
|
|
1111
|
-
// description:
|
|
1112
|
-
// 'If a URL is specified, inject the script into the webpage corresponding to the URL.',
|
|
1113
|
-
// },
|
|
1114
|
-
// tabId: {
|
|
1115
|
-
// type: 'number',
|
|
1116
|
-
// description:
|
|
1117
|
-
// 'Target an existing tab by ID to inject into. Overrides url/active tab selection when provided.',
|
|
1118
|
-
// },
|
|
1119
|
-
// windowId: {
|
|
1120
|
-
// type: 'number',
|
|
1121
|
-
// description:
|
|
1122
|
-
// 'Target window ID for selecting active tab or creating new tab when url is provided and tabId is omitted.',
|
|
1123
|
-
// },
|
|
1124
|
-
// background: {
|
|
1125
|
-
// type: 'boolean',
|
|
1126
|
-
// description:
|
|
1127
|
-
// 'Do not activate tab/focus window during injection when true (default: false).',
|
|
1128
|
-
// },
|
|
1129
|
-
// type: {
|
|
1130
|
-
// type: 'string',
|
|
1131
|
-
// description:
|
|
1132
|
-
// 'the javaScript world for a script to execute within. must be ISOLATED or MAIN',
|
|
1133
|
-
// },
|
|
1134
|
-
// jsScript: {
|
|
1135
|
-
// type: 'string',
|
|
1136
|
-
// description: 'the content script to inject',
|
|
1137
|
-
// },
|
|
1138
|
-
// },
|
|
1139
|
-
// required: ['type', 'jsScript'],
|
|
1140
|
-
// },
|
|
1141
|
-
// },
|
|
1142
|
-
// {
|
|
1143
|
-
// name: TOOL_NAMES.BROWSER.SEND_COMMAND_TO_INJECT_SCRIPT,
|
|
1144
|
-
// description:
|
|
1145
|
-
// 'if the script injected using chrome_inject_script listens for user-defined events, this tool can be used to trigger those events',
|
|
1146
|
-
// inputSchema: {
|
|
1147
|
-
// type: 'object',
|
|
1148
|
-
// properties: {
|
|
1149
|
-
// tabId: {
|
|
1150
|
-
// type: 'number',
|
|
1151
|
-
// description:
|
|
1152
|
-
// 'the tab where you previously injected the script(if not provided, use the currently active tab)',
|
|
1153
|
-
// },
|
|
1154
|
-
// eventName: {
|
|
1155
|
-
// type: 'string',
|
|
1156
|
-
// description: 'the eventName your injected content script listen for',
|
|
1157
|
-
// },
|
|
1158
|
-
// payload: {
|
|
1159
|
-
// type: 'string',
|
|
1160
|
-
// description: 'the payload passed to event, must be a json string',
|
|
1161
|
-
// },
|
|
1162
|
-
// },
|
|
1163
|
-
// required: ['eventName'],
|
|
1164
|
-
// },
|
|
1165
|
-
// },
|
|
1166
972
|
{
|
|
1167
973
|
name: TOOL_NAMES.BROWSER.JAVASCRIPT,
|
|
1168
|
-
description: "Execute JavaScript
|
|
974
|
+
description: "Execute JavaScript in a tab and return the result. Uses CDP Runtime.evaluate (awaitPromise, returnByValue) and falls back to chrome.scripting.executeScript if the debugger is busy. Output is sanitized (sensitive data redacted) and truncated by default.",
|
|
1169
975
|
inputSchema: {
|
|
1170
976
|
type: "object",
|
|
1171
977
|
properties: {
|
|
1172
978
|
code: {
|
|
1173
979
|
type: "string",
|
|
1174
|
-
description: 'JavaScript
|
|
980
|
+
description: 'JavaScript to run (async function body; top-level await and "return ..." supported).'
|
|
1175
981
|
},
|
|
1176
982
|
tabId: {
|
|
1177
983
|
type: "number",
|
|
1178
|
-
description: "Target tab
|
|
984
|
+
description: "Target tab id. Omit to use this session's work tab."
|
|
1179
985
|
},
|
|
1180
986
|
timeoutMs: {
|
|
1181
987
|
type: "number",
|
|
1182
|
-
description: "Execution timeout in
|
|
988
|
+
description: "Execution timeout in ms (default: 15000)."
|
|
1183
989
|
},
|
|
1184
990
|
maxOutputBytes: {
|
|
1185
991
|
type: "number",
|
|
1186
|
-
description: "
|
|
992
|
+
description: "Max output bytes after sanitization (default 51200); excess truncated."
|
|
1187
993
|
}
|
|
1188
994
|
},
|
|
1189
995
|
required: ["code"]
|
|
@@ -1191,7 +997,7 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1191
997
|
},
|
|
1192
998
|
{
|
|
1193
999
|
name: TOOL_NAMES.BROWSER.CLICK,
|
|
1194
|
-
description: 'Click
|
|
1000
|
+
description: 'Click an element by CSS selector, XPath, element ref (from chrome_read_page), or viewport coordinates. More focused than chrome_computer for simple clicks; waits briefly (waitForElementMs). If blocked/covered, the result carries an "obstruction" object naming the overlay on top; read it instead of retrying.',
|
|
1195
1001
|
inputSchema: {
|
|
1196
1002
|
type: "object",
|
|
1197
1003
|
properties: {
|
|
@@ -1199,15 +1005,8 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1199
1005
|
type: "string",
|
|
1200
1006
|
description: "CSS selector or XPath for the element to click."
|
|
1201
1007
|
},
|
|
1202
|
-
waitForElementMs:
|
|
1203
|
-
|
|
1204
|
-
description: 'How long (ms) to wait for the target element to appear and become visible before failing. Default 2000; set 0 to fail immediately. Removes the usual "click failed -> chrome_wait_for -> click again" round-trip on SPA/lazy-rendered pages.'
|
|
1205
|
-
},
|
|
1206
|
-
selectorType: {
|
|
1207
|
-
type: "string",
|
|
1208
|
-
enum: ["css", "xpath"],
|
|
1209
|
-
description: 'Type of selector (default: "css").'
|
|
1210
|
-
},
|
|
1008
|
+
waitForElementMs: waitForElementMsProp,
|
|
1009
|
+
selectorType: selectorTypeProp,
|
|
1211
1010
|
ref: {
|
|
1212
1011
|
type: "string",
|
|
1213
1012
|
description: "Element ref from chrome_read_page (takes precedence over selector)."
|
|
@@ -1223,12 +1022,12 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1223
1022
|
},
|
|
1224
1023
|
double: {
|
|
1225
1024
|
type: "boolean",
|
|
1226
|
-
description: "
|
|
1025
|
+
description: "Double click when true (default: false)."
|
|
1227
1026
|
},
|
|
1228
1027
|
button: {
|
|
1229
1028
|
type: "string",
|
|
1230
1029
|
enum: ["left", "right", "middle"],
|
|
1231
|
-
description: 'Mouse button
|
|
1030
|
+
description: 'Mouse button (default: "left").'
|
|
1232
1031
|
},
|
|
1233
1032
|
modifiers: {
|
|
1234
1033
|
type: "object",
|
|
@@ -1242,31 +1041,25 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1242
1041
|
},
|
|
1243
1042
|
waitForNavigation: {
|
|
1244
1043
|
type: "boolean",
|
|
1245
|
-
description: "Wait for navigation
|
|
1044
|
+
description: "Wait for navigation after click (default: false)."
|
|
1246
1045
|
},
|
|
1247
1046
|
timeout: {
|
|
1248
1047
|
type: "number",
|
|
1249
|
-
description: "Timeout in
|
|
1048
|
+
description: "Timeout in ms for waiting (default: 5000)."
|
|
1250
1049
|
},
|
|
1251
1050
|
tabId: {
|
|
1252
1051
|
type: "number",
|
|
1253
|
-
description: "Target tab
|
|
1052
|
+
description: "Target tab id. Omit to use this session's work tab."
|
|
1254
1053
|
},
|
|
1255
|
-
windowId:
|
|
1256
|
-
|
|
1257
|
-
description: "Window ID to select active tab from (when tabId is omitted)."
|
|
1258
|
-
},
|
|
1259
|
-
frameId: {
|
|
1260
|
-
type: "number",
|
|
1261
|
-
description: "Target frame ID for iframe support."
|
|
1262
|
-
}
|
|
1054
|
+
windowId: windowIdProp,
|
|
1055
|
+
frameId: frameIdProp
|
|
1263
1056
|
},
|
|
1264
1057
|
required: []
|
|
1265
1058
|
}
|
|
1266
1059
|
},
|
|
1267
1060
|
{
|
|
1268
1061
|
name: TOOL_NAMES.BROWSER.FILL,
|
|
1269
|
-
description: "Fill or select a form element
|
|
1062
|
+
description: "Fill or select a form element. Supports input, textarea, select, checkbox, radio, and contenteditable (editor prompt boxes like Google Flow, Gemini, ChatGPT, Notion). Target by CSS selector, XPath, or element ref.",
|
|
1270
1063
|
inputSchema: {
|
|
1271
1064
|
type: "object",
|
|
1272
1065
|
properties: {
|
|
@@ -1274,63 +1067,50 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1274
1067
|
type: "string",
|
|
1275
1068
|
description: "CSS selector or XPath for the form element."
|
|
1276
1069
|
},
|
|
1277
|
-
waitForElementMs:
|
|
1278
|
-
|
|
1279
|
-
description: 'How long (ms) to wait for the target element to appear and become visible before failing. Default 2000; set 0 to fail immediately. Removes the usual "click failed -> chrome_wait_for -> click again" round-trip on SPA/lazy-rendered pages.'
|
|
1280
|
-
},
|
|
1281
|
-
selectorType: {
|
|
1282
|
-
type: "string",
|
|
1283
|
-
enum: ["css", "xpath"],
|
|
1284
|
-
description: 'Type of selector (default: "css").'
|
|
1285
|
-
},
|
|
1070
|
+
waitForElementMs: waitForElementMsProp,
|
|
1071
|
+
selectorType: selectorTypeProp,
|
|
1286
1072
|
ref: {
|
|
1287
1073
|
type: "string",
|
|
1288
1074
|
description: "Element ref from chrome_read_page (takes precedence over selector)."
|
|
1289
1075
|
},
|
|
1290
1076
|
value: {
|
|
1291
1077
|
type: ["string", "number", "boolean"],
|
|
1292
|
-
description: "Value
|
|
1078
|
+
description: "Value: string (text), boolean (checkbox/radio), or option value/text (select)."
|
|
1293
1079
|
},
|
|
1294
1080
|
tabId: {
|
|
1295
1081
|
type: "number",
|
|
1296
|
-
description: "Target tab
|
|
1297
|
-
},
|
|
1298
|
-
windowId: {
|
|
1299
|
-
type: "number",
|
|
1300
|
-
description: "Window ID to select active tab from (when tabId is omitted)."
|
|
1082
|
+
description: "Target tab id. Omit to use this session's work tab."
|
|
1301
1083
|
},
|
|
1302
|
-
|
|
1303
|
-
|
|
1304
|
-
description: "Target frame ID for iframe support."
|
|
1305
|
-
}
|
|
1084
|
+
windowId: windowIdProp,
|
|
1085
|
+
frameId: frameIdProp
|
|
1306
1086
|
},
|
|
1307
1087
|
required: ["value"]
|
|
1308
1088
|
}
|
|
1309
1089
|
},
|
|
1310
1090
|
{
|
|
1311
1091
|
name: TOOL_NAMES.BROWSER.REQUEST_ELEMENT_SELECTION,
|
|
1312
|
-
description: "
|
|
1092
|
+
description: "Ask the user to manually select elements on the page. A human-in-the-loop fallback when you cannot locate the target after ~3 attempts with chrome_read_page + click/fill/computer. Returns element refs for chrome_click_element/chrome_fill_or_select (including iframe frameId).",
|
|
1313
1093
|
inputSchema: {
|
|
1314
1094
|
type: "object",
|
|
1315
1095
|
properties: {
|
|
1316
1096
|
requests: {
|
|
1317
1097
|
type: "array",
|
|
1318
|
-
description: "
|
|
1098
|
+
description: "Selection requests; each yields one picked element the user clicks on the page.",
|
|
1319
1099
|
minItems: 1,
|
|
1320
1100
|
items: {
|
|
1321
1101
|
type: "object",
|
|
1322
1102
|
properties: {
|
|
1323
1103
|
id: {
|
|
1324
1104
|
type: "string",
|
|
1325
|
-
description:
|
|
1105
|
+
description: "Stable request id for correlation. Auto-generated if omitted."
|
|
1326
1106
|
},
|
|
1327
1107
|
name: {
|
|
1328
1108
|
type: "string",
|
|
1329
|
-
description: 'Short label shown to the user
|
|
1109
|
+
description: 'Short label shown to the user (e.g. "Login button").'
|
|
1330
1110
|
},
|
|
1331
1111
|
description: {
|
|
1332
1112
|
type: "string",
|
|
1333
|
-
description:
|
|
1113
|
+
description: "Optional longer instruction shown to the user."
|
|
1334
1114
|
}
|
|
1335
1115
|
},
|
|
1336
1116
|
required: ["name"]
|
|
@@ -1338,68 +1118,55 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1338
1118
|
},
|
|
1339
1119
|
timeoutMs: {
|
|
1340
1120
|
type: "number",
|
|
1341
|
-
description: "Timeout
|
|
1121
|
+
description: "Timeout ms for the user to finish (default 180000, max 600000)."
|
|
1342
1122
|
},
|
|
1343
1123
|
tabId: {
|
|
1344
1124
|
type: "number",
|
|
1345
|
-
description: "Target tab
|
|
1125
|
+
description: "Target tab id. Omit to use this session's work tab."
|
|
1346
1126
|
},
|
|
1347
|
-
windowId:
|
|
1348
|
-
type: "number",
|
|
1349
|
-
description: "Window ID to select active tab from (when tabId is omitted)."
|
|
1350
|
-
}
|
|
1127
|
+
windowId: windowIdProp
|
|
1351
1128
|
},
|
|
1352
1129
|
required: ["requests"]
|
|
1353
1130
|
}
|
|
1354
1131
|
},
|
|
1355
1132
|
{
|
|
1356
1133
|
name: TOOL_NAMES.BROWSER.KEYBOARD,
|
|
1357
|
-
description: "Simulate keyboard input
|
|
1134
|
+
description: "Simulate keyboard input: single keys (Enter, Tab, Escape), combinations (Ctrl+C, Ctrl+V), and text. Can target a specific element or send to the focused element.",
|
|
1358
1135
|
inputSchema: {
|
|
1359
1136
|
type: "object",
|
|
1360
1137
|
properties: {
|
|
1361
1138
|
keys: {
|
|
1362
1139
|
type: "string",
|
|
1363
|
-
description: 'Keys or
|
|
1140
|
+
description: 'Keys or combinations, e.g. "Enter", "Tab", "Ctrl+C", "Shift+Tab", "Hello World".'
|
|
1364
1141
|
},
|
|
1365
1142
|
selector: {
|
|
1366
1143
|
type: "string",
|
|
1367
|
-
description: "CSS selector or XPath for
|
|
1368
|
-
},
|
|
1369
|
-
selectorType: {
|
|
1370
|
-
type: "string",
|
|
1371
|
-
enum: ["css", "xpath"],
|
|
1372
|
-
description: 'Type of selector (default: "css").'
|
|
1144
|
+
description: "CSS selector or XPath for the element to receive keyboard events."
|
|
1373
1145
|
},
|
|
1146
|
+
selectorType: selectorTypeProp,
|
|
1374
1147
|
delay: {
|
|
1375
1148
|
type: "number",
|
|
1376
|
-
description: "Delay between keystrokes in
|
|
1149
|
+
description: "Delay between keystrokes in ms (default: 50)."
|
|
1377
1150
|
},
|
|
1378
1151
|
tabId: {
|
|
1379
1152
|
type: "number",
|
|
1380
|
-
description: "Target tab
|
|
1381
|
-
},
|
|
1382
|
-
windowId: {
|
|
1383
|
-
type: "number",
|
|
1384
|
-
description: "Window ID to select active tab from (when tabId is omitted)."
|
|
1153
|
+
description: "Target tab id. Omit to use this session's work tab."
|
|
1385
1154
|
},
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
description: "Target frame ID for iframe support."
|
|
1389
|
-
}
|
|
1155
|
+
windowId: windowIdProp,
|
|
1156
|
+
frameId: frameIdProp
|
|
1390
1157
|
},
|
|
1391
1158
|
required: ["keys"]
|
|
1392
1159
|
}
|
|
1393
1160
|
},
|
|
1394
1161
|
{
|
|
1395
1162
|
name: TOOL_NAMES.BROWSER.CONSOLE,
|
|
1396
|
-
description: "Capture console output from a
|
|
1163
|
+
description: "Capture console output from a tab. Snapshot mode (default) does a one-time capture with a ~2s wait; buffer mode keeps a persistent per-tab buffer you can read/clear instantly.",
|
|
1397
1164
|
inputSchema: {
|
|
1398
1165
|
type: "object",
|
|
1399
1166
|
properties: {
|
|
1400
1167
|
url: {
|
|
1401
1168
|
type: "string",
|
|
1402
|
-
description: "URL to navigate to and capture
|
|
1169
|
+
description: "URL to navigate to and capture from. If omitted, uses the current active tab"
|
|
1403
1170
|
},
|
|
1404
1171
|
tabId: {
|
|
1405
1172
|
type: "number",
|
|
@@ -1415,15 +1182,15 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1415
1182
|
},
|
|
1416
1183
|
includeExceptions: {
|
|
1417
1184
|
type: "boolean",
|
|
1418
|
-
description: "Include uncaught exceptions
|
|
1185
|
+
description: "Include uncaught exceptions (default: true)"
|
|
1419
1186
|
},
|
|
1420
1187
|
maxMessages: {
|
|
1421
1188
|
type: "number",
|
|
1422
|
-
description: "
|
|
1189
|
+
description: "Max messages in snapshot mode (default: 100). limit takes precedence."
|
|
1423
1190
|
},
|
|
1424
1191
|
offset: {
|
|
1425
1192
|
type: "number",
|
|
1426
|
-
description: "Skip this many messages before returning (
|
|
1193
|
+
description: "Skip this many messages before returning (default 0)"
|
|
1427
1194
|
},
|
|
1428
1195
|
countOnly: {
|
|
1429
1196
|
type: "boolean",
|
|
@@ -1432,7 +1199,7 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1432
1199
|
mode: {
|
|
1433
1200
|
type: "string",
|
|
1434
1201
|
enum: ["snapshot", "buffer"],
|
|
1435
|
-
description: "
|
|
1202
|
+
description: "snapshot (default; waits ~2s) or buffer (persistent per-tab buffer; instant)."
|
|
1436
1203
|
},
|
|
1437
1204
|
buffer: {
|
|
1438
1205
|
type: "boolean",
|
|
@@ -1440,23 +1207,23 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1440
1207
|
},
|
|
1441
1208
|
clear: {
|
|
1442
1209
|
type: "boolean",
|
|
1443
|
-
description: "Buffer mode
|
|
1210
|
+
description: "Buffer mode: clear the buffered logs before reading (default: false)."
|
|
1444
1211
|
},
|
|
1445
1212
|
clearAfterRead: {
|
|
1446
1213
|
type: "boolean",
|
|
1447
|
-
description: "Buffer mode
|
|
1214
|
+
description: "Buffer mode: clear the buffered logs AFTER reading (avoids duplicates). Default: false"
|
|
1448
1215
|
},
|
|
1449
1216
|
pattern: {
|
|
1450
1217
|
type: "string",
|
|
1451
|
-
description: "
|
|
1218
|
+
description: "Regex filter on message/exception text. Supports /pattern/flags."
|
|
1452
1219
|
},
|
|
1453
1220
|
onlyErrors: {
|
|
1454
1221
|
type: "boolean",
|
|
1455
|
-
description: "Only
|
|
1222
|
+
description: "Only error-level messages (plus exceptions if includeExceptions). Default: false."
|
|
1456
1223
|
},
|
|
1457
1224
|
limit: {
|
|
1458
1225
|
type: "number",
|
|
1459
|
-
description: "Limit returned
|
|
1226
|
+
description: "Limit returned messages (snapshot: alias for maxMessages; buffer: from the buffer)."
|
|
1460
1227
|
}
|
|
1461
1228
|
},
|
|
1462
1229
|
required: []
|
|
@@ -1464,7 +1231,7 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1464
1231
|
},
|
|
1465
1232
|
{
|
|
1466
1233
|
name: TOOL_NAMES.BROWSER.FILE_UPLOAD,
|
|
1467
|
-
description: "Upload files to
|
|
1234
|
+
description: "Upload files to file-input form elements using Chrome DevTools Protocol",
|
|
1468
1235
|
inputSchema: {
|
|
1469
1236
|
type: "object",
|
|
1470
1237
|
properties: {
|
|
@@ -1475,7 +1242,7 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1475
1242
|
},
|
|
1476
1243
|
selector: {
|
|
1477
1244
|
type: "string",
|
|
1478
|
-
description: 'CSS selector for the file input
|
|
1245
|
+
description: 'CSS selector for the file input (input[type="file"])'
|
|
1479
1246
|
},
|
|
1480
1247
|
filePath: {
|
|
1481
1248
|
type: "string",
|
|
@@ -1483,7 +1250,7 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1483
1250
|
},
|
|
1484
1251
|
fileUrl: {
|
|
1485
1252
|
type: "string",
|
|
1486
|
-
description: "URL to download file from before uploading"
|
|
1253
|
+
description: "URL to download the file from before uploading"
|
|
1487
1254
|
},
|
|
1488
1255
|
base64Data: {
|
|
1489
1256
|
type: "string",
|
|
@@ -1491,7 +1258,7 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1491
1258
|
},
|
|
1492
1259
|
fileName: {
|
|
1493
1260
|
type: "string",
|
|
1494
|
-
description: '
|
|
1261
|
+
description: 'Filename for base64/URL (default "uploaded-file"). Name only; path separators or ".." rejected.'
|
|
1495
1262
|
},
|
|
1496
1263
|
multiple: {
|
|
1497
1264
|
type: "boolean",
|
|
@@ -1512,17 +1279,14 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1512
1279
|
type: "string",
|
|
1513
1280
|
description: "Optional prompt text when accepting a prompt"
|
|
1514
1281
|
},
|
|
1515
|
-
tabId:
|
|
1516
|
-
type: "number",
|
|
1517
|
-
description: "Optional target tab id. Defaults to the MCP work tab (background work mode) or the active tab."
|
|
1518
|
-
}
|
|
1282
|
+
tabId: tabIdProp
|
|
1519
1283
|
},
|
|
1520
1284
|
required: ["action"]
|
|
1521
1285
|
}
|
|
1522
1286
|
},
|
|
1523
1287
|
{
|
|
1524
1288
|
name: TOOL_NAMES.BROWSER.REQUEST_USER_CONSENT,
|
|
1525
|
-
description:
|
|
1289
|
+
description: "Request user consent BEFORE using sensitive site features (camera, microphone, geolocation). Returns { approved, source }. If the matching popup toggle is ON, returns approved immediately and sticky-allows the current tab origin (chrome.contentSettings); if OFF, opens a consent popup and awaits the user (max 60s).",
|
|
1526
1290
|
inputSchema: {
|
|
1527
1291
|
type: "object",
|
|
1528
1292
|
properties: {
|
|
@@ -1533,7 +1297,7 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1533
1297
|
},
|
|
1534
1298
|
reason: {
|
|
1535
1299
|
type: "string",
|
|
1536
|
-
description: '
|
|
1300
|
+
description: 'Explanation shown to the user in the consent window (e.g. "\uB179\uD654 \uC2DC\uC791\uC744 \uC704\uD574 \uB9C8\uC774\uD06C\uC5D0 \uC811\uADFC\uD569\uB2C8\uB2E4").'
|
|
1537
1301
|
}
|
|
1538
1302
|
},
|
|
1539
1303
|
required: ["action", "reason"]
|
|
@@ -1541,66 +1305,66 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1541
1305
|
},
|
|
1542
1306
|
{
|
|
1543
1307
|
name: TOOL_NAMES.BROWSER.GIF_RECORDER,
|
|
1544
|
-
description: 'Record browser tab activity as an animated GIF
|
|
1308
|
+
description: 'Record browser tab activity as an animated GIF. action="start" records at a fixed FPS (good for animations); action="auto_start" captures a frame whenever a chrome_computer or chrome_navigate action succeeds (better-paced interaction recordings). Use "stop" to end and save.',
|
|
1545
1309
|
inputSchema: {
|
|
1546
1310
|
type: "object",
|
|
1547
1311
|
properties: {
|
|
1548
1312
|
action: {
|
|
1549
1313
|
type: "string",
|
|
1550
1314
|
enum: ["start", "stop", "status", "auto_start", "capture", "clear", "export"],
|
|
1551
|
-
description:
|
|
1315
|
+
description: "start = fixed-FPS recording; auto_start = auto-capture (frames on tool actions); stop = end and save; status = current state; capture = manually grab a frame in auto mode; clear = drop state without saving; export = download or drag&drop-upload the last GIF."
|
|
1552
1316
|
},
|
|
1553
1317
|
tabId: {
|
|
1554
1318
|
type: "number",
|
|
1555
|
-
description:
|
|
1319
|
+
description: "Target tab (default active tab). For start/auto_start, and export (download=false) drag&drop target."
|
|
1556
1320
|
},
|
|
1557
1321
|
fps: {
|
|
1558
1322
|
type: "number",
|
|
1559
|
-
description: "
|
|
1323
|
+
description: "FPS for fixed-FPS mode (1-30, default: 5)."
|
|
1560
1324
|
},
|
|
1561
1325
|
durationMs: {
|
|
1562
1326
|
type: "number",
|
|
1563
|
-
description: "
|
|
1327
|
+
description: "Max duration in ms (default: 5000, max: 60000). Fixed-FPS only."
|
|
1564
1328
|
},
|
|
1565
1329
|
maxFrames: {
|
|
1566
1330
|
type: "number",
|
|
1567
|
-
description: "
|
|
1331
|
+
description: "Max frames (default: 50 fixed-FPS, 100 auto; max: 300)."
|
|
1568
1332
|
},
|
|
1569
1333
|
width: {
|
|
1570
1334
|
type: "number",
|
|
1571
|
-
description: "Output
|
|
1335
|
+
description: "Output width in px (default: 800, max: 1920)."
|
|
1572
1336
|
},
|
|
1573
1337
|
height: {
|
|
1574
1338
|
type: "number",
|
|
1575
|
-
description: "Output
|
|
1339
|
+
description: "Output height in px (default: 600, max: 1080)."
|
|
1576
1340
|
},
|
|
1577
1341
|
maxColors: {
|
|
1578
1342
|
type: "number",
|
|
1579
|
-
description: "
|
|
1343
|
+
description: "Max palette colors (default: 256). Lower = smaller file."
|
|
1580
1344
|
},
|
|
1581
1345
|
filename: {
|
|
1582
1346
|
type: "string",
|
|
1583
|
-
description: "Output filename (
|
|
1347
|
+
description: "Output filename (no extension). Defaults to a timestamped name."
|
|
1584
1348
|
},
|
|
1585
1349
|
captureDelayMs: {
|
|
1586
1350
|
type: "number",
|
|
1587
|
-
description: "Auto
|
|
1351
|
+
description: "Auto mode: delay in ms after an action before capturing (default: 150)."
|
|
1588
1352
|
},
|
|
1589
1353
|
frameDelayCs: {
|
|
1590
1354
|
type: "number",
|
|
1591
|
-
description: "Auto
|
|
1355
|
+
description: "Auto mode: display duration per frame in centiseconds (default: 20 = 200ms)."
|
|
1592
1356
|
},
|
|
1593
1357
|
annotation: {
|
|
1594
1358
|
type: "string",
|
|
1595
|
-
description: 'Auto
|
|
1359
|
+
description: 'Auto mode (action="capture"): optional text label on the frame.'
|
|
1596
1360
|
},
|
|
1597
1361
|
download: {
|
|
1598
1362
|
type: "boolean",
|
|
1599
|
-
description: "Export
|
|
1363
|
+
description: "Export only: true (default) to download, false to upload via drag&drop."
|
|
1600
1364
|
},
|
|
1601
1365
|
coordinates: {
|
|
1602
1366
|
type: "object",
|
|
1603
|
-
description: "Export
|
|
1367
|
+
description: "Export (download=false): target coordinates for drag&drop.",
|
|
1604
1368
|
properties: {
|
|
1605
1369
|
x: { type: "number" },
|
|
1606
1370
|
y: { type: "number" }
|
|
@@ -1609,15 +1373,15 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1609
1373
|
},
|
|
1610
1374
|
ref: {
|
|
1611
1375
|
type: "string",
|
|
1612
|
-
description: "Export
|
|
1376
|
+
description: "Export (download=false): element ref for the drag&drop target."
|
|
1613
1377
|
},
|
|
1614
1378
|
selector: {
|
|
1615
1379
|
type: "string",
|
|
1616
|
-
description: "Export
|
|
1380
|
+
description: "Export (download=false): CSS selector for the drag&drop target."
|
|
1617
1381
|
},
|
|
1618
1382
|
enhancedRendering: {
|
|
1619
1383
|
type: "object",
|
|
1620
|
-
description: "Auto
|
|
1384
|
+
description: "Auto mode: visual overlays for recorded actions. Pass `true` for all defaults, or an object. Each overlay group accepts true or an object with the listed props (all optional, sensible defaults).",
|
|
1621
1385
|
properties: {
|
|
1622
1386
|
clickIndicators: {
|
|
1623
1387
|
oneOf: [
|
|
@@ -1625,31 +1389,16 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1625
1389
|
{
|
|
1626
1390
|
type: "object",
|
|
1627
1391
|
properties: {
|
|
1628
|
-
enabled: {
|
|
1629
|
-
|
|
1630
|
-
|
|
1631
|
-
},
|
|
1632
|
-
|
|
1633
|
-
|
|
1634
|
-
description: 'CSS color for click indicator (default: "rgba(255, 87, 34, 0.8)")'
|
|
1635
|
-
},
|
|
1636
|
-
radius: { type: "number", description: "Initial radius in px (default: 20)" },
|
|
1637
|
-
animationDurationMs: {
|
|
1638
|
-
type: "number",
|
|
1639
|
-
description: "Animation duration in ms (default: 400)"
|
|
1640
|
-
},
|
|
1641
|
-
animationFrames: {
|
|
1642
|
-
type: "number",
|
|
1643
|
-
description: "Number of animation frames (default: 3)"
|
|
1644
|
-
},
|
|
1645
|
-
animationIntervalMs: {
|
|
1646
|
-
type: "number",
|
|
1647
|
-
description: "Interval between animation frames in ms (default: 80)"
|
|
1648
|
-
}
|
|
1392
|
+
enabled: { type: "boolean" },
|
|
1393
|
+
color: { type: "string" },
|
|
1394
|
+
radius: { type: "number" },
|
|
1395
|
+
animationDurationMs: { type: "number" },
|
|
1396
|
+
animationFrames: { type: "number" },
|
|
1397
|
+
animationIntervalMs: { type: "number" }
|
|
1649
1398
|
}
|
|
1650
1399
|
}
|
|
1651
1400
|
],
|
|
1652
|
-
description: "Click indicator overlay
|
|
1401
|
+
description: "Click indicator overlay."
|
|
1653
1402
|
},
|
|
1654
1403
|
dragPaths: {
|
|
1655
1404
|
oneOf: [
|
|
@@ -1657,28 +1406,15 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1657
1406
|
{
|
|
1658
1407
|
type: "object",
|
|
1659
1408
|
properties: {
|
|
1660
|
-
enabled: {
|
|
1661
|
-
|
|
1662
|
-
|
|
1663
|
-
},
|
|
1664
|
-
|
|
1665
|
-
type: "string",
|
|
1666
|
-
description: 'CSS color for drag path (default: "rgba(33, 150, 243, 0.7)")'
|
|
1667
|
-
},
|
|
1668
|
-
lineWidth: { type: "number", description: "Line width in px (default: 3)" },
|
|
1669
|
-
lineDash: {
|
|
1670
|
-
type: "array",
|
|
1671
|
-
items: { type: "number" },
|
|
1672
|
-
description: "Dash pattern (default: [6, 4])"
|
|
1673
|
-
},
|
|
1674
|
-
arrowSize: {
|
|
1675
|
-
type: "number",
|
|
1676
|
-
description: "Arrow head size in px (default: 10)"
|
|
1677
|
-
}
|
|
1409
|
+
enabled: { type: "boolean" },
|
|
1410
|
+
color: { type: "string" },
|
|
1411
|
+
lineWidth: { type: "number" },
|
|
1412
|
+
lineDash: { type: "array", items: { type: "number" } },
|
|
1413
|
+
arrowSize: { type: "number" }
|
|
1678
1414
|
}
|
|
1679
1415
|
}
|
|
1680
1416
|
],
|
|
1681
|
-
description: "Drag path overlay
|
|
1417
|
+
description: "Drag path overlay."
|
|
1682
1418
|
},
|
|
1683
1419
|
labels: {
|
|
1684
1420
|
oneOf: [
|
|
@@ -1686,37 +1422,24 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1686
1422
|
{
|
|
1687
1423
|
type: "object",
|
|
1688
1424
|
properties: {
|
|
1689
|
-
enabled: {
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
},
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
description: 'Font for labels (default: "bold 12px sans-serif")'
|
|
1696
|
-
},
|
|
1697
|
-
textColor: { type: "string", description: 'Text color (default: "#fff")' },
|
|
1698
|
-
bgColor: {
|
|
1699
|
-
type: "string",
|
|
1700
|
-
description: 'Background color (default: "rgba(0,0,0,0.7)")'
|
|
1701
|
-
},
|
|
1702
|
-
padding: { type: "number", description: "Padding in px (default: 4)" },
|
|
1703
|
-
borderRadius: {
|
|
1704
|
-
type: "number",
|
|
1705
|
-
description: "Border radius in px (default: 4)"
|
|
1706
|
-
},
|
|
1425
|
+
enabled: { type: "boolean" },
|
|
1426
|
+
font: { type: "string" },
|
|
1427
|
+
textColor: { type: "string" },
|
|
1428
|
+
bgColor: { type: "string" },
|
|
1429
|
+
padding: { type: "number" },
|
|
1430
|
+
borderRadius: { type: "number" },
|
|
1707
1431
|
offset: {
|
|
1708
1432
|
type: "object",
|
|
1709
|
-
properties: { x: { type: "number" }, y: { type: "number" } }
|
|
1710
|
-
description: "Offset from action position (default: {x: 10, y: -20})"
|
|
1433
|
+
properties: { x: { type: "number" }, y: { type: "number" } }
|
|
1711
1434
|
}
|
|
1712
1435
|
}
|
|
1713
1436
|
}
|
|
1714
1437
|
],
|
|
1715
|
-
description: "Action label overlay
|
|
1438
|
+
description: "Action label overlay."
|
|
1716
1439
|
},
|
|
1717
1440
|
durationMs: {
|
|
1718
1441
|
type: "number",
|
|
1719
|
-
description: "How long overlays
|
|
1442
|
+
description: "How long overlays stay visible in ms (default: 1500)."
|
|
1720
1443
|
}
|
|
1721
1444
|
}
|
|
1722
1445
|
}
|
|
@@ -1727,14 +1450,14 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1727
1450
|
// ===== auto-chrome-mcp fork (B1~B4) =====
|
|
1728
1451
|
{
|
|
1729
1452
|
name: TOOL_NAMES.BROWSER.STORAGE,
|
|
1730
|
-
description: "Read or modify cookies, localStorage, or sessionStorage. Use it to save/restore a login session, test the logged-out state, pre-seed a consent cookie
|
|
1453
|
+
description: "Read or modify cookies, localStorage, or sessionStorage. Use it to save/restore a login session, test the logged-out state, pre-seed a consent cookie, or inspect front-end state. VALUES are masked by default (names/domains/expiry still returned); pass includeValues:true only when you need the secrets.",
|
|
1731
1454
|
inputSchema: {
|
|
1732
1455
|
type: "object",
|
|
1733
1456
|
properties: {
|
|
1734
1457
|
kind: {
|
|
1735
1458
|
type: "string",
|
|
1736
1459
|
enum: ["cookies", "local", "session"],
|
|
1737
|
-
description: '
|
|
1460
|
+
description: 'cookies, localStorage, or sessionStorage. Default "cookies".'
|
|
1738
1461
|
},
|
|
1739
1462
|
action: {
|
|
1740
1463
|
type: "string",
|
|
@@ -1766,30 +1489,24 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1766
1489
|
},
|
|
1767
1490
|
includeValues: {
|
|
1768
1491
|
type: "boolean",
|
|
1769
|
-
description: "Return real values instead of
|
|
1492
|
+
description: "Return real values instead of masks. Default false (usually auth tokens)."
|
|
1770
1493
|
},
|
|
1771
1494
|
tabId: { type: "number", description: "Target tab. Defaults to the session work tab." },
|
|
1772
|
-
windowId:
|
|
1773
|
-
type: "number",
|
|
1774
|
-
description: "Window to pick the active tab from (when tabId is omitted)."
|
|
1775
|
-
}
|
|
1495
|
+
windowId: windowIdProp
|
|
1776
1496
|
}
|
|
1777
1497
|
}
|
|
1778
1498
|
},
|
|
1779
1499
|
{
|
|
1780
1500
|
name: TOOL_NAMES.BROWSER.SAVE_PDF,
|
|
1781
|
-
description: "Save the page as a PDF into
|
|
1501
|
+
description: "Save the page as a PDF into Downloads (via Page.printToPDF). Unlike a screenshot the text stays selectable and multi-page documents are captured in full; use it to archive notices, contracts, invoices, reports. The PDF bytes are NOT returned (too large); the result carries the saved filename.",
|
|
1782
1502
|
inputSchema: {
|
|
1783
1503
|
type: "object",
|
|
1784
1504
|
properties: {
|
|
1785
1505
|
tabId: { type: "number", description: "Target tab. Defaults to the session work tab." },
|
|
1786
|
-
windowId:
|
|
1787
|
-
type: "number",
|
|
1788
|
-
description: "Window to pick the active tab from (when tabId is omitted)."
|
|
1789
|
-
},
|
|
1506
|
+
windowId: windowIdProp,
|
|
1790
1507
|
filename: {
|
|
1791
1508
|
type: "string",
|
|
1792
|
-
description: 'File name (".pdf" added
|
|
1509
|
+
description: 'File name (".pdf" added). Saved under Downloads/mcp-pdf/.'
|
|
1793
1510
|
},
|
|
1794
1511
|
paperFormat: {
|
|
1795
1512
|
type: "string",
|
|
@@ -1819,7 +1536,7 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1819
1536
|
},
|
|
1820
1537
|
{
|
|
1821
1538
|
name: TOOL_NAMES.BROWSER.EMULATE,
|
|
1822
|
-
description: 'Emulate a device viewport (size, pixel density, touch, User-Agent) on a tab for responsive/mobile checking. The real window is never resized, so
|
|
1539
|
+
description: 'Emulate a device viewport (size, pixel density, touch, User-Agent) on a tab for responsive/mobile checking. The real window is never resized, so it works on background work tabs. Emulation persists until action="reset"; always reset when done (Chrome shows an automation notice on an emulated tab).',
|
|
1823
1540
|
inputSchema: {
|
|
1824
1541
|
type: "object",
|
|
1825
1542
|
properties: {
|
|
@@ -1848,28 +1565,25 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1848
1565
|
hasTouch: { type: "boolean", description: "Enable touch event emulation." },
|
|
1849
1566
|
userAgent: { type: "string", description: "Override the User-Agent string." },
|
|
1850
1567
|
tabId: { type: "number", description: "Target tab. Defaults to the session work tab." },
|
|
1851
|
-
windowId:
|
|
1852
|
-
type: "number",
|
|
1853
|
-
description: "Window to pick the active tab from (when tabId is omitted)."
|
|
1854
|
-
}
|
|
1568
|
+
windowId: windowIdProp
|
|
1855
1569
|
}
|
|
1856
1570
|
}
|
|
1857
1571
|
},
|
|
1858
1572
|
{
|
|
1859
1573
|
name: TOOL_NAMES.BROWSER.NETWORK_RULES,
|
|
1860
|
-
description: "Block network requests with declarativeNetRequest session rules. Blocking ads/trackers or heavy images
|
|
1574
|
+
description: "Block network requests with declarativeNetRequest session rules. Blocking ads/trackers or heavy images speeds up pages and cuts boilerplate tokens. Rules are session-scoped (gone on Chrome restart) and can be limited to one tab. Note: some sites need tracker domains for login.",
|
|
1861
1575
|
inputSchema: {
|
|
1862
1576
|
type: "object",
|
|
1863
1577
|
properties: {
|
|
1864
1578
|
action: {
|
|
1865
1579
|
type: "string",
|
|
1866
1580
|
enum: ["block", "unblock", "list", "clear"],
|
|
1867
|
-
description: 'Default "block". "list" shows active rules with
|
|
1581
|
+
description: 'Default "block". "list" shows active rules with ids, "clear" removes all.'
|
|
1868
1582
|
},
|
|
1869
1583
|
preset: {
|
|
1870
1584
|
type: "string",
|
|
1871
1585
|
enum: ["ads", "trackers", "images", "media", "fonts"],
|
|
1872
|
-
description: "
|
|
1586
|
+
description: "Rule set: ads/trackers block known domains; images/media/fonts block those resource types."
|
|
1873
1587
|
},
|
|
1874
1588
|
patterns: {
|
|
1875
1589
|
type: "array",
|
|
@@ -1883,7 +1597,7 @@ Tip: If the returned elements do not include the specific element you need, use
|
|
|
1883
1597
|
ruleIds: {
|
|
1884
1598
|
type: "array",
|
|
1885
1599
|
items: { type: "number" },
|
|
1886
|
-
description: '
|
|
1600
|
+
description: 'action="unblock": rule ids to remove (from action="list").'
|
|
1887
1601
|
}
|
|
1888
1602
|
}
|
|
1889
1603
|
}
|
|
@@ -1896,10 +1610,16 @@ var LANE_EXEMPT_TOOLS = /* @__PURE__ */ new Set([
|
|
|
1896
1610
|
TOOL_NAMES.BROWSER.BOOKMARK_SEARCH,
|
|
1897
1611
|
TOOL_NAMES.BROWSER.BOOKMARK_ADD,
|
|
1898
1612
|
TOOL_NAMES.BROWSER.BOOKMARK_DELETE,
|
|
1899
|
-
TOOL_NAMES.BROWSER.REQUEST_USER_CONSENT
|
|
1613
|
+
TOOL_NAMES.BROWSER.REQUEST_USER_CONSENT,
|
|
1614
|
+
// record_replay 두 도구는 레인 대상이 아니다: flow_run 은 대상 탭을 엔진이 스스로 잡아
|
|
1615
|
+
// 레인→작업탭 주입 경로를 타지 않고, list_published 는 순수 조회다. 지금은 두 스키마가
|
|
1616
|
+
// 위에서 주석 처리돼 TOOL_SCHEMAS 에 없으므로 이 항목은 실질적으로 무효지만, 다시 노출할 때
|
|
1617
|
+
// 판단을 되풀이하지 않도록 남겨 둔다.
|
|
1618
|
+
TOOL_NAMES.RECORD_REPLAY.FLOW_RUN,
|
|
1619
|
+
TOOL_NAMES.RECORD_REPLAY.LIST_PUBLISHED
|
|
1900
1620
|
]);
|
|
1901
|
-
var LANE_DESCRIPTION_SHORT =
|
|
1902
|
-
var LANE_DESCRIPTION_LONG =
|
|
1621
|
+
var LANE_DESCRIPTION_SHORT = "Parallel-agent lane id (same value every call). Omit if solo.";
|
|
1622
|
+
var LANE_DESCRIPTION_LONG = "Parallel lane id. Sub-agents of one Claude Code session share one MCP session, so without a lane they overwrite each other's work tab. Give each concurrent agent a distinct lane (same value every call): a lane keeps its own work tab that no other lane closes or retargets.";
|
|
1903
1623
|
for (const tool of TOOL_SCHEMAS) {
|
|
1904
1624
|
if (LANE_EXEMPT_TOOLS.has(tool.name)) continue;
|
|
1905
1625
|
const schema = tool.inputSchema;
|