suitest (suiflex/suitest) is an MCP server listed on the M8ven Trust Index. It scores 89 out of 100, grade B. It declares 38 tools. The publisher has proved control of what we score (Verified Publisher). It is connected through the M8ven GitHub App, so the listing is re-checked on every push.
Self-hostable, MCP-native testing platform. Manual test management, deterministic runs, optional AI. Your stack, your LLM, your data.
Emerging. No concerning findings. Grades remain capped until the project builds reputation through adoption. Grades reflect the full trust pyramid: code, verification depth, and reputation. New projects cap at C until adoption is earned.
How we verified
every push re-verified
Who stands behind it
gmail.com (@suiflex) · Verified Publisher
Source: github_code · also listed on github_repo_search
Install from
The grade above is for the source repository. Registries can serve a different version, so we mark the ones we were not able to read.
These names and descriptions are the publisher's own, read from the source code. We print them as written. Our assessment is the findings above, not this list.
http.requestExecute an HTTP request via httpx.AsyncClient.
http.assert_statusAssert a response status code equals an expected integer.
http.assert_json_pathhttp.assert_pdf_texthttp.assert_headergraphql.queryExecute a GraphQL query.
graphql.mutateExecute a GraphQL mutation.
graphql.assert_dataRun a query and assert a JSONPath over the data payload.
grpc.callInvoke a unary gRPC method via server reflection.
grpc.assert_responseInvoke a unary method and assert a JSONPath on the response.
k8s.getGet one resource by kind/namespace/name.
k8s.listList resources of a kind in a namespace.
k8s.assert_conditionAssert a JSONPath on a resource equals an expected value.
mongo.findFind documents in a collection by filter.
mongo.insert_oneInsert a single document.
mongo.deleteDelete documents matching a filter.
mongo.assert_countAssert the document count matching a filter.
db.queryExecute a SELECT; returns rows as list[dict].
db.execExecute DML/DDL; returns affected rowcount.
db.assert_row_countAssert COUNT(*) over a table matches an exact value.
db.insertParameterized INSERT keyed by column->value.
db.deleteParameterized DELETE keyed by column->value WHERE.
db.assert_row_existsAssert >=1 row matches the WHERE filter.
dynamic_tool_618tauri.launchtauri.closeEnd the WebDriver session and stop the application.
tauri.clickClick the first element matching the selector.
tauri.type_textSend text to the element matching the selector.
tauri.get_textReturn the rendered text of the matching element.
tauri.assert_textAssert the matching element's text equals or contains a value.
tauri.assert_visibletauri.evaltauri.start_videotauri.stop_videotauri.screenshotPNG screenshot of the application window.
KURIR_BINSUITEST_API_KEY💡 SUITEST_API_URL and are required. MCP startup verifies the key and stops until the workspace LLM has been validated in Settings. Provider credentials stay on the Suitest server.SUITEST_API_PORTSUITEST_API_URL💡 and SUITEST_API_KEY are required. MCP startup verifies the key and stops until the workspace LLM has been validated in Settings. Provider credentials stay on the Suitest server.SUITEST_CONFIG_DIRSUITEST_PYTHONVITE_BACKEND_PORTVITE_PORTXDG_CONFIG_HOMESUITEST_TOKENSUITEST_WORKSPACE_IDSUITEST_WEB_DISTSUITEST_REDIS_URLSUITEST_OTEL_DISABLEDOTEL_EXPORTER_OTLP_ENDPOINTOTEL_SERVICE_NAMESUITEST_DATA_DIRSUITEST_ARTIFACTS_DIRSUITEST_ENCRYPTION_KEYSUITEST_EMBEDDINGSSUITEST_EMBEDDINGS_MODELDISPLAYWAYLAND_DISPLAYXDG_CURRENT_DESKTOPSUITEST_DATABASE_URLDEMO_SUITE_PATHSUITEST_RECREATE_PROJECTDEMO_APP_URLTool annotations
No tools have read-only/destructive annotations
Add readOnlyHint or destructiveHint annotations to every tool so hosts can warn users before invoking.
All four hints declared on every tool
38/38 tools missing one or more hints — http.request (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); http.assert_status (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint); http.assert_json_path (missing: readOnlyHint, destructiveHint, idempotentHint, openWorldHint), +35 more. OpenAI's directory rejects tools where any of the four hints are missing or non-boolean.
For every tool, set all four hints (readOnlyHint, destructiveHint, idempotentHint, openWorldHint) to explicit true/false values that match the handler’s actual behaviour.
Tool test coverage
21/38 tools referenced in tests (55%)
Write tests that reference each tool by name so every tool has at least one test.
[](https://m8ven.ai/mcp/suiflex/suitest)?variant=verified to the badge URL.Vetting this one by hand? Tool Check is an MCP that scores other MCPs. Add it once and ask Claude, ChatGPT, or any MCP client to grade a server, surface CVEs, check the publisher, and suggest safer alternatives — before you install.
https://m8ven.ai/api/mcp/tool-check