Repository navigation
Say an ended trial up front in list_connectors; any user can reactivate - #1576
Merged
Merged
Conversation
anythingmcp_list_connectors (shared endpoint and ChatGPT plugin) now starts with a trialEnded block (message, reactivation link, hint) when the workspace's trial has ended, so the user hears it before a tool call fails. The blocked-call text no longer says an administrator must reactivate: the link lets anyone choose a plan and pay, without signing in.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to subscribe to this conversation on GitHub.
Already have an account?
Sign in.
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two follow-ups to #1574, from the production test on 2026-11-07:
anythingmcp_list_connectorsanswered as if everything worked. The user only learned about the ended trial when a tool call failed. The list now starts with atrialEndedblock: the same message and reactivation link a blocked call gives, plus a hint to show the link first. The connectors are still listed. This applies on the shared endpoint (Claude Directory and the default set) and in the ChatGPT database plugin.Changes
DynamicMcpTools.trialEndedNotice(orgId, userId): runs the licence check. OnTrialEndedExceptionit returns{ message, reactivateUrl }, using the same A/B link as a blocked call (trialReactivationLink). Otherwise it returns null: active licence, self-hosted, or any other refusal.SharedToolsetDeps.trialEnded?, wired inmcp-endpoint.controller.tsto the connection's workspace (the setup org, else the grant or user org).trialEndedBlock()is used by bothanythingmcp_list_connectorsimplementations. It is best-effort: an error there leaves the list unchanged.trial_expired_call_blockedstill counts real blocked calls only, so the blocked-calls email and the A/B denominator are unchanged.Deployment modes
checkLicenseActivenever throwsTrialEndedExceptionthere, so there is no block and no change.Type
Testing
In
packages/backend:npx jest --maxWorkers=4 src/mcp-server src/license: 1,030 passed, 5 skipped. New specs:npx tsc --noEmit -p tsconfig.json: clean.npx eslinton the 7 changed files: clean.Checklist