TheDocumentation Index
Fetch the complete documentation index at: https://docs.flowstep.ai/llms.txt
Use this file to discover all available pages before exploring further.
/mcp endpoint requires a Supabase access_token passed as a Bearer token. Most MCP clients obtain this automatically via the OAuth 2.1 PKCE flow. You can also supply a token manually for testing.
OAuth 2.1 PKCE flow
Flowstep implements a full OAuth 2.1 authorization server athttps://api.flowstep.ai. MCP clients discover it via standard RFC metadata endpoints.
Discovery chain
OAuth endpoints
| Method | Endpoint | Purpose |
|---|---|---|
GET | /.well-known/oauth-protected-resource | RFC 9728 resource metadata |
GET | /.well-known/oauth-authorization-server | RFC 8414 server metadata |
POST | /oauth/register | RFC 7591 dynamic client registration |
GET | /oauth/authorize | Show login form |
POST | /oauth/authorize | Process email/password login |
GET/POST | /oauth/social-callback | Google SSO callback |
POST | /oauth/token | Code exchange and token refresh |
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
Account creation for claude.ai connector users
The OAuth login page does not include a sign-up form. If you’re connecting via claude.ai’s custom connector and don’t have a Flowstep account yet, create one first at app.flowstep.ai, then return to the connector setup to authenticate.Token mechanics
| Property | Value |
|---|---|
| Token type | Supabase JWT (Bearer) |
| Access token expiry | ~1 hour |
| Refresh token | Long-lived; used to obtain new access tokens |
| Auth code TTL | 5 minutes (single use) |
| Pending social auth TTL | 10 minutes |
| Scopes | openid, offline_access |
supabase.auth.getUser(token). An expired or invalid token returns 401 with a WWW-Authenticate header, which triggers the client’s re-authentication flow.
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: