@browserstack/mcp-server 2.3.0-beta.2 → 2.3.0-beta.3

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.
@@ -2,8 +2,8 @@
2
2
  "schema_version": 1,
3
3
  "version": "0.1",
4
4
  "build_id": "automate-authored",
5
- "automate": {
6
- "summary": "BrowserStack Automate: drive a real desktop or mobile browser page by page. The account side lists every operating system, browser and version combination available, reports parallel-session capacity, and keeps each session's record \u2014 status, shareable link, video, and console, network and profiling logs \u2014 after the browser is released. The session side opens a browser on a chosen combination and drives it: navigate, go back and forward, reload, read the page HTML and element text, find elements by CSS or XPath, click, type, clear, run JavaScript, screenshot the viewport, resize the window, move between tabs and iframes, and read cookies. Web pages are RUN here \u2014 unlike Test Management, which authors cases, and Test Reporting, which records results pushed in from a runner. Mobile APPS are not here: those are App Automate, which drives an installed app rather than a browser. Scrolling is done through execute_script, there is no capability that waits, and element ids go stale as soon as the page navigates or re-renders. A session holds a browser until it is ended.",
5
+ "devicecontrol": {
6
+ "summary": "Device control: drive a real desktop or mobile browser page by page. The account side lists every operating system, browser and version combination available, reports parallel-session capacity, and keeps each session's record \u2014 status, shareable link, video, and console, network and profiling logs \u2014 after the browser is released. The session side opens a browser on a chosen combination and drives it: navigate, go back and forward, reload, read the page HTML and element text, find elements by CSS or XPath, click, type, clear, run JavaScript, screenshot the viewport, resize the window, move between tabs and iframes, and read cookies. Web pages are RUN here \u2014 unlike Test Management, which authors cases, and Test Reporting, which records results pushed in from a runner. Mobile APPS are not here: those are mobile device control, which drives an installed app rather than a browser. Scrolling is done through execute_script, there is no capability that waits, and element ids go stale as soon as the page navigates or re-renders. A session holds a browser until it is ended.",
7
7
  "routing_terms": [
8
8
  "automate",
9
9
  "browser",
@@ -31,7 +31,9 @@
31
31
  "network logs",
32
32
  "har",
33
33
  "browser session",
34
- "cross browser"
34
+ "cross browser",
35
+ "device control",
36
+ "browser control"
35
37
  ],
36
38
  "base_url": "https://hub.browserstack.com",
37
39
  "hosts": {
@@ -204,7 +206,7 @@
204
206
  "type": "string",
205
207
  "maxLength": 255,
206
208
  "description": "Short explanation shown beside the status.",
207
- "example": "Cart totalled correctly after adding two items"
209
+ "example": "The page behaved as expected"
208
210
  }
209
211
  ],
210
212
  "returns": [
@@ -364,14 +366,14 @@
364
366
  "type": "string",
365
367
  "json_path": "/capabilities/alwaysMatch/bstack:options/projectName",
366
368
  "description": "Groups sessions on the dashboard.",
367
- "example": "Checkout flows"
369
+ "example": "Web checkout"
368
370
  },
369
371
  {
370
372
  "name": "build_name",
371
373
  "type": "string",
372
374
  "json_path": "/capabilities/alwaysMatch/bstack:options/buildName",
373
375
  "description": "Build the session is filed under.",
374
- "example": "agent-exploration"
376
+ "example": "nightly"
375
377
  },
376
378
  {
377
379
  "name": "session_name",
@@ -379,7 +381,7 @@
379
381
  "maxLength": 255,
380
382
  "json_path": "/capabilities/alwaysMatch/bstack:options/sessionName",
381
383
  "description": "Name shown for this session.",
382
- "example": "cart totals"
384
+ "example": "sign in and add to basket"
383
385
  }
384
386
  ],
