@olib-ai/owl-browser-mcp 2.0.4 → 2.0.6

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.
Files changed (2) hide show
  1. package/dist/index.js +343 -36
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -20369,7 +20369,7 @@ var openapi_default = {
20369
20369
  info: {
20370
20370
  title: "Owl Browser API",
20371
20371
  description: "REST API for browser automation with anti-detection capabilities",
20372
- version: "1.0.8"
20372
+ version: "1.0.9"
20373
20373
  },
20374
20374
  servers: [
20375
20375
  {
@@ -20442,10 +20442,12 @@ var openapi_default = {
20442
20442
  enum: [
20443
20443
  "html",
20444
20444
  "text",
20445
- "markdown"
20445
+ "markdown",
20446
+ "pngView",
20447
+ "pngFull"
20446
20448
  ]
20447
20449
  },
20448
- description: "Output format. html=raw HTML, text=extracted text, markdown=markdown conversion. Default: html"
20450
+ description: "Output format. html=raw HTML, text=extracted text, markdown=markdown conversion, pngView=viewport screenshot as PNG image, pngFull=fullpage screenshot as PNG image. Default: html"
20449
20451
  },
20450
20452
  {
20451
20453
  name: "os",
@@ -20598,6 +20600,19 @@ var openapi_default = {
20598
20600
  timezone: {
20599
20601
  type: "string",
20600
20602
  description: "Override browser timezone. IANA timezone format (e.g., 'America/New_York', 'Europe/London', 'Asia/Tokyo'). If not set, falls back to: 1) proxy-detected timezone (if proxy configured with spoof_timezone), 2) VM profile timezone, 3) system default. This parameter works without proxy configuration."
20603
+ },
20604
+ screen_size: {
20605
+ type: "string",
20606
+ description: "Screen resolution for the browser context. Format: 'WIDTHxHEIGHT'. If not set, a random screen size is selected from the monitor catalog.",
20607
+ enum: [
20608
+ "1920x1080",
20609
+ "2560x1440",
20610
+ "3440x1440",
20611
+ "3840x2160",
20612
+ "3840x1600",
20613
+ "5120x2160",
20614
+ "5120x1440"
20615
+ ]
20601
20616
  }
20602
20617
  }
20603
20618
  }
@@ -20990,10 +21005,54 @@ var openapi_default = {
20990
21005
  }
20991
21006
  }
20992
21007
  },
