Secure Flows is an MCP server with 18 tools an agent can call, among them auth_session_callback, delete_sessions_delete_key, get_auth_logout. It answers at https://www.secure-flows.com/mcp?alias=secure-flows over streamable HTTP, and it listed its tools to an anonymous client, so no sign-in was needed for that. Our probes reached it 6 of 6 times since 11 September 2026; the last check, on 22 October 2026, succeeded.
MCP server for secureFlows (secure-flows.com). Alias of io.github.michal-lefler/secureflows-mcp.
Description as the publisher wrote it.
| Tool | What it does |
|---|---|
auth_session_callback | **Browser redirect endpoint** used after hosted `/app/sessions/login`. No `Authorization` header. 1. Verifies **`firebaseToken`** (Firebase ID token). 2. Ensures **`client_redirect_uri`** is allowlisted for **`app_id`** (same rules as `vali Inputs: connection, auth, params, query, body |
delete_sessions_delete_key | Removes `key` from the session payload and returns `true` if the key existed. Source: DELETE /api/v1/sessions/delete/{key} Requires `auth.sessionToken` and forwards it as a Bearer token. Prefer connection.workspaceName and connection.appId Inputs: connection, auth, params, query, body |
get_auth_logout | Browser-friendly logout endpoint for **cross-site** clients (e.g. apps running on `localhost`). Use this as a **top-level navigation** (not XHR/fetch) so `Clear-Site-Data` is applied in a **first-party** context on `secure-flows.com`, makin Inputs: connection, auth, params, query, body |
get_docs_search | Embeds the query with Ollama (`nomic-embed-text`) and returns the closest public doc chunks from the environment's search index (pgvector). Source: GET /api/v1/docs/search No Authorization header is required. Prefer connection.workspaceName Inputs: connection, auth, params, query, body |
get_sessions | Returns the decrypted session payload for the authenticated internal session token. Response shape is a **flat JSON object**. Empty payload returns `{}`. Source: GET /api/v1/sessions Requires `auth.sessionToken` and forwards it as a Bearer Inputs: connection, auth, params, query, body |
get_sessions_get_key | Retrieves the decrypted payload value for `key`. **Important:** `404` means the key was never written (normal first-use case). Do not treat as an error. Source: GET /api/v1/sessions/get/{key} Requires `auth.sessionToken` and forwards it as Inputs: connection, auth, params, query, body |
get_sessions_identity | Returns the workspace end-user's **`userId`** and **email** for the authenticated session token. Does not return Firebase UID or session payload. `userId` is a stable, opaque identifier for this person across sessions and logins — it is **n Inputs: connection, auth, params, query, body |
get_sessions_my | Returns a page of sessions for the current user within the current workspace. Self-service dashboard endpoint — requires workspace **`enableSelfService: true`**. Payload is included only for rows whose computed status is active. Sort keys m Inputs: connection, auth, params, query, body |
post_auth_logout | Logs out the current session **without revoking** it. **Browser warning:** calling this endpoint via XHR/fetch from a different origin than `secure-flows.com` is not a reliable way to clear hosted-login cookies. For browser apps (especially Inputs: connection, auth, params, query, body |
post_sessions | Verifies **Firebase** ID token, creates a session for **`workspaceName`**, stores serialized **`payload`** (defaults to `{}` when omitted), and returns **`sessionToken`** (JWT; subject = internal session id). Default server-side TTL is **1 Inputs: connection, auth, params, query, body |
post_sessions_get_or_create | Verifies **Firebase** ID token. If an **active** session already exists for **`(workspaceName, Firebase UID, app_id)`**, returns a new **`sessionToken`** JWT for the **most recently created** matching row (touches activity; does not create Inputs: connection, auth, params, query, body |
post_sessions_renew_session_token | Verifies **Firebase** ID token. Parses **`sessionToken`** path segment as an internal SESSION JWT **without enforcing JWT expiry** (signature and `tokenType=SESSION` are still validated). Loads the session by id from the token subject; the Inputs: connection, auth, params, query, body |
post_sessions_revoke | Revokes the session referenced by the internal SESSION Bearer token. This endpoint is useful for automation clients that only hold a session token and want to revoke it cleanly. Source: POST /api/v1/sessions/revoke Requires `auth.sessionTok Inputs: connection, auth, params, query, body |
post_sessions_revoke_session_id | Self-service dashboard endpoint. Revokes a session owned by the caller in the current workspace. Requires workspace **`enableSelfService: true`**. Source: POST /api/v1/sessions/revoke/{sessionId} Requires `auth.userToken` and forwards it as Inputs: connection, auth, params, query, body |
post_sessions_set_key | Sets a key in the encrypted session payload and returns the updated decrypted payload. If the JSON body is `{ "value": <x> }`, the server unwraps it and stores `<x>` directly. Source: POST /api/v1/sessions/set/{key} Requires `auth.sessionTo Inputs: connection, auth, params, query, body |
secureflows_build_login_url | Builds a correct hosted-login redirect URL. Needs no secureFlows token — safe to call at app-scaffolding time, before any user session exists, which is the phase most secureFlows integration mistakes happen in. Always targets /app/sessions/ Inputs: origin, workspaceName, appId, redirectUri, intent, expiredToken |
secureflows_build_logout_url | Builds a correct redirect-logout URL and refuses to build one that violates the two documented logout anti-patterns: a redirect_uri pointing at /callback (SPA callback handlers treat the tokenless return as a failed login and loop), and a r Inputs: origin, sessionToken, postLogoutRedirectUri |
secureflows_lint_integration | Checks source you already generated against the secureFlows integration rules. Needs no secureFlows token; safe at scaffolding time. Pass every auth/session-related file in one call — some checks are evaluated across the whole set. Two kind Inputs: files |
Every block below points at https://www.secure-flows.com/mcp?alias=secure-flows. Pick your client and copy.
claude mcp add --transport http secure-flows https://www.secure-flows.com/mcp?alias=secure-flows
{
"mcpServers": {
"secure-flows": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://www.secure-flows.com/mcp?alias=secure-flows"]
}
}
}{
"mcpServers": {
"secure-flows": {
"url": "https://www.secure-flows.com/mcp?alias=secure-flows"
}
}
}{
"servers": {
"secure-flows": {
"type": "http",
"url": "https://www.secure-flows.com/mcp?alias=secure-flows"
}
}
}{
"context_servers": {
"secure-flows": {
"url": "https://www.secure-flows.com/mcp?alias=secure-flows"
}
}
}{
"mcpServers": {
"secure-flows": {
"serverUrl": "https://www.secure-flows.com/mcp?alias=secure-flows"
}
}
}{
"mcpServers": {
"secure-flows": {
"url": "https://www.secure-flows.com/mcp?alias=secure-flows"
}
}
}name: Secure Flows
version: 0.0.1
schema: v1
mcpServers:
- name: Secure Flows
type: streamable-http
url: https://www.secure-flows.com/mcp?alias=secure-flows{
"mcpServers": {
"secure-flows": {
"httpUrl": "https://www.secure-flows.com/mcp?alias=secure-flows"
}
}
}{
"mcpServers": {
"secure-flows": {
"type": "http",
"url": "https://www.secure-flows.com/mcp?alias=secure-flows"
}
}
}{
"mcpServers": {
"secure-flows": {
"url": "https://www.secure-flows.com/mcp?alias=secure-flows"
}
}
}goose://extension?url=https%3A%2F%2Fwww.secure-flows.com%2Fmcp%3Falias%3Dsecure-flows&type=streamable_http&id=secure-flows&name=Secure%20Flows
It answered our last check on 22 October 2026 in 354 ms. Over 6 checks since 11 September 2026 it answered 6. Status here comes from Neuronto's own probes, not from the publisher.
18, as returned by the server's own tools/list on 17 September 2026: auth_session_callback, delete_sessions_delete_key, get_auth_logout, get_docs_search, get_sessions, get_sessions_get_key, get_sessions_identity, get_sessions_my, and 10 more.
It answered our last check on 22 October 2026 in 354 ms. Over 6 checks since 11 September 2026 it answered 6.
Put the server under mcpServers in ~/.cursor/mcp.json with the URL https://www.secure-flows.com/mcp?alias=secure-flows. The exact JSON is above, with the same setup for Claude Code, Claude Desktop, VS Code, Windsurf, Zed, Gemini CLI and the rest.
It listed its tools to an anonymous client, so reading the tool list needs no key. Individual tools can still ask for credentials in their own inputs.
Publisher: io.github.michal-lefler. Endpoint host: www.secure-flows.com. ARD identifier: urn:air:io.github.michal-lefler:mcp:secure-flows.
First indexed 10 September 2026. The tools are exactly what the server returned; nothing on this page
is inferred from its name. Ranking in Neuronto search is never for sale.