385
387
  "returns": [
@@ -425,7 +427,7 @@
425
427
  "required": true,
426
428
  "format": "uri",
427
429
  "description": "Absolute URL including the scheme.",
428
- "example": "https://www.bstackdemo.com/"
430
+ "example": "https://www.example.com/products"
429
431
  }
430
432
  ],
431
433
  "returns": [
@@ -691,7 +693,7 @@
691
693
  "type": "string",
692
694
  "required": true,
693
695
  "description": "The selector itself, interpreted according to using.",
694
- "example": ".shelf-item__buy-btn"
696
+ "example": "#add-to-cart"
695
697
  }
696
698
  ],
697
699
  "returns": [
@@ -748,7 +750,7 @@
748
750
  "type": "string",
749
751
  "required": true,
750
752
  "description": "The selector itself, interpreted according to using.",
751
- "example": ".shelf-item__buy-btn"
753
+ "example": ".product-card"
752
754
  }
753
755
  ],
754
756
  "returns": [
@@ -791,7 +793,7 @@
791
793
  "type": "string",
792
794
  "required": true,
793
795
  "description": "Element id from find_element.",
794
- "example": "f.31006BCEEF25A5A489371DAD0726B51F.d.B5F92408.e.13"
796
+ "example": "f.00000000000000000000000000000000.d.0000000000000000.e.1"
795
797
  }
796
798
  ],
797
799
  "returns": [
@@ -836,7 +838,7 @@
836
838
  "type": "string",
837
839
  "required": true,
838
840
  "description": "Element id from find_element.",
839
- "example": "f.31006BCEEF25A5A489371DAD0726B51F.d.B5F92408.e.13"
841
+ "example": "f.00000000000000000000000000000000.d.0000000000000000.e.1"
840
842
  }
841
843
  ],
842
844
  "body": [
@@ -845,7 +847,7 @@
845
847
  "type": "string",
846
848
  "required": true,
847
849
  "description": "The characters to type. End with \\n to submit.",
848
- "example": "BrowserStack"
850
+ "example": "hello"
849
851
  }
850
852
  ],
851
853
  "returns": [
@@ -888,7 +890,7 @@
888
890
  "type": "string",
889
891
  "required": true,
890
892
  "description": "Element id from find_element.",
891
- "example": "f.31006BCEEF25A5A489371DAD0726B51F.d.B5F92408.e.13"
893
+ "example": "f.00000000000000000000000000000000.d.0000000000000000.e.1"
892
894
  }
893
895
  ],
894
896
  "returns": [
@@ -931,7 +933,7 @@
931
933
  "type": "string",
932
934
  "required": true,
933
935
  "description": "Element id from find_element.",
934
- "example": "f.31006BCEEF25A5A489371DAD0726B51F.d.B5F92408.e.13"
936
+ "example": "f.00000000000000000000000000000000.d.0000000000000000.e.1"
935
937
  }
936
938
  ],
937
939
  "returns": [
@@ -974,7 +976,7 @@
974
976
  "type": "string",
975
977
  "required": true,
976
978
  "description": "Element id from find_element.",
977
- "example": "f.31006BCEEF25A5A489371DAD0726B51F.d.B5F92408.e.13"
979
+ "example": "f.00000000000000000000000000000000.d.0000000000000000.e.1"
978
980
  },
979
981
  {
980
982
  "name": "name",
@@ -1023,14 +1025,14 @@
1023
1025
  "type": "string",
1024
1026
  "required": true,
1025
1027
  "description": "Element id from find_element.",
1026
- "example": "f.31006BCEEF25A5A489371DAD0726B51F.d.B5F92408.e.13"
1028
+ "example": "f.00000000000000000000000000000000.d.0000000000000000.e.1"
1027
1029
  },
1028
1030
  {
1029
1031
  "name": "name",
1030
1032
  "type": "string",
1031
1033
  "required": true,
1032
1034
  "description": "The attribute to read.",
1033
- "example": "class"
1035
+ "example": "href"
1034
1036
  }