21008
+ "/api/execute/browser_set_content": {
21009
+ post: {
21010
+ summary: "Browser Set Content",
21011
+ description: "Set the page's HTML content directly. Replaces the current page content with the provided HTML. The page URL will be 'about:blank'. Useful for rendering HTML templates, testing, or injecting content without making a network request.",
21012
+ tags: [
21013
+ "General"
21014
+ ],
21015
+ requestBody: {
21016
+ required: true,
21017
+ content: {
21018
+ "application/json": {
21019
+ schema: {
21020
+ type: "object",
21021
+ properties: {
21022
+ context_id: {
21023
+ type: "string",
21024
+ description: "The unique identifier of the browser context (e.g., 'ctx_000001')"
21025
+ },
21026
+ html: {
21027
+ type: "string",
21028
+ description: "The HTML content to set as the page body. Can be a full HTML document or a fragment. The page URL will be set to 'about:blank'"
21029
+ }
21030
+ },
21031
+ required: [
21032
+ "context_id",
21033
+ "html"
21034
+ ]
21035
+ }
21036
+ }
21037
+ }
21038
+ },
21039
+ responses: {
21040
+ "200": {
21041
+ description: "Successful response"
21042
+ },
21043
+ "400": {
21044
+ description: "Bad request"
21045
+ },
21046
+ "401": {
21047
+ description: "Unauthorized"
21048
+ }
21049
+ }
21050
+ }
21051
+ },
20993
21052
  "/api/execute/browser_click": {
20994
21053
  post: {
20995
21054
  summary: "Browser Click",
20996
- description: "Click on an element using CSS selector, XY coordinates, or natural language description. Supports semantic element finding using AI - describe what you want to click (e.g., 'login button', 'search icon') and the system will locate the right element. Simulates a real mouse click with proper event dispatch.",
21055
+ description: "Click on an element using CSS selector, XY coordinates, or natural language description. Supports semantic element finding using AI - describe what you want to click (e.g., 'login button', 'search icon') and the system will locate the right element. Simulates a real mouse click with proper event dispatch. Optionally hold the mouse button for press-and-hold interactions using hold_ms.",
20997
21056
  tags: [
20998
21057
  "General"
20999
21058
  ],
@@ -21011,6 +21070,14 @@ var openapi_default = {
21011
21070
  selector: {
21012
21071
  type: "string",
21013
21072
  description: "Target element to click. Accepts: CSS selector (e.g., '#submit-btn', '.nav-link'), XY coordinates as 'Xx Y' (e.g., '100x200'), or natural language description (e.g., 'login button', 'search icon'). Semantic descriptions use AI to find the element"
21073
+ },
21074
+ hold_ms: {
21075
+ type: "string",
21076
+ description: "Duration in milliseconds to hold the mouse button down before releasing. Use for press-and-hold interactions (e.g., long press menus, drag initiation). Default: 0 (immediate click)"
21077
+ },
21078
+ index: {
21079
+ type: "string",
21080
+ description: "When multiple elements match the selector, click the Nth element (0-based). Uses querySelectorAll()[index] instead of querySelector(). Default: -1 (first match)"
21014
21081
  }
21015
21082
  },
21016
21083
  required: [
@@ -21037,7 +21104,7 @@ var openapi_default = {
21037
21104
  "/api/execute/browser_type": {
21038
21105
  post: {
21039
21106
  summary: "Browser Type",
21040
- description: "Type text into an input field with human-like keystroke simulation. Target the field using CSS selector, coordinates, or natural language (e.g., 'email field'). Note: Does NOT clear existing content - use browser_clear_input first if you need to replace text rather than append.",
21107
+ description: "Type text into an input field with human-like keystroke simulation. Target the field using CSS selector, coordinates, or natural language (e.g., 'email field'). When selector is omitted, types into the currently focused element. Note: Does NOT clear existing content - use browser_clear_input first if you need to replace text rather than append.",
21041
21108
  tags: [
21042
21109
  "General"
21043
21110
  ],
@@ -21054,16 +21121,19 @@ var openapi_default = {
21054
21121
  },
21055
21122
  selector: {
21056
21123
  type: "string",
21057
- description: `Target input field. Accepts: CSS selector (e.g., '#email', 'input[name="username"]'), XY coordinates (e.g., '100x200'), or natural language description (e.g., 'email field', 'search box')`
21124
+ description: `Target input field. Accepts: CSS selector (e.g., '#email', 'input[name="username"]'), XY coordinates (e.g., '100x200'), or natural language description (e.g., 'email field', 'search box'). When omitted, types into the currently focused element (document.activeElement)`
21058
21125
  },
21059
21126
  text: {
21060
21127
  type: "string",
21061
21128
  description: "The text to type into the input field. Simulates real keystrokes with human-like timing. Existing content is NOT cleared - use browser_clear_input first if needed"
21129
+ },
21130
+ index: {
21131
+ type: "string",
21132
+ description: "When multiple elements match the selector, target the Nth element (0-based). Uses querySelectorAll()[index] instead of querySelector(). Default: -1 (first match)"
21062
21133
  }
21063
21134
  },
21064
21135
  required: [
21065
21136
  "context_id",
21066
- "selector",
21067
21137
  "text"
21068
21138
  ]
21069
21139
  }
@@ -21135,7 +21205,7 @@ var openapi_default = {
21135
21205
  "/api/execute/browser_press_key": {
21136
21206
  post: {
21137
21207
  summary: "Browser Press Key",
21138
- description: "Press a special keyboard key like Enter, Tab, Escape, or arrow keys. The key is sent to the currently focused element. Common uses: Enter to submit forms, Tab to move between fields, Escape to close modals, Arrow keys for navigation in menus or sliders.",
21208
+ description: "Press a keyboard key. Supports special keys (Enter, Tab, Escape, arrow keys, etc.) and single characters (a-z, A-Z, 0-9). The key is sent to the currently focused element. Common uses: Enter to submit forms, Tab to move between fields, Escape to close modals, Arrow keys for navigation in menus or sliders, or single characters for keyboard shortcuts.",
21139
21209
  tags: [
21140
21210
  "General"
21141
21211
  ],
@@ -21152,30 +21222,7 @@ var openapi_default = {
21152
21222
  },
21153
21223
  key: {
21154
21224
  type: "string",
21155
- description: "Special key to press. Common uses: 'Enter' to submit forms, 'Tab' to move focus, 'Escape' to close modals, 'ArrowDown/Up' for navigation. The key is sent to the currently focused element",
21156
- enum: [
21157
- "Enter",
21158
- "Return",
21159
- "Tab",
21160
- "Escape",
21161
- "Esc",
21162
- "Backspace",
21163
- "Delete",
21164
- "Del",
21165
- "ArrowUp",
21166
- "Up",
21167
- "ArrowDown",
21168
- "Down",
21169
- "ArrowLeft",
21170
- "Left",
21171
- "ArrowRight",
21172
- "Right",
21173
- "Space",
21174
- "Home",
21175
- "End",
21176
- "PageUp",
21177
- "PageDown"
21178
- ]
21225
+ description: "Key to press. Supports special keys: 'Enter', 'Tab', 'Escape', 'Backspace', 'Delete', 'ArrowUp', 'ArrowDown', 'ArrowLeft', 'ArrowRight', 'Space', 'Home', 'End', 'PageUp', 'PageDown'. Also supports single characters: 'a'-'z', 'A'-'Z', '0'-'9'. The key is sent to the currently focused element"
21179
21226
  }
21180
21227
  },
21181
21228
  required: [
@@ -21438,6 +21485,10 @@ var openapi_default = {
21438
21485
  selector: {
21439
21486
  type: "string",
21440
21487
  description: "CSS selector, position coordinates (e.g., '100x200'), or natural language description of the element to hover over"
21488
+ },
21489
+ index: {
21490
+ type: "string",
21491
+ description: "When multiple elements match the selector, target the Nth element (0-based). Default: -1 (first match)"
21441
21492
  }
21442
21493
  },
21443
21494
  required: [
@@ -21482,6 +21533,10 @@ var openapi_default = {
21482
21533
  selector: {
21483
21534
  type: "string",
21484
21535
  description: "CSS selector, position coordinates (e.g., '100x200'), or natural language description of the element to double-click"
21536
+ },
21537
+ index: {
21538
+ type: "string",
21539
+ description: "When multiple elements match the selector, target the Nth element (0-based). Default: -1 (first match)"
21485
21540
  }
21486
21541
  },
21487
21542
  required: [
@@ -21526,6 +21581,10 @@ var openapi_default = {
21526
21581
  selector: {
21527
21582
  type: "string",
21528
21583
  description: "CSS selector, position coordinates (e.g., '100x200'), or natural language description of the element to right-click"
21584
+ },
21585
+ index: {
21586
+ type: "string",
21587
+ description: "When multiple elements match the selector, target the Nth element (0-based). Default: -1 (first match)"
21529
21588
  }
21530
21589
  },
21531
21590
  required: [
@@ -21570,6 +21629,10 @@ var openapi_default = {
21570
21629
  selector: {
21571
21630
  type: "string",
21572
21631
  description: "CSS selector or natural language description of the input element to clear"
21632
+ },
21633
+ index: {
21634
+ type: "string",
21635
+ description: "When multiple elements match the selector, target the Nth element (0-based). Default: -1 (first match)"
21573
21636
  }
21574
21637
  },
21575
21638
  required: [
@@ -21614,6 +21677,10 @@ var openapi_default = {
21614
21677
  selector: {
21615
21678
  type: "string",
21616
21679
  description: "CSS selector or natural language description of the element to focus"
21680
+ },
21681
+ index: {
21682
+ type: "string",
21683
+ description: "When multiple elements match the selector, target the Nth element (0-based). Default: -1 (first match)"
21617
21684
  }
21618
21685
  },
21619
21686
  required: [
@@ -21839,6 +21906,10 @@ var openapi_default = {
21839
21906
  selector: {
21840
21907
  type: "string",
21841
21908
  description: "CSS selector or natural language description of the element to check visibility for"
21909
+ },
21910
+ index: {
21911
+ type: "string",
21912
+ description: "When multiple elements match the selector, check the Nth element (0-based). Default: -1 (first match)"
21842
21913
  }
21843
21914
  },
21844
21915
  required: [
@@ -21883,6 +21954,10 @@ var openapi_default = {
21883
21954
  selector: {
21884
21955
  type: "string",
21885
21956
  description: "CSS selector or natural language description of the element to check enabled state for"
21957
+ },
21958
+ index: {
21959
+ type: "string",
21960
+ description: "When multiple elements match the selector, check the Nth element (0-based). Default: -1 (first match)"
21886
21961
  }
21887
21962
  },
21888
21963
  required: [
@@ -21927,6 +22002,10 @@ var openapi_default = {
21927
22002
  selector: {
21928
22003
  type: "string",
21929
22004
  description: "CSS selector or natural language description of the checkbox or radio button to check"
22005
+ },
22006
+ index: {
22007
+ type: "string",
22008
+ description: "When multiple elements match the selector, check the Nth element (0-based). Default: -1 (first match)"
21930
22009
  }
21931
22010
  },
21932
22011
  required: [
@@ -21950,6 +22029,151 @@ var openapi_default = {
21950
22029
  }
21951
22030
  }
21952
22031
  },
22032
+ "/api/execute/browser_is_editable": {
22033
+ post: {
22034
+ summary: "Browser Is Editable",
22035
+ description: "Check if an element is editable (not disabled AND not readOnly). Returns 'editable' if the element can accept user input, 'not_editable' if it is disabled or read-only. More comprehensive than browser_is_enabled which only checks the disabled attribute.",
22036
+ tags: [
22037
+ "General"
22038
+ ],
22039
+ requestBody: {
22040
+ required: true,
22041
+ content: {
22042
+ "application/json": {
22043
+ schema: {
22044
+ type: "object",
22045
+ properties: {
22046
+ context_id: {
22047
+ type: "string",
22048
+ description: "The unique identifier of the browser context (e.g., 'ctx_000001')"
22049
+ },
22050
+ selector: {
22051
+ type: "string",
22052
+ description: "CSS selector or natural language description of the element to check editability for"
22053
+ },
22054
+ index: {
22055
+ type: "string",
22056
+ description: "When multiple elements match the selector, check the Nth element (0-based). Default: -1 (first match)"
22057
+ }
22058
+ },
22059
+ required: [
22060
+ "context_id",
22061
+ "selector"
22062
+ ]
22063
+ }
22064
+ }
22065
+ }
22066
+ },
22067
+ responses: {
22068
+ "200": {
22069
+ description: "Successful response"
22070
+ },
22071
+ "400": {
22072
+ description: "Bad request"
22073
+ },
22074
+ "401": {
22075
+ description: "Unauthorized"
22076
+ }
22077
+ }
22078
+ }
22079
+ },
22080
+ "/api/execute/browser_count_elements": {
22081
+ post: {
22082
+ summary: "Browser Count Elements",
22083
+ description: "Count the number of elements matching a CSS selector. Returns the count as an integer. Useful for checking how many items exist (e.g., list items, search results, table rows) without extracting full element data.",
22084
+ tags: [
22085
+ "General"
22086
+ ],
22087
+ requestBody: {
22088
+ required: true,
22089
+ content: {
22090
+ "application/json": {
22091
+ schema: {
22092
+ type: "object",
22093
+ properties: {
22094
+ context_id: {
22095
+ type: "string",
22096
+ description: "The unique identifier of the browser context (e.g., 'ctx_000001')"
22097
+ },
22098
+ selector: {
22099
+ type: "string",
22100
+ description: `CSS selector to count matching elements (e.g., 'li.item', 'input[type="text"]', 'table tr')`
22101
+ }
22102
+ },
22103
+ required: [
22104
+ "context_id",
22105
+ "selector"
22106
+ ]
22107
+ }
22108
+ }
22109
+ }
22110
+ },
22111
+ responses: {
22112
+ "200": {
22113
+ description: "Successful response"
22114
+ },
22115
+ "400": {
22116
+ description: "Bad request"
22117
+ },
22118
+ "401": {
22119
+ description: "Unauthorized"
22120
+ }
22121
+ }
22122
+ }
22123
+ },
22124
+ "/api/execute/browser_dispatch_event": {
22125
+ post: {
22126
+ summary: "Browser Dispatch Event",
22127
+ description: "Dispatch a DOM event on an element. Programmatically triggers events like 'input', 'change', 'focus', 'blur', 'submit', etc. Useful for triggering event handlers after programmatic value changes, or for simulating user interactions that don't involve mouse/keyboard input.",
22128
+ tags: [
22129
+ "General"
22130
+ ],
22131
+ requestBody: {
22132
+ required: true,
22133
+ content: {
22134
+ "application/json": {
22135
+ schema: {
22136
+ type: "object",
22137
+ properties: {
22138
+ context_id: {
22139
+ type: "string",
22140
+ description: "The unique identifier of the browser context (e.g., 'ctx_000001')"
22141
+ },
22142
+ selector: {
22143
+ type: "string",
22144
+ description: "CSS selector or natural language description of the element to dispatch the event on"
22145
+ },
22146
+ event_type: {
22147
+ type: "string",
22148
+ description: "The DOM event type to dispatch (e.g., 'click', 'input', 'change', 'focus', 'blur', 'submit', 'mouseenter', 'mouseleave'). Any valid DOM event name is accepted"
22149
+ },
22150
+ bubbles: {
22151
+ type: "boolean",
22152
+ description: "Whether the event should bubble up through the DOM tree. Default: true"
22153
+ }
22154
+ },
22155
+ required: [
22156
+ "context_id",
22157
+ "selector",
22158
+ "event_type"
22159
+ ]
22160
+ }
22161
+ }
22162
+ }
22163
+ },
22164
+ responses: {
22165
+ "200": {
22166
+ description: "Successful response"
22167
+ },
22168
+ "400": {
22169
+ description: "Bad request"
22170
+ },
22171
+ "401": {
22172
+ description: "Unauthorized"
22173
+ }
22174
+ }
22175
+ }
22176
+ },
21953
22177
  "/api/execute/browser_get_attribute": {
21954
22178
  post: {
21955
22179
  summary: "Browser Get Attribute",
@@ -21975,6 +22199,10 @@ var openapi_default = {
21975
22199
  attribute: {
21976
22200
  type: "string",
21977
22201
  description: "The attribute name to retrieve (e.g., 'href', 'src', 'value', 'data-id', 'class')"
22202
+ },
22203
+ index: {
22204
+ type: "string",
22205
+ description: "When multiple elements match the selector, get attribute from the Nth element (0-based). Default: -1 (first match)"
21978
22206
  }
21979
22207
  },
21980
22208
  required: [
@@ -22020,6 +22248,10 @@ var openapi_default = {
22020
22248
  selector: {
22021
22249
  type: "string",
22022
22250
  description: "CSS selector or natural language description of the element to get position and size for"
22251
+ },
22252
+ index: {
22253
+ type: "string",
22254
+ description: "When multiple elements match the selector, get bounding box of the Nth element (0-based). Default: -1 (first match)"
22023
22255
  }
22024
22256
  },
22025
22257
  required: [
@@ -22341,7 +22573,7 @@ var openapi_default = {
22341
22573
  "/api/execute/browser_extract_text": {
22342
22574
  post: {
22343
22575
  summary: "Browser Extract Text",
22344
- description: "Extract visible text content from the page or a specific element. Returns plain text stripped of HTML tags. Optionally target a specific element using CSS selector or natural language description. Optionally apply a regex pattern to filter/extract specific content from the text. Useful for reading page content, extracting article text, getting form values, or extracting specific data like numbers, emails, or prices.",
22576
+ description: "Extract visible text content from the page or a specific element. Returns plain text stripped of HTML tags. Optionally target a specific element using CSS selector or natural language description. When the selector matches multiple elements, returns a JSON array of text strings. Optionally apply a regex pattern to filter/extract specific content from the text (applied per-element when multiple matches). Useful for reading page content, extracting article text, getting form values, or extracting specific data like numbers, emails, or prices.",
22345
22577
  tags: [
22346
22578
  "General"
22347
22579
  ],
@@ -22358,7 +22590,7 @@ var openapi_default = {
22358
22590
  },
22359
22591
  selector: {
22360
22592
  type: "string",
22361
- description: "Optional CSS selector or natural language description to extract text from a specific element. If omitted, extracts all visible text from the entire page. Examples: '#main-content', 'article', 'the product description'"
22593
+ description: "Optional CSS selector or natural language description to extract text from a specific element. If omitted, extracts all visible text from the entire page. When the selector matches multiple elements, returns a JSON array of text strings (one per element). Examples: '#main-content', '.product-name', 'article'"
22362
22594
  },
22363
22595
  regex: {
22364
22596
  type: "string",
@@ -22367,6 +22599,10 @@ var openapi_default = {
22367
22599
  regex_group: {
22368
22600
  type: "string",
22369
22601
  description: "Which capture group to return from the regex match. 0 returns the full match (default), 1 returns the first capture group, 2 returns the second, etc. Example: with regex 'FP ID:\\\\s*(\\\\S+)' and regex_group=1, only the ID value is returned."
22602
+ },
22603
+ index: {
22604
+ type: "string",
22605
+ description: "When multiple elements match the selector, extract text from the Nth element (0-based) instead of returning all. Default: not set (returns all matches as array). Set to 0 for first, 1 for second, -1 for last."
22370
22606
  }
22371
22607
  },
22372
22608
  required: [
@@ -22474,6 +22710,10 @@ var openapi_default = {
22474
22710
  background_color: {
22475
22711
  type: "string",
22476
22712
  description: "CSS color for the highlight background (use alpha for transparency). Default: 'rgba(255, 0, 0, 0.2)'. Examples: 'rgba(0, 255, 0, 0.3)', 'transparent'"
22713
+ },
22714
+ index: {
22715
+ type: "string",
22716
+ description: "When multiple elements match the selector, highlight the Nth element (0-based). Default: -1 (first match)"
22477
22717
  }
22478
22718
  },
22479
22719
  required: [
@@ -22555,7 +22795,7 @@ var openapi_default = {
22555
22795
  "/api/execute/browser_get_html": {
22556
22796
  post: {
22557
22797
  summary: "Browser Get Html",
22558
- description: "Extract the page's HTML with configurable cleaning levels. 'minimal' preserves most structure, 'basic' removes scripts and styles, 'aggressive' strips to essential content. Useful for page analysis, content extraction, and feeding HTML to other processing tools.",
22798
+ description: "Extract HTML content with configurable cleaning levels. Optionally target a specific element using a CSS selector to get its innerHTML instead of the full page. When the selector matches multiple elements, returns a JSON array of HTML strings. 'minimal' preserves most structure, 'basic' removes scripts and styles, 'aggressive' strips to essential content. Useful for page analysis, content extraction, and feeding HTML to other processing tools.",
22559
22799
  tags: [
22560
22800
  "General"
22561
22801
  ],
@@ -22570,6 +22810,10 @@ var openapi_default = {
22570
22810
  type: "string",
22571
22811
  description: "The unique identifier of the browser context (e.g., 'ctx_000001')"
22572
22812
  },
22813
+ selector: {
22814
+ type: "string",
22815
+ description: "Optional CSS selector to get innerHTML of a specific element (e.g., '#content', '.article-body'). When the selector matches multiple elements, returns a JSON array of HTML strings (one per element). When omitted, returns the full page HTML"
22816
+ },
22573
22817
  clean_level: {
22574
22818
  type: "string",
22575
22819
  description: "Level of HTML cleaning to apply. 'minimal': preserves most structure, 'basic': removes scripts/styles (default), 'aggressive': strips to essential content only. Choose based on how much structure you need",
@@ -22852,7 +23096,7 @@ var openapi_default = {
22852
23096
  "/api/execute/browser_extract_json": {
22853
23097
  post: {
22854
23098
  summary: "Browser Extract Json",
22855
- description: "Extract structured data from the page using predefined templates or auto-detection. Templates available for Google Search results, Wikipedia articles, Amazon products, GitHub repos, and more. Returns consistently structured JSON regardless of page layout changes.",
23099
+ description: "Extract structured data from the page as JSON. For known sites (Google, Amazon, Wikipedia, etc.) uses predefined templates. For unknown sites, uses smart DOM analysis to detect repeating items (products, posts, search results) and extract fields (title, link, image, price, rating, date, description). Use 'selector' to scope extraction to a specific container. Returns page type, items array, structured LD+JSON data, and meta tags.",
22856
23100
  tags: [
22857
23101
  "General"
22858
23102
  ],
@@ -22870,6 +23114,10 @@ var openapi_default = {
22870
23114
  template: {
22871
23115
  type: "string",
22872
23116
  description: "Extraction template name for known site types. Available: 'google_search', 'wikipedia', 'amazon_product', 'github_repo', 'twitter_feed', 'reddit_thread'. Leave empty for auto-detection based on URL"
23117
+ },
23118
+ selector: {
23119
+ type: "string",
23120
+ description: "CSS selector to scope extraction to a specific container (e.g., 'div.product-grid', '#results'). When set, only elements within this container are analyzed for repeating patterns"
22873
23121
  }
22874
23122
  },
22875
23123
  required: [
@@ -23470,6 +23718,10 @@ var openapi_default = {
23470
23718
  selector: {
23471
23719
  type: "string",
23472
23720
  description: "CSS selector or natural language description of the element to scroll into view. Examples: '#footer', '.product-reviews', 'the comments section'"
23721
+ },
23722
+ index: {
23723
+ type: "string",
23724
+ description: "When multiple elements match the selector, scroll to the Nth element (0-based). Default: -1 (first match)"
23473
23725
  }
23474
23726
  },
23475
23727
  required: [
@@ -23596,6 +23848,10 @@ var openapi_default = {
23596
23848
  timeout: {
23597
23849
  type: "string",
23598
23850
  description: "Maximum time to wait in milliseconds. Returns error if element doesn't appear within this time. Default: 5000 (5 seconds)"
23851
+ },
23852
+ index: {
23853
+ type: "string",
23854
+ description: "When multiple elements match the selector, wait for the Nth element (0-based). Default: -1 (first match)"
23599
23855
  }
23600
23856
  },
23601
23857
  required: [
@@ -27149,6 +27405,57 @@ var openapi_default = {
27149
27405
  }
27150
27406
  }
27151
27407
  },
27408
+ "/api/execute/browser_get_page_map": {
27409
+ post: {
27410
+ summary: "Browser Get Page Map",
27411
+ description: "Get a compact structured map of all interactive elements on the page, grouped by sections. Returns a markdown table with numbered references, types, descriptions, current values, and selectors. Use element numbers as selectors in browser_click and browser_type (e.g., selector '5'). 10x cheaper than screenshots for AI agent page understanding.",
27412
+ tags: [
27413
+ "General"
27414
+ ],
27415
+ requestBody: {
27416
+ required: true,
27417
+ content: {
27418
+ "application/json": {
27419
+ schema: {
27420
+ type: "object",
27421
+ properties: {
27422
+ context_id: {
27423
+ type: "string",
27424
+ description: "The unique identifier of the browser context (e.g., 'ctx_000001')"
27425
+ },
27426
+ intent: {
27427
+ type: "string",
27428
+ description: "Task description to boost matching elements (e.g., 'buy nvidia jetson')"
27429
+ },
27430
+ max_elements: {
27431
+ type: "string",
27432
+ description: "Maximum number of elements to return (0 = unlimited). Returns top N by importance score"
27433
+ },
27434
+ region: {
27435
+ type: "string",
27436
+ description: "Filter to specific page region: 'main', 'nav', 'header', 'footer', 'sidebar', 'article', 'form', 'dialog'. Empty = all regions"
27437
+ }
27438
+ },
27439
+ required: [
27440
+ "context_id"
27441
+ ]
27442
+ }
27443
+ }
27444
+ }
27445
+ },
27446
+ responses: {
27447
+ "200": {
27448
+ description: "Successful response"
27449
+ },
27450
+ "400": {
27451
+ description: "Bad request"
27452
+ },
27453
+ "401": {
27454
+ description: "Unauthorized"
27455
+ }
27456
+ }
27457
+ }
27458
+ },
27152
27459
  "/api/execute/browser_get_blocker_stats": {
27153
27460
  post: {
27154
27461
  summary: "Browser Get Blocker Stats",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@olib-ai/owl-browser-mcp",
3
- "version": "2.0.4",
3
+ "version": "2.0.6",
4
4
  "description": "MCP server for Owl Browser HTTP API - 157 browser automation tools with anti-detection",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",