/mcp endpoint requires a Bearer token in the Authorization header. MCP clients obtain one automatically through the OAuth 2.1 PKCE flow — there’s no API key to create, paste, or rotate. You can also supply a token manually for testing.
OAuth 2.1 PKCE flow
Flowstep runs its own OAuth 2.1 authorization server athttps://api.flowstep.ai. MCP clients discover and complete the flow automatically: they open a browser window for you to log in and approve access, then handle the token exchange behind the scenes. Clients can register themselves dynamically, so you don’t need to set up a client ID first.
Supported login methods
The authorization page at/oauth/authorize supports:
- Email/password — any Flowstep account with a password set
- Google SSO — redirects through Supabase social auth, returns to the client automatically
Review and approve access
After you log in, Flowstep shows a consent screen before it issues a token — no client can finish connecting without your explicit approval. The screen is headed Authorize access and names the client that’s requesting access — the client’s name in bold, followed by “is requesting access to your Flowstep account” — then shows You’ll be redirected to and the destination host. Choose Allow to finish connecting, or Deny to cancel. Denying returns the client anaccess_denied error and issues no token.
Account creation for claude.ai connector users
The OAuth login page does not include a sign-up form. If you’re adding the Flowstep connector from Claude’s connector directory and don’t have a Flowstep account yet, create one first at app.flowstep.ai, then return to Claude to finish connecting.Cookie fallback
If noAuthorization header is present, the middleware falls back to a cookie-based Supabase session. This works when accessing /mcp directly from a browser with an active Flowstep session. MCP clients always use the Bearer path.
Manual token (testing)
To call the endpoint directly without a client OAuth flow:- Sign in to app.flowstep.ai in your browser
- Open DevTools → Console, run:
- Pass the token as a header: