@OpenAI_Support
ChatGPT’s actual DCR call omits openid
When I click Connect in ChatGPT’s Developer Mode against the same MCP URL, the resulting OAuth application in the authorization server’s dashboard has:
- name: ChatGPT
- scopes: email offline_access profile ← openid is missing
- client_id: dcr-generated-id
The subsequent /authorize step then fails with the authorization server’s internal state-validation error (which translates to an invalid_scope-class condition, since
ChatGPT’s /authorize request does include scope=openid … but the just-registered client wasn’t permitted it).
Diagnosis
ChatGPT’s DCR scope-list builder and /authorize scope-list builder disagree about openid:
- /authorize: correctly includes openid (consistent with OIDC Core §3.1.2.1, since it needs an ID token for user identity).
- DCR registration POST: omits openid from the scope field, despite our .well-known/oauth-protected-resource scopes_supported advertising it.
Result: every fresh Developer-Mode connection creates an OAuth client that cannot fulfill the /authorize request that follows. The only workaround currently is to PATCH openid into each freshly-created client by hand (or via a script targeting the provider’s admin API).
Please confirm whether ChatGPT’s MCP connector is intended to:
- (a) read scopes_supported from the protected-resource metadata and include those scopes in the DCR scope field, or
- (b) include only a hardcoded scope set in DCR.
If (a), there’s a bug in the DCR scope-list builder — it isn’t reading our metadata. If (b), then openid should be part of that hardcoded set (since /authorize requires it for OIDC anyway, which ChatGPT clearly relies on for user identity).