poke-browser 0.4.4 → 0.4.7

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.
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA0BpE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAItD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAEtD;AAgMD,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAwuBlD"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACzE,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AA0BpE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,OAAO,GAAG,cAAc,CAItD;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,CAEtD;AA4MD,wBAAgB,aAAa,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAmwBlD"}
package/dist/tools.js CHANGED
@@ -198,54 +198,81 @@ Do not stop at the wall—drive the verification control explicitly.
198
198
  *Call **browser_guide** any time for this reference.*`;
199
199
  /** Flat ZodObject (required `action`) so MCP tools/list JSON Schema includes `required: ["action"]`. */
200
200
  const ManageTabsSchema = z.object({
201
- action: z.enum(["list", "get_active", "new", "close", "switch"]),
202
- tabId: z.number().optional(),
203
- url: z.string().optional(),
201
+ action: z
202
+ .enum(["list", "get_active", "new", "close", "switch"])
203
+ .describe("Tab operation to perform. Use list/get_active for discovery, new to open a tab, and close/switch with tabId."),
204
+ tabId: z
205
+ .number()
206
+ .int()
207
+ .positive()
208
+ .optional()
209
+ .describe("Required for close and switch. Ignored for list/get_active/new."),
210
+ url: z
211
+ .string()
212
+ .optional()
213
+ .describe("Optional URL for action=new. If omitted, Chrome opens a blank new tab."),
204
214
  });
205
215
  export function registerTools(mcp) {
206
216
  mcp.registerTool("browser_guide", {
207
- description: "Return a static Markdown playbook: all tools (one line each), snapshot-then-act clicking, Cloudflare/human-verify flows, common errors, and execute_script vs evaluate_js / CSP notes. No parameters.",
217
+ description: "Return the built-in Markdown playbook for this MCP server. Use when you need workflow guidance, tool ordering, or troubleshooting notes. No parameters.",
208
218
  inputSchema: {},
209
219
  }, async () => {
210
220
  logToolCall("browser_guide", {});
211
221
  return { content: [{ type: "text", text: BROWSER_GUIDE_MARKDOWN }] };
212
222
  });
213
223
  mcp.registerTool("navigate_to", {
214
- description: "Navigate a tab to a URL (defaults to the active tab). Always waits for chrome.tabs status complete (via onUpdated) before returning tabId, url, and title. waitForLoad false uses a 10s load timeout; omitted/true uses 30s.",
224
+ description: "Navigate a browser tab to a URL and wait for load completion. Use this before interacting with a new page. Prefer this over managetabs(new) when you want deterministic 'loaded' state in the result.",
215
225
  inputSchema: {
216
- url: z.string().min(1).describe("Destination URL"),
217
- tabId: tabIdSchema.optional().describe("Optional tab id; defaults to active tab"),
226
+ url: z
227
+ .string()
228
+ .min(1)
229
+ .describe("Absolute destination URL to open, for example https://x.com/home."),
230
+ tabId: tabIdSchema
231
+ .optional()
232
+ .describe("Optional target tab id. If omitted, navigates the current active tab."),
218
233
  waitForLoad: z
219
234
  .boolean()
220
235
  .optional()
221
- .describe("If false, use a shorter (10s) load wait timeout; if true/omitted, up to ~30s"),
236
+ .describe("If false, use shorter wait (about 10s). If true/omitted, wait up to about 30s."),
222
237
  },
223
238
  }, async ({ url, tabId, waitForLoad }) => callTool("navigate_to", { url, tabId, waitForLoad }, PENDING_REQUEST_TIMEOUT_MS + 35_000));
224
239
  mcp.registerTool("click_element", {
225
- description: "Click via CSS selector / XPath (content script) or viewport coordinates (Chrome DevTools Protocol). Provide either selector or x+y. Always performs CDP Input.dispatchMouseEvent mouseMoved at the target point, waits 1s, then clicks so hover-dependent UI can render. After clicking, it is highly recommended to inspect the DOM (e.g., using get_dom_snapshot) to detect any new modals or UI changes that may have appeared.",
240
+ description: "Click an element by selector or viewport coordinates. Use selector when available; use x+y when you already resolved bounds from find_element/get_dom_snapshot. Performs hover first, then click, to support hover-activated UI. After each click, re-inspect the page before the next action.",
226
241
  inputSchema: {
227
242
  selector: z
228
243
  .string()
229
244
  .min(1)
230
245
  .optional()
231
- .describe("CSS selector, '//xpath', or 'xpath:expr'"),
232
- x: z.number().optional().describe("Viewport X when using coordinate click (debugger)"),
233
- y: z.number().optional().describe("Viewport Y when using coordinate click (debugger)"),
234
- tabId: tabIdSchema.optional(),
246
+ .describe("CSS selector, //xpath, or xpath:expr. Provide this OR x+y."),
247
+ x: z.number().optional().describe("Viewport X coordinate for CDP click. Requires y."),
248
+ y: z.number().optional().describe("Viewport Y coordinate for CDP click. Requires x."),
249
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
235
250
  },
236
251
  }, async (args) => handleClickElementTool(args));
237
252
  mcp.registerTool("type_text", {
238
- description: "Type into an input, textarea, or contenteditable (selector optional; uses focused element if omitted). When clear is true (default), the extension selects all and deletes existing content before typing (content script or CDP key events on fallback). Set clear false to append without clearing.",
253
+ description: "Type text into input, textarea, or contenteditable. Prefer this over execute_script/evaluate_js for user-like editing. If selector is omitted, the currently focused element is used.",
239
254
  inputSchema: {
240
- text: z.string().describe("Text to type"),
241
- selector: z.string().min(1).optional(),
242
- x: z.number().optional().describe("Optional viewport X shows brief cursor feedback dot in the tab"),
243
- y: z.number().optional().describe("Optional viewport Y — shows brief cursor feedback dot in the tab"),
244
- tabId: tabIdSchema.optional(),
255
+ text: z
256
+ .string()
257
+ .describe("Exact text to type. Supports newlines. Empty string is allowed but usually unnecessary."),
258
+ selector: z
259
+ .string()
260
+ .min(1)
261
+ .optional()
262
+ .describe("Target field selector (CSS/XPath). If omitted, types into focused element."),
263
+ x: z
264
+ .number()
265
+ .optional()
266
+ .describe("Optional viewport X for visual cursor feedback only; does not choose element."),
267
+ y: z
268
+ .number()
269
+ .optional()
270
+ .describe("Optional viewport Y for visual cursor feedback only; does not choose element."),
271
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
245
272
  clear: z
246
273
  .boolean()
247
274
  .optional()
248
- .describe("If true (default), select-all and delete existing content before typing"),
275
+ .describe("If true (default), clear existing content first. If false, append/insert at caret."),
249
276
  },
250
277
  }, async ({ text, selector, x, y, tabId, clear }) => callTool("type_text", {
251
278
  text,
@@ -256,39 +283,39 @@ export function registerTools(mcp) {
256
283
  clear: clear !== false,
257
284
  }));
258
285
  mcp.registerTool("scroll_window", {
259
- description: "Scroll the target tab's main frame (via injected main-world script). Use selector to scroll an element into view; x/y for absolute scroll position; deltaX/deltaY for relative scroll; or direction (up/down/left/right) with optional amount (pixels, default ~85% of viewport). Precedence: selector, then absolute x/y, then direction+deltas, then deltaX/deltaY alone.",
286
+ description: "Scroll the page using one of four modes: selector into view, absolute position, directional step, or delta offsets. Use this when content is offscreen before click/type.",
260
287
  inputSchema: {
261
- x: z.number().optional().describe("Absolute scrollLeft"),
262
- y: z.number().optional().describe("Absolute scrollTop"),
263
- deltaX: z.number().optional().describe("Horizontal scroll delta (used alone or as fallback amount with direction)"),
264
- deltaY: z.number().optional().describe("Vertical scroll delta (used alone or as fallback amount with direction)"),
288
+ x: z.number().optional().describe("Absolute scrollLeft. Used when x or y is provided."),
289
+ y: z.number().optional().describe("Absolute scrollTop. Used when x or y is provided."),
290
+ deltaX: z.number().optional().describe("Horizontal scroll delta in pixels."),
291
+ deltaY: z.number().optional().describe("Vertical scroll delta in pixels."),
265
292
  direction: z
266
293
  .enum(["up", "down", "left", "right"])
267
294
  .optional()
268
- .describe("Scroll in this direction; combine with amount or non-zero delta on that axis"),
295
+ .describe("Directional scroll mode. Use with amount for deterministic movement."),
269
296
  amount: z
270
297
  .number()
271
298
  .optional()
272
- .describe("Distance in pixels when using direction (default ~85% of viewport height or width)"),
273
- selector: z.string().min(1).optional().describe("Element to scroll into view"),
274
- tabId: tabIdSchema.optional(),
275
- behavior: z.enum(["smooth", "instant"]).optional().describe("Scroll behavior (default instant)"),
299
+ .describe("Pixels to scroll in directional mode. Default is about 85% of viewport."),
300
+ selector: z.string().min(1).optional().describe("Element selector to scroll into view (highest precedence)."),
301
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
302
+ behavior: z.enum(["smooth", "instant"]).optional().describe("Scroll animation behavior. Default instant."),
276
303
  },
277
304
  }, async (args) => callTool("scroll_window", args));
278
305
  mcp.registerTool("capture_screenshot", {
279
- description: "Capture the visible area of a browser tab as an image (PNG or JPEG). Defaults to the active tab. May activate the target tab briefly to capture it.",
306
+ description: "Capture a viewport screenshot of the current page. Use for visual verification, debugging, and coordinate-based actions.",
280
307
  inputSchema: {
281
- tabId: tabIdSchema.optional().describe("Tab to capture; defaults to the active tab in the focused window"),
308
+ tabId: tabIdSchema.optional().describe("Tab to capture. Defaults to active tab in focused window."),
282
309
  format: z
283
310
  .enum(["png", "jpeg"])
284
311
  .optional()
285
- .describe("Image format (default png). JPEG supports quality."),
312
+ .describe("Output image format. Default png."),
286
313
  quality: z
287
314
  .number()
288
315
  .min(0)
289
316
  .max(100)
290
317
  .optional()
291
- .describe("JPEG quality 0100 (only used when format is jpeg)"),
318
+ .describe("JPEG quality 0-100; ignored unless format=jpeg."),
292
319
  },
293
320
  }, async ({ tabId, format, quality }) => {
294
321
  logToolCall("capture_screenshot", { tabId, format, quality });
@@ -328,24 +355,24 @@ export function registerTools(mcp) {
328
355
  }
329
356
  });
330
357
  mcp.registerTool("capture_and_upload_screenshot", {
331
- description: "Capture the visible tab (same as capture_screenshot) and POST it as multipart/form-data to an upload URL. On success returns mediaId and url from JSON. On failure (missing URL, network error, non-OK response, or unparseable JSON) returns base64 plus a temp file path. Defaults uploadUrl to env POKE_UPLOAD_URL.",
358
+ description: "Capture a viewport screenshot and upload it via multipart/form-data. Use when downstream systems need a hosted image URL. Falls back to base64 + local temp file when upload is unavailable or fails.",
332
359
  inputSchema: {
333
- tabId: tabIdSchema.optional().describe("Tab to capture; defaults to the active tab in the focused window"),
360
+ tabId: tabIdSchema.optional().describe("Tab to capture. Defaults to active tab in focused window."),
334
361
  format: z
335
362
  .enum(["png", "jpeg"])
336
363
  .optional()
337
- .describe("Image format (default png). JPEG supports quality."),
364
+ .describe("Output image format. Default png."),
338
365
  quality: z
339
366
  .number()
340
367
  .min(0)
341
368
  .max(100)
342
369
  .optional()
343
- .describe("JPEG quality 0100 (only used when format is jpeg)"),
370
+ .describe("JPEG quality 0-100; ignored unless format=jpeg."),
344
371
  uploadUrl: z
345
372
  .string()
346
373
  .min(1)
347
374
  .optional()
348
- .describe("POST endpoint for multipart upload; defaults to POKE_UPLOAD_URL when set"),
375
+ .describe("Upload endpoint URL. If omitted, uses env POKE_UPLOAD_URL when configured."),
349
376
  },
350
377
  }, async ({ tabId, format, quality, uploadUrl }) => {
351
378
  logToolCall("capture_and_upload_screenshot", { tabId, format, quality, uploadUrl });
@@ -399,11 +426,11 @@ export function registerTools(mcp) {
399
426
  }
400
427
  });
401
428
  mcp.registerTool("full_page_capture", {
402
- description: "Capture a full-page screenshot by scrolling the viewport and stitching strips (OffscreenCanvas). Slower than capture_screenshot; may duplicate fixed headers between strips.",
429
+ description: "Capture a stitched full-page screenshot by scrolling and combining strips. Use when viewport screenshot is insufficient. Slower than capture_screenshot and may duplicate sticky/fixed UI.",
403
430
  inputSchema: {
404
- tabId: tabIdSchema.optional(),
405
- format: z.enum(["png", "jpeg"]).optional(),
406
- quality: z.number().min(0).max(100).optional().describe("JPEG quality when format is jpeg"),
431
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
432
+ format: z.enum(["png", "jpeg"]).optional().describe("Output image format. Default png."),
433
+ quality: z.number().min(0).max(100).optional().describe("JPEG quality 0-100; only for format=jpeg."),
407
434
  },
408
435
  }, async ({ tabId, format, quality }) => {
409
436
  logToolCall("full_page_capture", { tabId, format, quality });
@@ -443,26 +470,26 @@ export function registerTools(mcp) {
443
470
  }
444
471
  });
445
472
  mcp.registerTool("pdf_export", {
446
- description: "Export the current page as PDF via CDP Page.printToPDF (printBackground true). Returns base64-encoded PDF data.",
473
+ description: "Export the page to PDF using CDP Page.printToPDF. Use for printable artifacts instead of screenshots.",
447
474
  inputSchema: {
448
- tabId: tabIdSchema.optional(),
449
- landscape: z.boolean().optional(),
450
- scale: z.number().positive().max(2).optional().describe("Scale factor (default 1)"),
475
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
476
+ landscape: z.boolean().optional().describe("Render PDF in landscape orientation when true."),
477
+ scale: z.number().positive().max(2).optional().describe("Print scale factor. Default 1."),
451
478
  },
452
479
  }, async ({ tabId, landscape, scale }) => callTool("pdf_export", { tabId, landscape, scale }, 120_000));
453
480
  mcp.registerTool("device_emulate", {
454
- description: "Apply CDP device metrics and optional user-agent override (mobile/tablet/desktop presets). Debugger attaches briefly; viewport may reset when the session detaches.",
481
+ description: "Emulate device viewport metrics (mobile/tablet/desktop) and optional user-agent override. Use before responsive layout checks or device-specific flows.",
455
482
  inputSchema: {
456
- tabId: tabIdSchema.optional(),
457
- device: z.enum(["mobile", "tablet", "desktop"]).optional().describe("Preset (default desktop)"),
458
- width: z.number().int().positive().optional(),
459
- height: z.number().int().positive().optional(),
460
- deviceScaleFactor: z.number().positive().optional(),
461
- userAgent: z.string().optional(),
483
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
484
+ device: z.enum(["mobile", "tablet", "desktop"]).optional().describe("Preset metrics profile. Default desktop."),
485
+ width: z.number().int().positive().optional().describe("Override viewport width in CSS pixels."),
486
+ height: z.number().int().positive().optional().describe("Override viewport height in CSS pixels."),
487
+ deviceScaleFactor: z.number().positive().optional().describe("Override pixel ratio / device scale factor."),
488
+ userAgent: z.string().optional().describe("Optional user-agent override string."),
462
489
  },
463
490
  }, async ({ tabId, device, width, height, deviceScaleFactor, userAgent }) => callTool("device_emulate", { tabId, device, width, height, deviceScaleFactor, userAgent }, 30_000));
464
491
  mcp.registerTool("managetabs", {
465
- description: "List tabs, read the active tab, open, close, or switch tabs in the connected Chrome profile.",
492
+ description: "Manage browser tabs: list, get active, open, close, or switch. Use this for tab orchestration; use navigate_to for load-aware URL navigation.",
466
493
  inputSchema: ManageTabsSchema,
467
494
  }, async (args) => {
468
495
  logToolCall("managetabs", args);
@@ -484,21 +511,21 @@ export function registerTools(mcp) {
484
511
  }
485
512
  });
486
513
  mcp.registerTool("evaluate_js", {
487
- description: "Evaluate JavaScript in the page's main world (via content-script relay)",
514
+ description: "Evaluate JavaScript in the page context via content-script relay. Use for lightweight reads/computations. Prefer dedicated tools (find_element, click_element, type_text) for interactions.",
488
515
  inputSchema: {
489
- code: z.string().min(1).describe("JavaScript source to evaluate"),
490
- tabId: tabIdSchema.optional(),
516
+ code: z.string().min(1).describe("JavaScript expression or statement block to run in page context."),
517
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
491
518
  timeoutMs: z
492
519
  .number()
493
520
  .int()
494
521
  .positive()
495
522
  .max(120_000)
496
523
  .optional()
497
- .describe("Optional timeout in ms (default 30000 in extension)"),
524
+ .describe("Execution timeout in milliseconds. Use higher values for heavy page scripts."),
498
525
  },
499
526
  }, async ({ code, tabId, timeoutMs }) => callTool("evaluate_js", { code, tabId, timeoutMs }, EVALUATE_JS_TIMEOUT_MS));
500
527
  mcp.registerTool("get_dom_snapshot", {
501
- description: "Capture a compact DOM tree from the active (or chosen) tab: tags, ids, classes, roles, aria-label, short text, bounding rects, interactivity, and children up to maxDepth.",
528
+ description: "Return a compact DOM tree snapshot with structure, text, roles, bounds, and interactivity hints. Use for broad page understanding and multi-step planning.",
502
529
  inputSchema: {
503
530
  tabId: tabIdSchema.optional().describe("Tab to read; defaults to active tab in focused window"),
504
531
  includeHidden: z
@@ -515,9 +542,9 @@ export function registerTools(mcp) {
515
542
  },
516
543
  }, async ({ tabId, includeHidden, maxDepth }) => callTool("get_dom_snapshot", { tabId, includeHidden, maxDepth }, EVALUATE_JS_TIMEOUT_MS));
517
544
  mcp.registerTool("get_accessibility_tree", {
518
- description: "Flat list of semantic nodes (roles, names, selectors, heading levels, form state) in reading order (top-to-bottom, left-to-right).",
545
+ description: "Return a flattened accessibility-oriented view: role/name/selector/state in reading order. Use when semantic targeting is more reliable than raw DOM shape.",
519
546
  inputSchema: {
520
- tabId: tabIdSchema.optional(),
547
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
521
548
  interactiveOnly: z
522
549
  .boolean()
523
550
  .optional()
@@ -525,104 +552,107 @@ export function registerTools(mcp) {
525
552
  },
526
553
  }, async ({ tabId, interactiveOnly }) => callTool("get_accessibility_tree", { tabId, interactiveOnly }, EVALUATE_JS_TIMEOUT_MS));
527
554
  mcp.registerTool("find_element", {
528
- description: "Find up to 5 elements by CSS selector, visible text, ARIA/title/alt, or XPath. Strategy auto tries css, then text, then aria. Prefer this over raw coordinates — always get bounding rect first, then compute center. TIP: When you need to look up multiple elements, prefer calling get_dom_snapshot once and searching within that result — it is more efficient than multiple find_element round-trips.",
555
+ description: "Find up to 5 matching elements by CSS, text, ARIA-like attributes, or XPath. Use this before click/type to obtain robust selectors and bounds. Prefer this over guessing coordinates.",
529
556
  inputSchema: {
530
- query: z.string().min(1).describe("Selector string, text snippet, aria substring, or XPath expression"),
531
- tabId: tabIdSchema.optional(),
557
+ query: z
558
+ .string()
559
+ .min(1)
560
+ .describe("Search query: selector, visible text snippet, aria/title/alt text, or xpath expression."),
561
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
532
562
  strategy: z
533
563
  .enum(["auto", "css", "text", "aria", "xpath"])
534
564
  .optional()
535
- .describe("Matching strategy (default auto)"),
565
+ .describe("Matching strategy. auto tries css -> text -> aria."),
536
566
  },
537
567
  }, async ({ query, tabId, strategy }) => callTool("find_element", { query, tabId, strategy }, EVALUATE_JS_TIMEOUT_MS));
538
568
  mcp.registerTool("read_page", {
539
- description: "Extract page content as structured data (default), plain text, or lightweight markdown (headings, links, lists, code). Skips script/style/nav/header/footer noise.",
569
+ description: "Extract readable page content as structured JSON, plain text, or lightweight markdown. Use this for content understanding rather than interaction.",
540
570
  inputSchema: {
541
- tabId: tabIdSchema.optional(),
571
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
542
572
  format: z
543
573
  .enum(["markdown", "text", "structured"])
544
574
  .optional()
545
- .describe("structured (default), text, or markdown"),
575
+ .describe("Output format: structured (default), text, or markdown."),
546
576
  },
547
577
  }, async ({ tabId, format }) => callTool("read_page", { tabId, format }, EVALUATE_JS_TIMEOUT_MS));
548
578
  mcp.registerTool("wait_for_selector", {
549
- description: "Poll every 100ms until a CSS selector or XPath matches in the page (content script). Optional strict visibility checks.",
579
+ description: "Wait until an element exists (and optionally is visible). Use after actions that trigger async rendering, route changes, or delayed widgets.",
550
580
  inputSchema: {
551
581
  selector: z
552
582
  .string()
553
583
  .min(1)
554
584
  .describe("CSS selector, '//xpath', or 'xpath:expr' (same as find_element)"),
555
- tabId: tabIdSchema.optional(),
585
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
556
586
  timeout: z
557
587
  .number()
558
588
  .int()
559
589
  .positive()
560
590
  .max(120_000)
561
591
  .optional()
562
- .describe("Max wait in ms (default 10000)"),
592
+ .describe("Maximum wait in milliseconds. Default 10000."),
563
593
  visible: z
564
594
  .boolean()
565
595
  .optional()
566
- .describe("If true, require visible layout (offsetParent / fixed-sticky rules) and not display:none, visibility:hidden, or opacity:0"),
596
+ .describe("If true, require element to be visually present (not display:none, hidden, or fully transparent)."),
567
597
  },
568
598
  }, async ({ selector, tabId, timeout, visible }) => {
569
599
  const t = timeout ?? 10_000;
570
600
  return callTool("wait_for_selector", { selector, tabId, timeout: t, visible }, t + 3000);
571
601
  });
572
602
  mcp.registerTool("execute_script", {
573
- description: "Run an async script in the page main world via chrome.scripting. The script body is wrapped so `await` works; `args` is available as `args`. Result is JSON-clone-safe (circular refs become \"[Circular]\").",
603
+ description: "Execute async JavaScript via chrome.scripting with extension privileges. Use when evaluate_js is blocked by page constraints or you need script arguments/results in one call.",
574
604
  inputSchema: {
575
- script: z.string().min(1).describe("JavaScript source body executed as async IIFE"),
576
- tabId: tabIdSchema.optional(),
577
- args: z.array(z.unknown()).optional().describe("Array available inside the script as `args`"),
605
+ script: z.string().min(1).describe("JavaScript function body executed as an async IIFE."),
606
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
607
+ args: z.array(z.unknown()).optional().describe("Arguments array exposed inside the script as `args`."),
578
608
  },
579
609
  }, async ({ script, tabId, args }) => callTool("execute_script", { script, tabId, args: args ?? [] }, 60_000));
580
610
  mcp.registerTool("error_reporter", {
581
- description: "Return the last N uncaught page errors and unhandled promise rejections (separate from console logs): message, stack, filename, line/column, timestamp.",
611
+ description: "Return uncaught errors and unhandled promise rejections from the page context. Use this to diagnose runtime failures after interactions.",
582
612
  inputSchema: {
583
- tabId: tabIdSchema.optional(),
613
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
584
614
  limit: z.number().int().positive().max(200).optional().describe("Max entries (default 50)"),
585
615
  },
586
616
  }, async ({ tabId, limit }) => callTool("error_reporter", { tabId, limit: limit ?? 50 }));
587
617
  mcp.registerTool("get_performance_metrics", {
588
- description: "Navigation timing (domContentLoaded, loadEventEnd), paint timings (firstPaint, firstContentfulPaint), and JS heap from CDP Performance.getMetrics (requires debugger attach briefly).",
618
+ description: "Return performance metrics (navigation timings, paint timings, JS heap) via CDP. Use for quick perf triage without full profiling.",
589
619
  inputSchema: {
590
- tabId: tabIdSchema.optional(),
620
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
591
621
  },
592
622
  }, async ({ tabId }) => callTool("get_performance_metrics", { tabId }, EVALUATE_JS_TIMEOUT_MS));
593
623
  mcp.registerTool("get_console_logs", {
594
- description: "Read console entries captured by the content script ring buffer (max 500). Requires the page to have loaded the poke-browser content script.",
624
+ description: "Read buffered console logs captured by the content script. Use for debugging page behavior and script errors.",
595
625
  inputSchema: {
596
- tabId: tabIdSchema.optional(),
626
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
597
627
  level: z.enum(["all", "error", "warn", "info", "log"]).optional().describe("Filter (default all)"),
598
628
  limit: z.number().int().positive().max(500).optional().describe("Max entries (default 100)"),
599
629
  },
600
630
  }, async ({ tabId, level, limit }) => callTool("get_console_logs", { tabId, level: level ?? "all", limit: limit ?? 100 }));
601
631
  mcp.registerTool("clear_console_logs", {
602
- description: "Clear the tab's console capture ring buffer in the content script.",
632
+ description: "Clear buffered console logs for a tab.",
603
633
  inputSchema: {
604
- tabId: tabIdSchema.optional(),
634
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
605
635
  },
606
636
  }, async ({ tabId }) => callTool("clear_console_logs", { tabId }));
607
637
  mcp.registerTool("start_network_capture", {
608
- description: "Enable CDP Network.* events for a tab and clear its prior in-memory network buffer (max 200 requests per tab).",
638
+ description: "Start capturing network traffic for a tab and reset its in-memory buffer. Call this before reproducing a request flow you want to inspect.",
609
639
  inputSchema: {
610
- tabId: tabIdSchema.optional(),
640
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
611
641
  },
612
642
  }, async ({ tabId }) => callTool("start_network_capture", { tabId }));
613
643
  mcp.registerTool("stop_network_capture", {
614
- description: "Detach CDP from the tab when it was attached only for network capture (stops new events).",
644
+ description: "Stop network capture for a tab (no new network events recorded).",
615
645
  inputSchema: {
616
- tabId: tabIdSchema.optional(),
646
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
617
647
  },
618
648
  }, async ({ tabId }) => callTool("stop_network_capture", { tabId }));
619
649
  mcp.registerTool("get_network_logs", {
620
- description: "Return buffered network requests for a tab. Optionally include response bodies (Network.getResponseBody). Use start_network_capture first to record new traffic.",
650
+ description: "Return buffered network requests for a tab. Optionally include response bodies. Use start_network_capture first to collect fresh traffic.",
621
651
  inputSchema: {
622
- tabId: tabIdSchema.optional(),
623
- filter: z.string().optional().describe("Substring filter on URL"),
624
- limit: z.number().int().positive().max(200).optional().describe("Max entries (default 50)"),
625
- includeBody: z.boolean().optional().describe("Fetch bodies for completed requests (slower)"),
652
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
653
+ filter: z.string().optional().describe("Optional substring filter applied to request URL."),
654
+ limit: z.number().int().positive().max(200).optional().describe("Maximum entries to return. Default 50."),
655
+ includeBody: z.boolean().optional().describe("Include response bodies for completed requests. Slower."),
626
656
  },
627
657
  }, async ({ tabId, filter, limit, includeBody }) => callTool("get_network_logs", {
628
658
  tabId,
@@ -631,76 +661,84 @@ export function registerTools(mcp) {
631
661
  includeBody: includeBody === true,
632
662
  }, includeBody === true ? 60_000 : PENDING_REQUEST_TIMEOUT_MS));
633
663
  mcp.registerTool("clear_network_logs", {
634
- description: "Clear in-memory network request buffer for a tab.",
664
+ description: "Clear buffered network logs for a tab.",
635
665
  inputSchema: {
636
- tabId: tabIdSchema.optional(),
666
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
637
667
  },
638
668
  }, async ({ tabId }) => callTool("clear_network_logs", { tabId }));
639
669
  mcp.registerTool("hover_element", {
640
- description: "Hover using a selector (content script: mousemove/mouseover/mouseenter at element center) or viewport coordinates (CDP mouseMoved).",
670
+ description: "Hover over an element by selector or coordinates. Use to reveal hover menus/tooltips before clicking.",
641
671
  inputSchema: {
642
- selector: z.string().min(1).optional(),
643
- x: z.number().optional(),
644
- y: z.number().optional(),
645
- tabId: tabIdSchema.optional(),
672
+ selector: z.string().min(1).optional().describe("Target selector (CSS/XPath). Provide this OR x+y."),
673
+ x: z.number().optional().describe("Viewport X coordinate for CDP hover. Requires y."),
674
+ y: z.number().optional().describe("Viewport Y coordinate for CDP hover. Requires x."),
675
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
646
676
  },
647
677
  }, async ({ selector, x, y, tabId }) => callTool("hover_element", { selector, x, y, tabId }));
648
678
  const fillFormFieldSchema = z.object({
649
- selector: z.string().min(1),
650
- value: z.string(),
651
- type: z.enum(["text", "select", "checkbox", "radio", "file"]).optional(),
679
+ selector: z.string().min(1).describe("Field selector (CSS/XPath)."),
680
+ value: z.string().describe("Value to apply to the matched field."),
681
+ type: z
682
+ .enum(["text", "select", "checkbox", "radio", "file"])
683
+ .optional()
684
+ .describe("Optional field type hint. Usually inferred automatically."),
652
685
  });
653
686
  mcp.registerTool("script_inject", {
654
- description: "Inject a `<script>` into the page DOM (main world), unlike evaluate_js/execute_script isolated worlds. Optional persistent registration survives navigations on the same origin via a bundled loader + storage.",
687
+ description: "Inject a classic <script> tag into the page DOM (main world). Use when code must run as true page script rather than isolated execution contexts. Supports optional persistent re-injection by origin.",
655
688
  inputSchema: {
656
- script: z.string().min(1).describe("JavaScript source executed as a classic script tag in the page"),
657
- tabId: tabIdSchema.optional(),
658
- persistent: z.boolean().optional().describe("If true, store and re-inject on future loads for this origin (registerContentScripts)"),
689
+ script: z.string().min(1).describe("JavaScript source inserted as a classic script tag."),
690
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
691
+ persistent: z.boolean().optional().describe("Persist script for future loads on same origin."),
659
692
  runAt: z
660
693
  .enum(["document_start", "document_end", "document_idle"])
661
694
  .optional()
662
- .describe("When to inject (default document_idle for one-shot; persistent loader honors timing per entry)"),
695
+ .describe("Injection timing. Default document_idle."),
663
696
  },
664
697
  }, async ({ script, tabId, persistent, runAt }) => callTool("script_inject", { script, tabId, persistent, runAt: runAt ?? "document_idle" }, EVALUATE_JS_TIMEOUT_MS));
665
698
  mcp.registerTool("cookie_manager", {
666
- description: "Read/write/delete cookies via chrome.cookies (Chrome profile). Actions: get, get_all, set, delete, delete_all.",
699
+ description: "Read/write/delete browser cookies via chrome.cookies. Use this for session setup, auth checks, and cookie cleanup.",
667
700
  inputSchema: {
668
- action: z.enum(["get", "get_all", "set", "delete", "delete_all"]),
669
- url: z.string().optional().describe("Cookie store URL (often required for get/set/delete)"),
670
- name: z.string().optional(),
671
- value: z.string().optional(),
672
- domain: z.string().optional().describe("For get_all / delete_all / some set operations"),
673
- path: z.string().optional(),
674
- secure: z.boolean().optional(),
675
- httpOnly: z.boolean().optional(),
676
- expirationDate: z.number().optional(),
677
- tabId: tabIdSchema.optional().describe("Derive url from tab when url omitted"),
701
+ action: z
702
+ .enum(["get", "get_all", "set", "delete", "delete_all"])
703
+ .describe("Cookie operation to run."),
704
+ url: z.string().optional().describe("Cookie URL scope. Often required for get/set/delete."),
705
+ name: z.string().optional().describe("Cookie name (required for get/set/delete)."),
706
+ value: z.string().optional().describe("Cookie value (required for set)."),
707
+ domain: z.string().optional().describe("Cookie domain (used by get_all/delete_all and some set cases)."),
708
+ path: z.string().optional().describe("Cookie path scope."),
709
+ secure: z.boolean().optional().describe("Set secure attribute when action=set."),
710
+ httpOnly: z.boolean().optional().describe("Set httpOnly attribute when action=set."),
711
+ expirationDate: z.number().optional().describe("Unix timestamp expiry for action=set."),
712
+ tabId: tabIdSchema.optional().describe("Use tab URL when url is omitted."),
678
713
  },
679
714
  }, async (args) => callTool("cookie_manager", args, PENDING_REQUEST_TIMEOUT_MS));
680
715
  mcp.registerTool("fill_form", {
681
- description: "Fill multiple form fields in one round trip (text, select, checkbox, radio). Optional form submit via selector or default submit button.",
716
+ description: "Fill multiple form fields in one call. Use for deterministic multi-field form completion with optional submit.",
682
717
  inputSchema: {
683
- fields: z.array(fillFormFieldSchema).min(1),
684
- tabId: tabIdSchema.optional(),
685
- submitAfter: z.boolean().optional(),
686
- submitSelector: z.string().optional().describe("CSS selector for submit control; else first [type=submit] in same form"),
718
+ fields: z.array(fillFormFieldSchema).min(1).describe("Fields to fill in order."),
719
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
720
+ submitAfter: z.boolean().optional().describe("Submit form after filling fields."),
721
+ submitSelector: z
722
+ .string()
723
+ .optional()
724
+ .describe("Optional submit control selector. If omitted, uses first submit control in same form."),
687
725
  },
688
726
  }, async ({ fields, tabId, submitAfter, submitSelector }) => callTool("fill_form", { fields, tabId, submitAfter, submitSelector }, EVALUATE_JS_TIMEOUT_MS));
689
727
  mcp.registerTool("get_storage", {
690
- description: "Read localStorage, sessionStorage (page origin), or cookies (Chrome cookie store for the tab URL). Single key or entire map.",
728
+ description: "Read storage values from localStorage, sessionStorage, or cookies. Use key for one value or omit to fetch full map.",
691
729
  inputSchema: {
692
- type: z.enum(["local", "session", "cookie"]),
693
- key: z.string().optional(),
694
- tabId: tabIdSchema.optional(),
730
+ type: z.enum(["local", "session", "cookie"]).describe("Storage backend to read."),
731
+ key: z.string().optional().describe("Optional key name. Omit to return all keys/values."),
732
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
695
733
  },
696
734
  }, async ({ type, key, tabId }) => callTool("get_storage", { type, key, tabId }, EVALUATE_JS_TIMEOUT_MS));
697
735
  mcp.registerTool("set_storage", {
698
- description: "Write a key to localStorage or sessionStorage in the page origin (not cookies).",
736
+ description: "Write one key/value to localStorage or sessionStorage for the page origin.",
699
737
  inputSchema: {
700
- type: z.enum(["local", "session"]),
701
- key: z.string().min(1),
702
- value: z.string(),
703
- tabId: tabIdSchema.optional(),
738
+ type: z.enum(["local", "session"]).describe("Storage backend to write."),
739
+ key: z.string().min(1).describe("Storage key to set."),
740
+ value: z.string().describe("String value to store."),
741
+ tabId: tabIdSchema.optional().describe("Optional target tab id; defaults to active tab."),
704
742
  },
705
743
  }, async ({ type, key, value, tabId }) => callTool("set_storage", { type, key, value, tabId }, PENDING_REQUEST_TIMEOUT_MS));
706
744
  }
package/dist/tools.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
@@ -259,7 +259,7 @@ function handleResolveClickPoint(message, sendResponse) {
259
259
  /**
260
260
  * React / Draft.js-style editors listen for `beforeinput` + `input` (InputEvent) rather than only
261
261
  * mutating textContent. Mirror native insertion order: beforeinput → DOM update → input → change.
262
- * Clears placeholder text and enables Post buttons on Draft.js editors (X.com, LinkedIn, etc.).
262
+ * Helps placeholder clearing and submit affordances on Draft.js surfaces (e.g. X.com, LinkedIn).
263
263
  * @param {HTMLElement} el
264
264
  * @param {string} text
265
265
  * @param {boolean} shouldClear
@@ -298,9 +298,7 @@ function insertTextIntoContentEditable(el, text, shouldClear) {
298
298
  inputType: "insertText",
299
299
  data: text,
300
300
  });
301
- el.dispatchEvent(
302
- new InputEvent("beforeinput", { ...evInit, cancelable: true })
303
- );
301
+ el.dispatchEvent(new InputEvent("beforeinput", { ...evInit, cancelable: true }));
304
302
 
305
303
  if (shouldClear) {
306
304
  el.textContent = text;
@@ -339,6 +337,49 @@ function insertTextIntoContentEditable(el, text, shouldClear) {
339
337
  el.dispatchEvent(new Event("change", { bubbles: true }));
340
338
  }
341
339
 
340
+ /**
341
+ * Same InputEvent ordering for `<input>` / `<textarea>` (React-controlled fields).
342
+ * @param {HTMLInputElement | HTMLTextAreaElement} input
343
+ * @param {string} text
344
+ * @param {boolean} shouldClear
345
+ */
346
+ function insertTextIntoFormControl(input, text, shouldClear) {
347
+ let start = 0;
348
+ let end = input.value.length;
349
+ if (!shouldClear) {
350
+ start = typeof input.selectionStart === "number" ? input.selectionStart : input.value.length;
351
+ end = typeof input.selectionEnd === "number" ? input.selectionEnd : input.value.length;
352
+ }
353
+
354
+ input.focus();
355
+ if (shouldClear) {
356
+ input.select();
357
+ document.execCommand("delete");
358
+ }
359
+
360
+ const evInit = /** @type {InputEventInit} */ ({
361
+ bubbles: true,
362
+ composed: true,
363
+ inputType: "insertText",
364
+ data: text,
365
+ });
366
+ input.dispatchEvent(new InputEvent("beforeinput", { ...evInit, cancelable: true }));
367
+
368
+ if (shouldClear) {
369
+ input.value = text;
370
+ } else {
371
+ const v = input.value;
372
+ input.value = v.slice(0, start) + text + v.slice(end);
373
+ const pos = start + text.length;
374
+ if (typeof input.setSelectionRange === "function") {
375
+ input.setSelectionRange(pos, pos);
376
+ }
377
+ }
378
+
379
+ input.dispatchEvent(new InputEvent("input", { ...evInit, cancelable: false }));
380
+ input.dispatchEvent(new Event("change", { bubbles: true }));
381
+ }
382
+
342
383
  /**
343
384
  * @param {unknown} message
344
385
  * @param {(r: unknown) => void} sendResponse
@@ -368,17 +409,7 @@ function handleTypeText(message, sendResponse) {
368
409
 
369
410
  const tag = el.tagName.toLowerCase();
370
411
  if (tag === "input" || tag === "textarea") {
371
- const input = /** @type {HTMLInputElement | HTMLTextAreaElement} */ (el);
372
- input.focus();
373
- if (shouldClear) {
374
- input.select();
375
- document.execCommand("delete");
376
- input.value = text;
377
- } else {
378
- input.value = (input.value || "") + text;
379
- }
380
- input.dispatchEvent(new InputEvent("input", { bubbles: true, data: text, inputType: "insertText" }));
381
- input.dispatchEvent(new Event("change", { bubbles: true }));
412
+ insertTextIntoFormControl(/** @type {HTMLInputElement | HTMLTextAreaElement} */ (el), text, shouldClear);
382
413
  sendResponse({ success: true, charsTyped: text.length });
383
414
  return;
384
415
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "manifest_version": 3,
3
3
  "name": "poke-browser",
4
- "version": "0.4.3",
4
+ "version": "0.4.7",
5
5
  "description": "Browser automation bridge for MCP agents via WebSocket.",
6
6
  "permissions": [
7
7
  "tabs",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "poke-browser",
3
- "version": "0.4.4",
3
+ "version": "0.4.7",
4
4
  "description": "MCP server + WebSocket bridge for the poke-browser Chrome extension",
5
5
  "type": "module",
6
6
  "engines": {
@@ -55,6 +55,7 @@
55
55
  "devDependencies": {
56
56
  "@semantic-release/changelog": "^6.0.3",
57
57
  "@semantic-release/commit-analyzer": "^13.0.0",
58
+ "@semantic-release/exec": "^7.1.0",
58
59
  "@semantic-release/git": "^10.0.1",
59
60
  "@semantic-release/github": "^11.0.0",
60
61
  "@semantic-release/npm": "^12.0.1",
@@ -62,7 +63,6 @@
62
63
  "@types/express": "^5.0.0",
63
64
  "@types/node": "^22.13.10",
64
65
  "@types/ws": "^8.18.1",
65
- "jsdom": "^29.0.1",
66
66
  "semantic-release": "^24.2.0",
67
67
  "tsx": "^4.19.3",
68
68
  "typescript": "^5.8.2",