Normalizes an OAuth URL so trailing-slash variants compare equal. Shared so deriveCredentialScope
and MCPServerManagerImpl's scope-change check use the SAME normalization — otherwise a no-op edit
could wipe credentials whose storage key has not changed.
Normalizes an OAuth URL so trailing-slash variants compare equal. Shared so deriveCredentialScope and
MCPServerManagerImpl's scope-change check use the SAME normalization — otherwise a no-op edit could wipe credentials whose storage key has not changed.