---
title: "Changes to Create or replace an External MCP Connection by stable key"
method: PUT
path: "/v1/mcp-connections/by-key/{externalKey}"
---

# Changes to Create or replace an External MCP Connection by stable key

`PUT /v1/mcp-connections/by-key/{externalKey}`

> Every recorded change to this operation, newest first.

## Timeline

Changed in 14 of 136 revisions.

- **2026-10-29** `bd67819c44d2`: 4 warning, 11 info
- **2026-10-29** `dc19b69f67a2`: 1 info
- **2026-10-23** `c93387179b31`: 22 breaking, 41 info
- **2026-10-22** `6cd7fffc8d0b`: 4 info
- **2026-10-21** `8b797799efc8`: 8 info
- **2026-10-16** `b3e69054b120`: 5 info
- **2026-10-11** `13ebcfe8505a`: 2 info
- **2026-10-09** `cc8a41bb846e`: 2 info
- **2026-10-08** `5e65f24df46a`: 2 info
- **2026-10-06** `ead990da4cfb`: 3 info
- **2026-10-01** `df3754993784`: 1 info
- **2026-09-27** `6117f1cac9d7`: 1 info
- **2026-09-11** `bb8ff73e4ad3`: 4 info
- **2026-09-05** `cb34559d4b4d`: 1 info

## Changes

- **2026-10-29** `bd67819c44d2`: 4 warning, 11 info
  - added the new `provider_setup_required` enum value to the `organizationReadiness/anyOf[#/components/schemas/ExternalMcpConnectionReadiness]/failure/anyOf[subschema #1]/` response property for the response status `200`
  - added the new `provider_setup_required` enum value to the `organizationReadiness/anyOf[#/components/schemas/ExternalMcpConnectionReadiness]/failure/anyOf[subschema #1]/` response property for the response status `201`
  - added the new `provider_setup_required` enum value to the `readiness/anyOf[#/components/schemas/ExternalMcpConnectionReadiness]/failure/anyOf[subschema #1]/` response property for the response status `200`
  - added the new `provider_setup_required` enum value to the `readiness/anyOf[#/components/schemas/ExternalMcpConnectionReadiness]/failure/anyOf[subschema #1]/` response property for the response status `201`
  - added the new optional request property `requestHeaders`
  - added the optional property `organizationReadiness/anyOf[#/components/schemas/ExternalMcpConnectionReadiness]/providerSettingsUrl` to the response with the `200` status
  - added the optional property `organizationReadiness/anyOf[#/components/schemas/ExternalMcpConnectionReadiness]/providerSettingsUrl` to the response with the `201` status
  - added the optional property `organizationReadiness/anyOf[#/components/schemas/ExternalMcpConnectionReadiness]/referenceId` to the response with the `200` status
  - added the optional property `organizationReadiness/anyOf[#/components/schemas/ExternalMcpConnectionReadiness]/referenceId` to the response with the `201` status
  - added the optional property `readiness/anyOf[#/components/schemas/ExternalMcpConnectionReadiness]/providerSettingsUrl` to the response with the `200` status
  - added the optional property `readiness/anyOf[#/components/schemas/ExternalMcpConnectionReadiness]/providerSettingsUrl` to the response with the `201` status
  - added the optional property `readiness/anyOf[#/components/schemas/ExternalMcpConnectionReadiness]/referenceId` to the response with the `200` status
  - added the optional property `readiness/anyOf[#/components/schemas/ExternalMcpConnectionReadiness]/referenceId` to the response with the `201` status
  - added the required property `requestHeaderNames` to the response with the `200` status
  - added the required property `requestHeaderNames` to the response with the `201` status
- **2026-10-29** `dc19b69f67a2`: 1 info
  - added the optional property `diagnostic/providerSettingsUrl` to the response with the `502` status
