Agent-native mobile app test runner for React Native, Expo, Flutter, and native Android/iOS with MCP protocol support
Zeno Mobile Runner exposes 7 tools via STDIO with minimal schema documentation. Tool definitions are inferred from test shell scripts rather than explicit MCP server code. Descriptions are present but generic (avg 65 chars, well below 194-char baseline). Input schemas lack type definitions for most parameters, only 'compact' (boolean) and 'path' (string) are typed; others are bare objects with descriptions but no 'type' field. No output schemas documented. Error handling and recovery guidance absent. Tools combine multiple concerns (e.g., trace_discover generates AND validates AND exports). No parameter constraints (enums, ranges, patterns). Security: run_scenario accepts inline scenario objects without validation hints.
Execute a test scenario from a file path or inline scenario definition
Validate a scenario file for correctness and compatibility
Capture a semantic snapshot with role-based node information and recommended actions
Capture a raw UI snapshot of the current screen state
Discover and generate test scenarios from trace evidence
Explain the results and diagnostics of a trace execution
Export trace artifacts to a compressed archive with optional redaction
No input schemas visible in source code. Tool definitions inferred from test shell scripts (tests/mcp-server-test.sh) rather than explicit MCP server registration. Cannot verify actual parameter types, required vs optional, or constraints.
Parameters lack type definitions. 'path', 'scenario', 'traceDir', 'out', 'name', 'appId' are documented as objects/strings in descriptions but have no explicit 'type' field in schema. Violates JSON Schema best practice and prevents LLM validation.
No output schemas documented. LLMs cannot infer what fields to expect from snapshot, semantic_snapshot, trace_explain, or trace_discover. Breaks tool chaining and forces agents to guess response structure.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 43 | 2026-07-28+ | v2 |
Descriptions are generic and under 50 chars for snapshot (24 chars) and trace_explain (25 chars). Baseline is 194 chars. Descriptions lack WHEN to use, prerequisites, or dependencies. E.g., trace_explain does not explain what trace context it requires or how to obtain it.
No error handling or recovery guidance. Tools do not document what errors are retryable, user-fixable, or fatal. No guidance on invalid inputs (e.g., what happens if path does not exist, or scenario is malformed).