A MCP server for Factifai - AI-driven browser automation testing using natural language instructions
The server has 3 tools with basic definitions but significant quality gaps. Tool naming follows verb patterns (testWithFactifai, getFactifaiSessionResult, listFactifaiSessions), which is positive. However, descriptions lack LLM optimization guidance, parameter documentation is incomplete, output schemas are not formally documented, and error handling lacks recovery guidance. The descriptions are moderately detailed (100-200 chars range) but do not follow the pattern of explaining WHAT, WHEN, and WHAT IF for LLM selection. Schemas are inferred from the source but lack formal JSON Schema documentation in terms of output structure. No tool has explicit error recovery patterns or actionable error messages.
Get the result of a Factifai session
List all Factifai sessions
AI-driven browser automation testing using natural language instructions, only available for websites that are accessible via a browser. eg: "Navigate to duckduckgo.com and search for 'testing automation'", This will execute the given task in real browser and test the requested things and return the result. The test are long running so it will not wait for the test to complte, instead it will return the session id and you can use it to get the result later. The session id is a unique identifier for the test and it will be used to get the result later. The result will be returned in the format of a JSON object with the following fields: - sessionId: The session id of the test - status: The status of the test - result: The result of the test, it will be a JUnit XML string - error: Any error that occurred during the test
Missing output schema documentation. No formal description of what fields getFactifaiSessionResult or listFactifaiSessions return. LLMs cannot plan downstream chaining (e.g., what fields are returned to use in follow-up calls).
No error recovery guidance. Descriptions state what the tool does but do not explain what errors are possible or how to recover. E.g., 'Task execution failed' gives the LLM no next step; should say 'If session not found, try listing all sessions first.'
testWithFactifai description includes example task inline ('Navigate to duckduckgo.com and search for testing automation'). LLMs frequently reuse example values literally instead of adapting to context, causing tool misuse.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 45 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 30 | - | v1 |
Parameter descriptions are minimal or missing context. 'sessionId' param in getFactifaiSessionResult has a one-line description but does not explain format, where to get it, or what happens if it is invalid.
listFactifaiSessions status filter is optional but lacks documentation of default behavior. Does omitting status return all sessions or only pending? This ambiguity forces LLMs to guess.
No pagination or result limiting documented. listFactifaiSessions could return unbounded results. The rubric baseline (p10=1, p90=8 params) suggests this tool lacks limit/offset parameters and response capping.