- **2026-10-23** `c93387179b31`: 22 breaking, 41 info
  - the response property `authorizationServerIssuer` became nullable for the status `200`
  - the response property `authorizationServerIssuer` became nullable for the status `201`
  - the response property `createdByName` became nullable for the status `200`
  - the response property `createdByName` became nullable for the status `201`
  - the response property `externalAccountId` became nullable for the status `200`
  - the response property `externalAccountId` became nullable for the status `201`
  - the response property `externalKey` became nullable for the status `200`
  - the response property `externalKey` became nullable for the status `201`
  - the response property `oauthCallbackUrl` became nullable for the status `200`
  - the response property `oauthCallbackUrl` became nullable for the status `201`
  - the response property `oauthClientId` became nullable for the status `200`
  - the response property `oauthClientId` became nullable for the status `201`
  - the response property `oauthClientMetadataUrl` became nullable for the status `200`
  - the response property `oauthClientMetadataUrl` became nullable for the status `201`
  - the response property `oauthSharedCallbackUrl` became nullable for the status `200`
  - the response property `oauthSharedCallbackUrl` became nullable for the status `201`
  - the response property `organizationReadiness/anyOf[#/components/schemas/ExternalMcpConnectionReadiness]/reason` became nullable for the status `200`
  - the response property `organizationReadiness/anyOf[#/components/schemas/ExternalMcpConnectionReadiness]/reason` became nullable for the status `201`
  - the response property `readiness/anyOf[#/components/schemas/ExternalMcpConnectionReadiness]/reason` became nullable for the status `200`
  - the response property `readiness/anyOf[#/components/schemas/ExternalMcpConnectionReadiness]/reason` became nullable for the status `201`
  - the response property `tenantId` became nullable for the status `200`
  - the response property `tenantId` became nullable for the status `201`
  - response property `authorizationServerIssuer` list-of-types was narrowed by removing types `null` from media type `application/json` of response `200`
  - response property `authorizationServerIssuer` list-of-types was narrowed by removing types `null` from media type `application/json` of response `201`
  - response property `createdByName` list-of-types was narrowed by removing types `null` from media type `application/json` of response `200`
  - response property `createdByName` list-of-types was narrowed by removing types `null` from media type `application/json` of response `201`
  - response property `details/items/path/items/` list-of-types was narrowed by removing types `number` from media type `application/json` of response `400`
  - response property `externalAccountId` list-of-types was narrowed by removing types `null` from media type `application/json` of response `200`
  - response property `externalAccountId` list-of-types was narrowed by removing types `null` from media type `application/json` of response `201`
  - response property `externalKey` list-of-types was narrowed by removing types `null` from media type `application/json` of response `200`
  - response property `externalKey` list-of-types was narrowed by removing types `null` from media type `application/json` of response `201`
  - response property `oauthCallbackUrl` list-of-types was narrowed by removing types `null` from media type `application/json` of response `200`
  - response property `oauthCallbackUrl` list-of-types was narrowed by removing types `null` from media type `application/json` of response `201`
  - response property `oauthClientId` list-of-types was narrowed by removing types `null` from media type `application/json` of response `200`
  - response property `oauthClientId` list-of-types was narrowed by removing types `null` from media type `application/json` of response `201`
  - response property `oauthClientMetadataUrl` list-of-types was narrowed by removing types `null` from media type `application/json` of response `200`
  - response property `oauthClientMetadataUrl` list-of-types was narrowed by removing types `null` from media type `application/json` of response `201`
  - response property `oauthSharedCallbackUrl` list-of-types was narrowed by removing types `null` from media type `application/json` of response `200`
  - response property `oauthSharedCallbackUrl` list-of-types was narrowed by removing types `null` from media type `application/json` of response `201`
  - response property `organizationReadiness/anyOf[#/components/schemas/ExternalMcpConnectionReadiness]/reason` list-of-types was narrowed by removing types `null` from media type `application/json` of response `200`
  - …23 more
- **2026-10-22** `6cd7fffc8d0b`: 4 info
  - added the optional property `organizationReadiness` to the response with the `200` status
  - added the optional property `organizationReadiness` to the response with the `201` status
  - added the optional property `readiness/anyOf[#/components/schemas/ExternalMcpConnectionReadiness]/failure` to the response with the `200` status
  - added the optional property `readiness/anyOf[#/components/schemas/ExternalMcpConnectionReadiness]/failure` to the response with the `201` status
- **2026-10-21** `8b797799efc8`: 8 info
  - added the optional property `canRemove` to the response with the `200` status
  - added the optional property `canRemove` to the response with the `201` status
  - added the optional property `credentialPrompt` to the response with the `200` status
  - added the optional property `credentialPrompt` to the response with the `201` status
  - added the optional property `mcpUrl` to the response with the `200` status
  - added the optional property `mcpUrl` to the response with the `201` status
  - added the optional property `nextStep` to the response with the `200` status
  - added the optional property `nextStep` to the response with the `201` status
- **2026-10-16** `b3e69054b120`: 5 info
  - added the new optional request property `manualOAuthEndpoints`
  - added the optional property `manualOAuthEndpoints` to the response with the `200` status
  - added the optional property `manualOAuthEndpoints` to the response with the `201` status
  - added the optional property `oauthClientHasSecret` to the response with the `200` status
  - added the optional property `oauthClientHasSecret` to the response with the `201` status
- **2026-10-11** `13ebcfe8505a`: 2 info
  - added the optional property `readiness` to the response with the `200` status
  - added the optional property `readiness` to the response with the `201` status
- **2026-10-09** `cc8a41bb846e`: 2 info
  - added the optional property `createdByYou` to the response with the `200` status
  - added the optional property `createdByYou` to the response with the `201` status
- **2026-10-08** `5e65f24df46a`: 2 info
  - added the optional property `createdAt` to the response with the `200` status
  - added the optional property `createdAt` to the response with the `201` status
- **2026-10-06** `ead990da4cfb`: 3 info
  - added the new optional request property `apiKeyAuthScheme`
  - added the required property `apiKeyAuthScheme` to the response with the `200` status
  - added the required property `apiKeyAuthScheme` to the response with the `201` status
- **2026-10-01** `df3754993784`: 1 info
  - added the optional property `message` to the response with the `400` status
- **2026-09-27** `6117f1cac9d7`: 1 info
  - added the required property `links/signIn` to the response with the `201` status
- **2026-09-11** `bb8ff73e4ad3`: 4 info
  - the endpoint scheme security `bearerAuth` was added to the API
  - the endpoint scheme security `denApiKey` was added to the API
  - the `connectedAt/anyOf[subschema #1]/` response's property pattern `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$` was added for the status `200`
  - the `connectedAt/anyOf[subschema #1]/` response's property pattern `^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$` was added for the status `201`
- **2026-09-05** `cb34559d4b4d`: 1 info
  - endpoint added

---

[Operation](https://skmtc.dev/openworklabs/apis/den-api/docs/v1/mcp-connections/by-key/:externalKey/put.md) - [API](https://skmtc.dev/openworklabs/apis/den-api.md) - [Page](https://skmtc.dev/openworklabs/apis/den-api/changes/v1/mcp-connections/by-key/:externalKey/put)
