mcp-registry/io.github.michal-lefler/secureflows-mcp-server · v0.2.0
Also listed as github/michal-lefler/secureflows-mcp, github/michal-lefler/secureflows-mcp-server, glama/michal-lefler/secureflows-mcp-server, mcp-registry/io.github.michal-lefler/secureflows-mcp · primary listing: mcp-registry/io.github.michal-lefler/secureflows-mcp
As of 2026-10-17 17:14 UTC, the Michal Lefler Secureflows MCP server is up with a Glimind reliability score of 96/100 (grade A). Over the last 30 days it answered 100% of Glimind's liveness checks.
MCP server for secureFlows: token-free URL builders and integration-linting tools for AI agents.
Claude Code
claude mcp add --transport http michal-lefler-secureflows-mcp-server https://www.secure-flows.com/mcp
Claude Desktop · Windsurf · Cline (mcpServers JSON)
{
"mcpServers": {
"michal-lefler-secureflows-mcp-server": {
"type": "http",
"url": "https://www.secure-flows.com/mcp"
}
}
}
Third-party server, listed as discovered. Review its source before installing.
18 of 18 tool(s) carry no readOnlyHint/destructiveHint annotations.
Annotate read-only tools with {"readOnlyHint": true}. Agents and gateways can then run them without a confirmation prompt, and route around destructive ones.
74 parameter(s) across 15 tool(s) have no description.
Add a "description" to each parameter with its format and an example ("ISO 8601 date, e.g. 2026-10-17"). This is the commonest cause of wrong arguments on the first call.
12 tool(s) have parameters with no type (no type/enum/anyOf/$ref).
Give every parameter a "type" (or "enum"/"anyOf"). Untyped parameters make models guess — strings for numbers, objects for arrays.
7 tool(s) look like they change state (create/send/delete/pay…) but declare no destructiveHint.
Set annotations {"readOnlyHint": false, "destructiveHint": true|false, "idempotentHint": …}. Clients use these to ask the user before a side effect and to auto-approve safe reads.
Handshake + tools/list takes ~1,699 ms.
Serve tools/list from memory, keep the process warm, and host close to your users. Every new agent session pays this before its first call.
No tool declares an outputSchema.
Declare outputSchema and return structuredContent (MCP 2025-06-18+). Agents can then parse results without guessing, and chain tools reliably.
Paste-ready definitions with the problems above fixed. Changes marked verify need a human look. 15 tool(s) still need parameter descriptions written by someone who knows the API. All of them as JSON: /v1/readiness/mcp-registry%2Fio.github.michal-lefler%2Fsecureflows-mcp-server/fixes
{
"name": "auth_session_callback",
"description": "**Browser redirect endpoint** used after hosted `/app/sessions/login`. No `Authorization` header.\n\n1. Verifies **`firebaseToken`** (Firebase ID token).\n2. Ensures **`client_redirect_uri`** is allowlisted for **`app_id`** (same rules as `validate-redirect`).\n3. **Create vs renew:** If **`session_token`** is absent, **reuses the newest active session** for\n **`(workspace_name, Firebase UID, app_id)`** or **creates** one (`get-or-create`). Optional\n **`payload`** (URL-encoded JSON **object**, d",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"connection",
"query"
],
"properties": {
"auth": {
"type": "object",
"properties": {}
},
"body": {
"type": "string"
},
"query": {
"type": "object",
"required": [
"firebaseToken",
"client_redirect_uri",
"workspace_name",
"app_id"
],
"properties": {
"state": {
"type": "string"
},
"app_id": {
"type": "string"
},
"payload": {
"type": "string",
"description": "JSON object as a string (e.g. `{\"a\":1}`), URL-encoded. Must parse to a JSON object (not an array or primitive).\nDefault when omitted is `{}`. Must not be combined with `session_token` on the same request.\n"
},
"ttl_seconds": {
"type": "integer",
"maximum": 604800,
"minimum": 0,
"description": "Session lifetime in seconds (default 0 = unlimited; allowed values: 0 or 60–604800)"
},
"firebaseToken": {
"type": "string"
},
"session_token": {
"type": "string",
"description": "Previous session JWT (may be expired); signature must validate. When present, the server renews this\nsession instead of creating a new one. Must not be combined with `payload` on the same request.\nURL-encode the value; very long URLs may exceed browser or proxy limits.\n"
},
"workspace_name": {
"type": "string"
},
"client_redirect_uri": {
"type": "string",
"format": "uri"
}
}
},
"params": {
"type": "object",
"properties": {}
},
"connection": {
"type": "object",
"required": [
"host"
],
"properties": {
"host": {
"type": "string",
"format": "uri",
"description": "secureFlows base URL, for example https://api.example.com"
},
"appId": {
"type": "string",
"description": "Optional secureFlows app id used as a default for hosted login tools"
},
"workspaceName": {
"type": "string",
"description": "Optional workspace name used as a default for tools that need it"
}
}
}
}
},
"title": "Session login callback (redirect)"
}{
"name": "delete_sessions_delete_key",
"description": "Removes `key` from the session payload and returns `true` if the key existed.\n\nSource: DELETE /api/v1/sessions/delete/{key}\nRequires `auth.sessionToken` and forwards it as a Bearer token.\nPrefer connection.workspaceName and connection.appId as stable config instead of generating identity fields dynamically.",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"connection",
"params"
],
"properties": {
"auth": {
"type": "object",
"required": [
"sessionToken"
],
"properties": {
"sessionToken": {
"type": "string",
"description": "secureFlows session token"
}
}
},
"body": {
"type": "string"
},
"query": {
"type": "object",
"properties": {}
},
"params": {
"type": "object",
"required": [
"key"
],
"properties": {
"key": {
"type": "string",
"description": "Payload key to delete"
}
}
},
"connection": {
"type": "object",
"required": [
"host"
],
"properties": {
"host": {
"type": "string",
"format": "uri",
"description": "secureFlows base URL, for example https://api.example.com"
},
"appId": {
"type": "string",
"description": "Optional secureFlows app id used as a default for hosted login tools"
},
"workspaceName": {
"type": "string",
"description": "Optional workspace name used as a default for tools that need it"
}
}
}
}
},
"annotations": {
"readOnlyHint": false,
"destructiveHint": true,
"idempotentHint": true
},
"title": "Delete a key from the session payload"
}{
"name": "get_auth_logout",
"description": "Browser-friendly logout endpoint for **cross-site** clients (e.g. apps running on `localhost`).\n\nUse this as a **top-level navigation** (not XHR/fetch) so `Clear-Site-Data` is applied in a\n**first-party** context on `secure-flows.com`, making cookie/session clearing reliable even when\nthird-party cookies are blocked.\n\n**Critical client rules:**\n- Clear your in-app `sessionToken` state **before** navigating.\n- **Never** include `session_token` inside `redirect_uri` (that would silently renew and ",
"inputSchema": {
"type": "object",
"$schema": "http://json-schema.org/draft-07/schema#",
"required": [
"connection",
"query"
],
"properties": {
"auth": {
"type": "object",
"properties": {}
},
"body": {
"type": "string"
},
"query": {
"type": "object",
"required": [
"session_token",
"redirect_uri"
],
"properties": {
"redirect_uri": {
"type": "string",
"format": "uri",
"description": "Where to redirect after logout completes"
},
"session_token": {
"type": "string",
"description": "SESSION JWT to invalidate (URL-encoded)"
}
}
},
"params": {
"type": "object",
"properties": {}
},
"connection": {
"type": "object",
"required": [
"host"
],
"properties": {
"host": {
"type": "string",
"format": "uri",
"description": "secureFlows base URL, for example https://api.example.com"
},
"appId": {
"type": "string",
"description": "Optional secureFlows app id used as a default for hosted login tools"
},
"workspaceName": {
"type": "string",
"description": "Optional workspace name used as a default for tools that need it"
}
}
}
}
},
"annotations": {
"readOnlyHint": true
},
"title": "Log out (browser redirect helper; first-party cookie clearing)"
}Get an email or webhook when this server's readiness drops by 10+ points, tool-poisoning text appears, or a tool breaks:
curl -X POST https://glimind.com/v1/subscriptions -H 'content-type: application/json' -d '{"tools":["mcp-registry/io.github.michal-lefler/secureflows-mcp-server"],"email":"[email protected]"}'Agents: watch_tool({"toolId": "mcp-registry/io.github.michal-lefler/secureflows-mcp-server"}) over MCP.
auth_session_callback ~618 tokensget_sessions_my ~560 tokenssecureflows_build_login_url ~545 tokenspost_sessions_get_or_create ~511 tokenspost_sessions ~507 tokensStatic checks of the advertised tools/list (schema, descriptions, annotations, tool-poisoning patterns, names, size) plus observed protocol, uptime, latency and contract changes. Read-only: no tool is ever called. Weights: schema 15, docs 20, safety 15, efficiency 15, compatibility 15, protocol 5, reliability 10, stability 5. Token counts are estimates (~3.6 characters per token).
Operator? Fix these, then re-check live. Embed the readiness badge:
[](https://glimind.com/server/mcp-registry%2Fio.github.michal-lefler%2Fsecureflows-mcp-server?ref=badge)
<a href="https://glimind.com/server/mcp-registry%2Fio.github.michal-lefler%2Fsecureflows-mcp-server?ref=badge"><img src="https://glimind.com/v1/readiness/badge/mcp-registry%2Fio.github.michal-lefler%2Fsecureflows-mcp-server.svg" alt="MCP agent-readiness"></a>
.. image:: https://glimind.com/v1/readiness/badge/mcp-registry%2Fio.github.michal-lefler%2Fsecureflows-mcp-server.svg :target: https://glimind.com/server/mcp-registry%2Fio.github.michal-lefler%2Fsecureflows-mcp-server?ref=badge :alt: MCP agent-readiness
Glimind records every version of this server's tool definitions in a signed, append-only transparency log. Current manifest sha256:f9e90a19b715ba15…, first seen 2026-10-17, included at leaf 4405 of 17,947. Version history · verify what your client received.
Compare: most reliable auth servers · most reliable search servers · most reliable security servers · most reliable code servers
Glimind tells agents whether a server is up right now and how to call it, then fails over to a live alternative when it isn't.
Claude Code
claude mcp add --transport http glimind https://glimind.com/mcp
Claude Desktop · Windsurf · Cline (mcpServers JSON)
{
"mcpServers": {
"glimind": {
"type": "http",
"url": "https://glimind.com/mcp"
}
}
}
As of 2026-10-17 17:14 UTC, the Michal Lefler Secureflows MCP server is up with a Glimind reliability score of 96/100 (grade A). Over the last 30 days it answered 100% of Glimind's liveness checks.
Michal Lefler Secureflows MCP server advertises 18 tools, including auth_session_callback, delete_sessions_delete_key, get_auth_logout, get_docs_search, get_sessions.
Point your MCP client at this streamable-http endpoint: https://www.secure-flows.com/mcp
Glimind scanned all 18 tool definitions for tool-poisoning patterns — hidden or invisible characters, instructions that override the model, concealment from the user, requests to read credential or MCP config files, conversation exfiltration and cross-tool shadowing — and found none. This checks what the server tells the model, not what its code does; review the source before granting access to sensitive data.
Status page: 90-day uptime, every outage and how long it lasted.
Claim this listing to get the Verified operator marker, a remediation checklist and owner analytics, or embed the live badge from any of the tool pages above. Maintainers: alerts, deploy attestation and monthly reports.
Status is an automated estimate from Glimind's liveness checks (handshake and tool listing only; no tool is ever called) and may lag or differ from your network. Glimind is not affiliated with this server or its operator. Operator? Request a correction or opt out at https://glimind.com/opt-out.