@browserstack/mcp-server 1.5.0-beta.2 → 1.5.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.
@@ -581,14 +581,7 @@
581
581
  {
582
582
  "name": "errorCategory",
583
583
  "type": "string",
584
- "values": [
585
- "5xx",
586
- "4xx",
587
- "timeout",
588
- "connection",
589
- "assertion"
590
- ],
591
- "description": "Comma-separated error categories to include."
584
+ "description": "Comma-separated error categories — any combination of: 5xx, 4xx, timeout, connection, assertion (e.g. \"5xx,4xx\")."
592
585
  },
593
586
  {
594
587
  "name": "metrics",
@@ -754,7 +747,9 @@
754
747
  "Read-only despite being a POST — nothing is started.",
755
748
  "fitsInQuota / remainingAfterEstimate compare the estimate against current quota.",
756
749
  "For the same check at start time, call startLoadTestRun with dryRun:true.",
757
- "Always use this for a cost or VU-hour estimate of a hypothetical run — it models ramp-up. Do not compute VU-hours by hand from VUs × duration."
750
+ "Always use this for a cost or VU-hour estimate of a hypothetical run — it models ramp-up. Do not compute VU-hours by hand from VUs × duration.",
751
+ "A protocol (plu) run is billed at a full load-generator pod's capacity (e.g. 1000 VUs for k6), not the VUs it actually uses, and carries a minimum billing floor (5 minutes) — so a small or short plu run can estimate far higher than VUs × duration would suggest. That is expected; report the returned estimatedVuHours as-is rather than second-guessing it as an error.",
752
+ "The estimate is for the test's OWN type: a browser (blu) run costs about 10x a protocol (plu) run at the same VUs and duration (browser VUs carry a 10x weight). So the number depends heavily on whether the test is plu, blu or hybrid — always state which type the estimate is for. When the user asks about a hypothetical run without fixing the type, do not silently inherit the type of whatever test you priced against: say the type explicitly, and if it is genuinely open, give both the plu and blu figures (they differ ~10x) or ask which they mean."
758
753
  ],
759
754
  "returns": [
760
755
  "estimatedVuHours",
@@ -941,7 +936,10 @@
941
936
  "guidance": [
942
937
  "Provide exactly one of projectId or projectName; projectName creates the project if absent.",
943
938
  "Script upload is two-phase: send pendingScriptUpload to get a presigned uploadUrl + s3Key, PUT the file, then call create again with the scriptRef source and s3Key returned in the response's nextStep.",
944
- "Pass idempotencyKey so a retried create does not duplicate the test."
939
+ "Pass idempotencyKey so a retried create does not duplicate the test.",
940
+ "testType and framework are required and are never inferred: testType is plu (protocol / API load), blu (real-browser load) or hybrid (both); framework is the load tool (k6, jmeter, gatling, locust). If the user has not stated them, ask — do not guess a default.",
941
+ "There is no clone capability. To duplicate a test, getLoadTest the source and copy its full config into this create — vuRamp/vus, durationSec, loadGeneratorLocations and slaThresholds included; nothing is inherited from the source, so anything you omit is dropped.",
942
+ "The load profile is required too and is never defaulted: the concurrency (config.vus, or a config.vuRamp for a ramp) and the run length (config.durationSec). If the user has not given the VUs and duration, ask for them — do not assume a value."
945
943
  ],
946
944
  "returns": [
947
945
  "testId",
@@ -1021,7 +1019,8 @@
1021
1019
  "guidance": [
1022
1020
  "testId is the numeric test id, not a run id.",
1023
1021
  "dryRun:true returns the VU-hour estimate and quota fit without starting anything.",
1024
- "On success returns runId (UUID) + dashboardLink; poll getLoadTestRunStatus with the runId."
1022
+ "On success returns runId (UUID) + dashboardLink; poll getLoadTestRunStatus with the runId.",
1023
+ "A run without dryRun generates real load and consumes VU-hours. Unless the user has already asked to run it now, dryRun:true first, show the estimate/quota fit and the parameters that will be used (VUs, duration, target), and start the real run only after the user confirms — do not treat your own confirmation as the user's."
1025
1024
  ],
1026
1025
  "returns": [
1027
1026
  "runId",
@@ -1310,7 +1309,9 @@
1310
1309
  "guidance": [
1311
1310
  "Partial update: send only the fields to change.",
1312
1311
  "Pass ifVersion for optimistic concurrency; a stale value returns 409 VERSION_CONFLICT.",
1313
- "Script replacement uses the same two-phase pendingScriptUpload flow as create."
1312
+ "Script replacement uses the same two-phase pendingScriptUpload flow as create.",
1313
+ "config is a partial update, but each field it carries REPLACES that field wholesale — it does not merge. tags overwrites the entire tag set; it does not append. To add a tag to a test (or the same tag across several tests), getLoadTest each one first and send the union under config.tags.",
1314
+ "Tags live on the load test, not on its runs — there is no per-run tagging, so do not touch runs when asked to tag a test. To tag every test in a project, list them with listLoadTests and page through with cursor until hasMore is false, then updateLoadTest each one — do not stop after the first page or a subset."
1314
1315
  ],
1315
1316
  "returns": [
1316
1317
  "testId",
@@ -1353,13 +1354,7 @@
1353
1354
  {
1354
1355
  "name": "include",
1355
1356
  "type": "string",
1356
- "values": [
1357
- "config",
1358
- "thresholds",
1359
- "tags",
1360
- "children"
1361
- ],
1362
- "description": "Comma-separated sub-resources to expand."
1357
+ "description": "Comma-separated sub-resources to expand — any combination of: config, thresholds, tags, children (e.g. \"config,thresholds\"). Ask for everything you need in ONE call (include=config,thresholds,tags) rather than one request per sub-resource."
1363
1358
  },
1364
1359
  {
1365
1360
  "name": "fields",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@browserstack/mcp-server",
3
- "version": "1.5.0-beta.2",
3
+ "version": "1.5.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",