MCP OAuth logins now verify the issuer and give clearer errors when client registration is rejected.
What's wrong with this entry?
Loopback and manual-URL OAuth callbacks now read iss from the query string and carry it into token exchange, and saved MCP tokens record the issuer.
- Token exchange receives
authorizationCode: d.code, iss: d.iss. - Saved tokens gain an
issuerfield; an unexpected-issuer check runs when the authorization server advertises iss support. - New failure classification
"dcr_rejected"separates a rejected dynamic client registration from the existing"dcr_failed". - OAuth error matching moved off message and
errorCodesniffing onto typed SDK errors read via.code, coveringinvalid_client,unauthorized_clientand InvalidGrant.
dcr_rejected
Strings lifted out of the shipped bundle, so the claim above can be checked against them.