Developers & AI

Fix MCP OAuth redirect mismatch

When Claude or Cursor fails to connect — usually an exact redirect URI mismatch.

  1. Most Claude/Cursor connection failures are redirect_uri mismatch or a wrong client secret. Start in /dashboard/developer, expand the app, and list every registered redirect URI.

  2. Canonical URIs: Claude — https://claude.ai/api/mcp/auth_callback ; Cursor desktop — http://localhost:8787/callback ; Cursor Agents / cloud — https://www.cursor.com/agents/mcp/oauth/callback ; Cursor legacy — cursor://anysphere.cursor-mcp/oauth/callback .

  3. Compare scheme (http vs https), host, path, port, and trailing slash. Copy-paste from the client docs into the console rather than typing by hand. Add every URI your client might use (local + cloud).

  4. Confirm the authorize request uses the same redirect_uri that is registered and that you will send again on the token exchange. The redirect_uri on /api/oauth/token must match the one used at authorize.

  5. PKCE: clients must send code_challenge_method=S256 and later the matching code_verifier. Plain method is rejected. If the verifier is wrong, token exchange fails even when redirect URIs are correct.

  6. state must be present (min 8 characters) and validated by the client on return. Missing or short state can fail the authorize step.

  7. Wrong client secret: regenerate in the console, update the AI client, and retry. Old secrets stop working immediately after regenerate.

  8. Merchant must be signed in during authorize and must own a store. If authorize redirects to login, finish sign-in and retry — callbackUrl should return you to the consent screen.

  9. After a successful connect, Activity should show agent actions and the app should list a Connected grant. If OAuth succeeds but tools fail, check scopes (INSUFFICIENT_SCOPE) and that you are calling https://www.ettajer.com/api/v1/mcp .

  10. Still stuck? Contact support with: client (Claude/Cursor), exact redirect URI registered, error message text, and approximate time. Never send client secrets, API keys, or access tokens.

Was this article helpful?

Contact support