Repository navigation
Releases
v0.43.0
[0.43.0] - 2026-11-02
Added
- [Swagger] Added one-click install buttons for VS Code (GitHub Copilot), Cursor, and Claude Desktop to the Swagger Remote MCP Server setup docs. Reorganized the Kiro section to use the same button-first layout for consistency.
- [Common] Added a Claude plugin bundle in
plugin/for submission to Anthropic's Claude directory, replacing the deprecated MCPB desktop extension listing. It runs the server withnpxpinned to the released version and asks for each product's settings through plugin user configuration, with tokens stored as sensitive values.scripts/bump.jsnow updates the plugin's version and pin on each release. - [Swagger] Portal product tools (
swagger_create_portal_product,swagger_update_portal_product): added avisibilityparameter (visible,hiddenorconditional).conditionalshows the product on the portal landing page only to users who have access to it, and is not allowed for public products. Product output now includesvisibility. - [QMetry] Execute Quality Gate Report tool: added an optional
extKeysparameter (array of external issue keys, e.g. Jira keys likePROJ-123) to scope the gate report to specific external requirements. - [QMetry] Project info now includes
isApprovalWorkflowEnabled. - [PactFlow] All PactFlow tools now declare an
outputSchemaand returnstructuredContent. Schemas follow the PactFlow OpenAPI description but are lenient (every property optional, extra fields allowed) so OSS Pact Broker responses validate. Tools whose API returns no body (deletes, setting a user's roles) return{ "success": true }. Paginated tools also reportpagination. - [BearQ] Added tools to run, list, and monitor BearQ workflows.
- [PactFlow] Added
contract-testing_list_deployed_or_released_versions(all versions of a pacticipant that have ever been deployed or released) andcontract-testing_list_environment_versions(versions of a pacticipant associated with an environment). Both supportpageNumber/pageSizeand are available on PactFlow only. - [Common]
/healthnow returnsversion(read from the rootpackage.json, notprocess.env.npm_package_version, since the Docker entrypoint runsnode dist/index.jsdirectly) andregion(currently hardcoded tonull- No regional Zephyr deployment exists yet)./readyis unchanged. - [PactFlow] Expanded the consumer Pact tests against the PactFlow API (
pactflow-application-saas) to cover every operation the client calls: added interactions for the previously untested operations (admin roles, branches, version listing and update, integrations, invite users, team user patch, create secret, update webhook, provider contract publish, provider-level BDCT results), the documented error statuses (400, 404, 409, 410, 422), and all required response fields. Pact coverage against the consumer-filtered PactFlow OAS is now 100% for paths, status codes, and required request/response fields, and the pact passes bi-directional contract testing on PactFlow.
Fixed
- [PactFlow] Consumer pact tests for
contract-testing_list_deployed_or_released_versionsandcontract-testing_list_environment_versionsnow use a provider state that exists on the PactFlow provider (pacticipant ServiceA version 1.0.0 is deployed to environment 00000000-0000-0000-0000-000000000002). The previous states were unknown to the provider, which made the CDCT verification fail with an empty list and a 404. - [QMetry] API error handling now reads the response body once. Previously a non-JSON error body made the fallback
text()call throw "Body is unusable", hiding the real error. - [PactFlow]
contract-testing_list_integrationsandcontract-testing_get_integrations_by_teamnow sendAccept: application/hal+json. Without it PactFlow negotiatedtext/vnd.graphvizfor/integrationsand the response could not be parsed as JSON. - [PactFlow]
contract-testing_admin_patch_team_usersnow sendsContent-Type: application/json-patch+json, which is the only content type PactFlow accepts forPATCH /admin/teams/{teamId}/users(it previously returned 415). - [Swagger] Fixed
swagger_validate_apioutput schema rejecting findings withinformation,hintorunknownseverity and documentedcolumnas 1-based, matching the/specs/validatecontract.
Removed
- [Swagger] Removed the
hiddenparameter fromswagger_create_portal_productandswagger_update_portal_product, usevisibilityinstead. A leftoverhiddenis silently ignored, so when creating a product the portal default applies, which is hidden for most organizations. Sendvisibility: "visible"to make it visible.
v0.42.0
Added
- [Common] Usage analytics for the remote (HTTP) server, reported to the shared SmartBear Amplitude project when
MCP_SERVER_AMPLITUDE_API_KEYis set:Server Initialized,Session Started,Session Ended,Tool CalledandTools Listedevents, each carryingapp_name,organization,analytics_id(sha256(email.toLowerCase())when the product's OAuth token carries anemailclaim, matching SmartBear ID; otherwisesha256("<integration>:<user id>")from the claim the product declares),source(MCP) anduser_agent.Tool CalledandTools Listedalso carrymcp_client_name,mcp_client_versionandprotocol_version, so client adoption and protocol migration are measurable for 2026-07-28 clients, which have noinitializehandshake or session and therefore produce no lifecycle events. Tool arguments, results, credentials and raw email are never sent. Identity claim locations andapp_nameare declared per product via the new optionalClient.analyticsfield; BugSnag ships the reference declaration, other integrations report anonymous events until theirs is added. Products that receive their credential in a product-specific header rather thanAuthorizationcan name it withanalytics.tokenHeader, which is tried ahead ofAuthorizationwhile that remains the fallback, the first candidate decoding as a JWT winning; no integration declares one yet. Events are flushed on session end and on SIGTERM; a missing key or an Amplitude outage never affects tool calls. Stdio (local) usage is not tracked.
Fixed
- [Common] Reduced stdio startup time so the
initializeresponse is not delayed by module loading,which could exceed client timeouts on some environment's.swagger-clientis now loaded only when a Contract Testing tool resolves an OpenAPI document, and products excluded byMCP_CLIENTSorMCP_TOOLSETSare no longer imported at startup.
Changed
- [Swagger]
create_api_from_promptandcreate_or_update_apitools: added an optionalversionparameter to save the API definition under a specific version, instead of relying solely on the definition'sinfo.versionfield (or the fixed1.0.0default on create). Acceptsnullas well as omission, since some MCP clients sendnullfor an unset optional field.
v0.41.3
Added
- [Swagger] Added
swagger_validate_apitool to validate OpenAPI and AsyncAPI definitions (raw content or an existing registry API). #723 - [QTM4J] Added optional
folderIdsupport tocreate_test_caseandcreate_test_cycle. If omitted, the asset is created in theMCP Generatedfolder. #721
Fixed
- [QTM4J] Fixed
search_test_casesfolder filtering to usefolderIdinstead offolders, matching the backend API contract. #721
v0.41.2
Added
- [Swagger] Added
swagger_validate_apitool to validate OpenAPI and AsyncAPI definitions (raw content or an existing registry API). #723 - [QTM4J] Added optional
folderIdsupport tocreate_test_caseandcreate_test_cycle. If omitted, the asset is created in theMCP Generatedfolder. #721
Fixed
- [QTM4J] Fixed
search_test_casesfolder filtering to usefolderIdinstead offolders, matching the backend API contract. #721
v0.41.1
Added
- [Swagger] Added
swagger_validate_apitool to validate OpenAPI and AsyncAPI definitions (raw content or an existing registry API). #723 - [QTM4J] Added optional
folderIdsupport tocreate_test_caseandcreate_test_cycle. If omitted, the asset is created in theMCP Generatedfolder. #721
Fixed
- [QTM4J] Fixed
search_test_casesfolder filtering to usefolderIdinstead offolders, matching the backend API contract. #721
v0.41.0
Added
- [Swagger] Added Kiro (AWS) setup instructions and one-click install badge for the Swagger Remote MCP Server.
Changed
- [Common] Rewrote the transport bootstrap to serve both the 2025-11-25 and 2026-07-28 (RC) MCP protocol revisions from a single deployment, on stdio (
serveStdio,legacy: "serve") and HTTP (per-request routing between the existing sessionful wiring and a new statelesscreateMcpHandlerleg). Existing 2025-11-25 clients are unaffected. #687 - [Common] Modern-era (2026-07-28) requests now carry client identity: the protocol version, client info and capabilities are extracted from each request's
_metaenvelope into the request context, so error reports are attributed for clients that no longer send aninitializehandshake, and downstreamUser-Agentattribution follows on stdio. On the HTTP transport the downstreamUser-Agentis still fixed at configuration time and does not yet reflect the per-request client (pre-existing behavior, tracked separately). Legacy per-connection capture is unchanged. #691 - [Common] Protocol-compliance fixes for the modern (2026-07-28) era: cacheable list/read results (
tools/list,prompts/list,resources/list,resources/templates/list,resources/read) now carry cache hints (ttlMsfromCACHE_TTL,cacheScope: private);tools/listoutput is deterministically ordered (alphabetical by name, both eras); the modern era no longer advertises the deprecatedloggingcapability (SEP-2577), whiletools.listChangedremains advertised on both eras (the SDK's serving entries implementsubscriptions/listennatively for modern clients);Mcp-MethodandMcp-Nameare allowed through CORS. SEP-2243 param-driven request headers (Mcp-Param-<Name>, declared viax-mcp-headerschema annotations) are validated against tool arguments natively by the SDK; no tool currently declares one, so no additional CORS entries are needed for them. Legacy (2025-11-25) capability declarations and cache-result envelopes are unchanged; resource-not-found errors are now reported as -32602 (Invalid Params) in both eras per the 2026-07-28 spec, and clients should accept both -32602 and the former -32002. #708 - [Common] Elicitation on the modern (2026-07-28) era now uses the multi round-trip pattern (SEP-2322): tools that need user input return an
input_requiredresult carrying an embeddedelicitation/createrequest, and the client's retry supplies the answers viainputResponses. Answers from earlier rounds are correlated through a server-mintedrequestState. Modern clients that do not declare theelicitationcapability, and all legacy (2025-11-25) clients, keep the existing instruction-based fallback. #705 - [Zephyr] Change outputSchema for issue link test cases, cycles and executions to be objects instead of arrays. #706
Fixed
-
[Swagger] Updated and fixed Functional Testing tool descriptions for clarity and LLM usability: added explicit async/polling guidance to
run_testandrun_suite, enumerated status values with descriptions forget_test_statusandget_suite_status, addedlimit/offsetpagination hints and total run count toget_test_history, standardized status terminology tocanceledacross all tool descriptions, and restructured the public doc intoTestsandSuitessections with bold field labels and cross-tool references. -
[Common] Security:
WWW-AuthenticateOAuth discovery URLs are no longer derived from the client-suppliedHostheader over a hardcodedhttp://. The header is now built viagetBaseUrl(), honouring theBASE_URLenv var and deriving the scheme fromX-Forwarded-Proto.X-Forwarded-Hostis now only trusted when the newTRUST_PROXYenv var is enabled, since it can be forged by clients on deployments without a proxy stripping it. Both variables are documented in the README. -
[Common] The
Smartbear-Toolsetsheader (used to load only specific tool groups, e.g.qtm4j:testcases) was missing from the allowed CORS headers, so browsers were blocking it before it reached the server. It's now added to the allow-list and works as expected.
v0.40.0
Added
- [QMetry] Added
Create RequirementandUpdate Requirementtools for creating and modifying requirements, with automatic root-folder resolution, sync-gate protection, and UDF support (including DATETIMEPICKER normalization). #699 - [QMetry] Added
Link Test Case to Issuestool for associating defects/issues with a test case. #699 - [QMetry]
Create Test Casenow auto-generates 2–5 steps from context when the user does not provide them, and automatically appliesstepDefaultValuesfrom the UDF layout to every step's UDF fields. #699 - [Swagger] Extended the
create_testFunctional Testing tool with a step-levelbaseUrl/apiNameand a definition-levelparametersarray. Every step must now setbaseUrlto its server/common URL; it is extracted into a generatedbaseURL<ApiName>parameter (falling back tobaseURL<Host>whenapiNameis not set) and templated into the step'surl. OAS-style{pathParam}placeholders in every step'surlare always converted to${var(pathParam)}references with matching generated parameters, and a{pathParam}shared by more than one step must be defined inparametersso its value stays in sync across steps.parametersonly accepts these path/base-URL parameters, not request body parameters. - [Zephyr] Added
Get Folderstool to retrieve Folders available within a Zephyr account, with optional filtering by project key and folder type.
Changed
- [Swagger]
create_api_from_prompttool: now create-only - fails with a conflict error instead of overwriting when the generated API version already exists. Marked as non-destructive. - [QMetry] Security: Removed
Qmetry-Tokenandapikeyheader fallbacks fromgetToken()to prevent OAuth bypass on HTTP transport. #697 - [QMetry] Security: Added input validation (
.max(255),.regex(),..guard) onfileNameinExportHtmlReportArgsSchema. #697 - [QMetry] Trimmed noisy fields from test suite list, issue list, and project info API responses to reduce token usage. #699
Fixed
- [Swagger]
create_or_update_apitool: no longer forces private visibility when updating an existing API. Visibility is now set to private only on creation; updates preserve the API's current visibility.
v0.39.0
Changed
- [PactFlow] Refactored the internal PactFlow client from a monolithic 2,400-line class into six domain API classes (
PacticipantApi,EnvironmentApi,ContractApi,WebhookApi,AdminApi,AIApi) backed by a sharedHttpClient. This is an internal implementation change; all tool behaviour and the externalPactflowClientinterface are unchanged. #686 - [Swagger] Functional Testing improvements: clarified the
create_suitenameparameter to require a human-readable suite name; renamed thesuiteIdparameter toslugonrun_suite,get_suite_status,list_suite_executions, andcancel_suite_executionand their responses; and dropped the redundant numericidfromSuiteobjects returned bycreate_suiteandlist_suites. - [Swagger] Updated the
list_teststool to return test definitionurlfor each found test. Updated thelist_suitestool to return the Suite definitionurlfor each found Suite.
v0.38.0
- [Bugsnag] Use a single process-wide
CacheServiceand namespace every cache key with a SHA-256 hash of the authenticated caller's token. #679 - [Bugsnag] Prefer the request auth header when resolving the cache namespace via
getAuthToken()so per-request auth is honored. - [Bugsnag] Ensure unauthenticated callers bypass the shared cache to avoid exposing cached data.
- [Bugsnag] Updated cache usage in
getOrganization(),getProjects(),getCurrentProject(),getProjectEventFields(), andgetProjectTraceFields().
Changed
-
[Swagger] Updated
update_portal_productto returns aurlfield in the response, providing the portal URL for the updated product. #684 -
[Common] Removed support for the MCP
samplingcapability, which was deprecated in the 2026-07-28 MCP specification revision (SEP-2577). The server no longer negotiates thesamplingclient capability or sendssampling/createMessagerequests. #685 -
[PactFlow] The
generate/reviewtools' OpenAPI matcher recommendation flow no longer relies on MCP sampling: when an OpenAPI document is provided without amatcher, the tool now always returns a prompt for the host AI to execute directly and resubmit with a single recommended matcher, rather than a list of up to 5 recommendations to choose from via elicitation. #685
v0.37.0
- [QMetry]: Added Test Case, Test Suite, Issue module, Create/Update UDF capability Added. #666
Added
- [Swagger] Added
patch_apiRegistry tool that applies targeted search/replace edits to a YAML API definition and saves the result as a new version or in place. Edits are atomic - nothing is saved unless every edit applies - and failed edits are reported withno_match/ambiguousdetails so the caller can correct them. - [Swagger] Extended the
create_testFunctional Testing tool's steps with assertion support via a step-levelassertionsobject:statusCodesfor HTTP status code ranges, andbody/bodyType/bodyRulesfor asserting on response body fields.
Changed
- [Swagger]
get_api_definitiontool: added aformatparameter -json(default) may convert YAML to JSON,textreturns the definition as YAML, which is the required source forpatch_apiedits. - [Swagger] Improved error handling on Swagger Functional Testing, providing more information when requests to the upstream API fail