# Twenty sdk/v2.54.0 — Release & Upgrade Intelligence
- **Product:** Twenty (https://twenty.com)
- **Version:** sdk/v2.54.0
- **Released:** Oct 30, 2026
- **Impact Score:** 7/10
- **Breaking Changes:** Source flagged
- **Canonical Analysis:** https://changelogs.us/twenty/updates/sdk-v2.54.0/

## Executive Summary (TL;DR)
Twenty sdk/v2.54.0. Source highlight: Apps can now declare MCP servers in their manifest using `defineMcpServer` from `twenty-sdk`. Two new helpers — `attachRecordToInboxThread` and `detachRecordFromInboxThread` — let apps and workspace members link records to inbox threads.

## Breaking Changes & Deprecations
- Three breaking changes require code updates. `SystemPermissionFlag.CONNECTED_ACCOUNTS` and `APPLICATIONS` are renamed to `USER_APPS` and `WORKSPACE_APPS`. `MarketplaceApp.isVetted` is replaced by `isListed`. `FeatureFlagKey.IS_MESSAGE_CAMPAIGN_ENABLED` is removed; campaigns are now on for all workspaces.
- ⚠️ Breaking changes - `FeatureFlagKey.IS_MESSAGE_CAMPAIGN_ENABLED` is removed; campaigns are enabled for every workspace by default, so remove any code-path guards on this key. ([#28929](https://github.com/twentyhq/twenty/pull/28929)) by @neo773

## New Features
- `attachRecordToInboxThread(threadId, recordId)` and `detachRecordFromInboxThread(threadId, recordId)` are now exported from `twenty-sdk`, letting apps link records to inbox threads with caller-scoped permissions. (#29090)
- `defineMcpServer({ universalIdentifier, name, label, url, connectionProvider? })` is now exported from `twenty-sdk` — add it to your app manifest to ship an MCP server alongside your connection provider. (#29158)
- `agentChatChannelThreadIds` now accepts a `filter` argument; channel and open-thread summaries return new `mentionsCount` and `needsInputCount` fields. (#29192)
- Apps can now receive server webhooks at `/webhooks/server/:appRegistrationId/:functionUniversalIdentifier`, a stable URL apps can construct without a runtime lookup. (#29204)
- The metadata API exposes `relatedRecordPaths` and `createRelatedRecordPath` when `IS_RELATED_RECORD_PATHS_ENABLED` is enabled. (#29243)
- Add a Merge with command to record pages (#29155)

## Bug Fixes
- `UpdateViewInput` now accepts `translations: [MetadataTranslationOverrideInput!]` on both the GraphQL `updateView` mutation and `PATCH /rest/metadata/views/:id`. (#29095)
- Menu item description text in `twenty-ui` now renders in the `Light` color token instead of `Secondary`, matching the Figma spec. (#29239)
- `UpdateViewInput.translations` in the generated `twenty-client-sdk` types now correctly references `MetadataTranslationOverrideInput` instead of the output-only `MetadataTranslation`. (#29264)
- The join word in keyboard shortcut sequences (e.g. "G then D") in `twenty-ui` now renders in `Light` instead of `Secondary`. (#29275)