1035
1037
  ],
1036
1038
  "returns": [
@@ -1072,7 +1074,7 @@
1072
1074
  "type": "string",
1073
1075
  "required": true,
1074
1076
  "description": "Element id from find_element.",
1075
- "example": "f.31006BCEEF25A5A489371DAD0726B51F.d.B5F92408.e.13"
1077
+ "example": "f.00000000000000000000000000000000.d.0000000000000000.e.1"
1076
1078
  }
1077
1079
  ],
1078
1080
  "returns": [
@@ -1379,7 +1381,7 @@
1379
1381
  "type": "string",
1380
1382
  "required": true,
1381
1383
  "description": "Handle from list_window_handles.",
1382
- "example": "2FFCF2904DC789DD82BACEF48E43AE93"
1384
+ "example": "00000000000000000000000000000000"
1383
1385
  }
1384
1386
  ],
1385
1387
  "returns": [
@@ -2,8 +2,8 @@
2
2
  "schema_version": 1,
3
3
  "version": "0.1",
4
4
  "build_id": "appautomate-demo",
5
- "appautomate": {
6
- "summary": "BrowserStack App Automate: run a real Android or iOS device and drive the app on it step by step. The account side lists the devices this account can use, including private ones, uploads and lists app builds, reports parallel-session capacity, and keeps each session's record \u2014 status, shareable link and video \u2014 after the device is released. The session side starts a device with an installed build and drives it: read the UI tree, find and tap elements, type, swipe, screenshot, press keys, rotate, switch between the native app and a web view, push and pull files, move the simulated GPS, change the network profile, launch, close and uninstall apps, answer biometric prompts and feed images to the camera. Apps are RUN here \u2014 unlike Test Management, which authors cases, and Test Reporting, which records results pushed in from a runner. Web browsers are not here, and neither is App Live: it has no API an agent can drive, so agent sessions run on App Automate and consume its minutes. A build must exist before a session starts and can only be uploaded from a public link, never a file on disk \u2014 so media for camera injection must come from elsewhere. The default Appium server is 1.x and rejects every `mobile:` command; ask for 2.19.0.",
5
+ "mobiledevicecontrol": {
6
+ "summary": "Mobile device control: run a real Android or iOS device and drive the app on it step by step. The account side lists the devices this account can use, including private ones, uploads and lists app builds, reports parallel-session capacity, and keeps each session's record \u2014 status, shareable link and video \u2014 after the device is released. The session side starts a device with an installed build and drives it: read the UI tree, find and tap elements, type, swipe, screenshot, press keys, rotate, switch between the native app and a web view, push and pull files, move the simulated GPS, change the network profile, launch, close and uninstall apps, answer biometric prompts and feed images to the camera. Apps are RUN here \u2014 unlike Test Management, which authors cases, and Test Reporting, which records results pushed in from a runner. Browsers are not here \u2014 those are device control, which drives a page rather than an installed app \u2014 and neither is App Live: it has no API an agent can drive, so agent sessions run on App Automate and consume its minutes. A build must exist before a session starts and can only be uploaded from a public link, never a file on disk \u2014 so media for camera injection must come from elsewhere. The default Appium server is 1.x and rejects every `mobile:` command; ask for 2.19.0.",
7
7
  "routing_terms": [
8
8
  "app automate",
9
9
  "appium",
@@ -51,7 +51,10 @@
51
51
  "os build",
52
52
  "upload apk",
53
53
  "upload ipa",
54
- "local build"
54
+ "local build",
55
+ "mobile device control",
56
+ "device control",
57
+ "drive a device"
55
58
  ],
56
59
  "base_url": "https://hub-cloud.browserstack.com",
57
60
  "auth": {
@@ -72,7 +75,7 @@
72
75
  "The session ends itself after idle_timeout seconds with no command (90 by default, 300 at most) and after 2 hours in total. Keep calling, or call get_window_rect as a cheap keep-alive, while deciding the next step.",
73
76
  "Every session occupies a device and consumes App Automate minutes until it ends: always finish with execute_script setSessionStatus and then delete_session.",
74
77
  "To let a person watch the device live while the agent drives it, set interactive_debugging true and leave video on; they then open the running session on the App Automate dashboard and start the interactive session there. That window is two-way: a person's taps and scrolls reach the same device, so ask them to watch only, or re-read the page source before every action.",
75
- "device_name and platform_version must be a combination App Automate offers; an unknown pair fails with a session-not-created error naming the capability.",
78
+ "device_name and platform_version must be a combination mobile device control offers; an unknown pair fails with a session-not-created error naming the capability.",
76
79
  "Set appium_version to 2.19.0 for any session that will use execute_script with a `mobile:` command; the default server is 1.x and answers those with a 404 listing the commands it does know.",
77
80
  "enable_biometric, enable_camera_image_injection and upload_media only take effect when set here \u2014 none of them can be turned on once the session is running.",
78
81
  "Credentials belong in the Authorization header, never inside bstack:options: capabilities are echoed back in session-not-created errors.",
@@ -145,21 +148,21 @@
145
148
  "type": "string",
146
149
  "json_path": "/capabilities/alwaysMatch/bstack:options/projectName",
147
150
  "description": "Groups sessions on the App Automate dashboard.",
148
- "example": "Checkout flows"
151
+ "example": "Mobile checkout"
149
152
  },
150
153
  {
151
154
  "name": "build_name",
152
155
  "type": "string",
153
156
  "json_path": "/capabilities/alwaysMatch/bstack:options/buildName",
154
157
  "description": "Build the session is filed under on the dashboard.",
155
- "example": "agent-exploration"
158
+ "example": "nightly"
156
159
  },
157
160
  {
158
161
  "name": "session_name",
159
162
  "type": "string",
160
163
  "json_path": "/capabilities/alwaysMatch/bstack:options/sessionName",
161
164
  "description": "Name shown for this session on the dashboard.",
162
- "example": "Add a product to the cart"
165
+ "example": "sign in and add to basket"
163
166
  },
164
167
  {
165
168
  "name": "interactive_debugging",
@@ -387,7 +390,7 @@
387
390
  "type": "string",
388
391
  "required": true,
389
392
  "description": "The selector itself, interpreted according to using.",
390
- "example": "nav-cart"
393
+ "example": "cart-button"
391
394
  }
392
395
  ],
393
396
  "returns": [
@@ -483,7 +486,7 @@
483
486
  "type": "string",
484
487
  "required": true,
485
488
  "description": "The characters to type.",
486
- "example": "Galaxy S20"
489
+ "example": "hello"
487
490
  }
488
491
  ],
489
492
  "returns": [
@@ -1121,7 +1124,7 @@
1121
1124
  "type": "string",
1122
1125
  "maxLength": 255,
1123
1126
  "description": "Short explanation shown beside the status.",
1124
- "example": "Checkout completed and the cart showed the right total"
1127
+ "example": "The app behaved as expected"
1125
1128
  }
1126
1129
  ],
1127
1130
  "returns": [
@@ -2681,7 +2684,7 @@
2681
2684
  "type": "string",
2682
2685
  "required": true,
2683
2686
  "description": "The selector itself, interpreted according to using.",
2684
- "example": "nav-cart"
2687
+ "example": "cart-button"
2685
2688
  }
2686
2689
  ],
2687
2690
  "returns": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@browserstack/mcp-server",
3
- "version": "2.3.0-beta.2",
3
+ "version": "2.3.0-beta.3",
4
4
  "description": "BrowserStack's Official MCP Server",
5
5
  "mcpName": "io.github.browserstack/mcp-server",
6
6
  "main": "dist/index.js",