MCP server for testing Microsoft Dynamics 365 Business Central and MobileNAV
bc-rig defines 9 tools with explicit schemas and descriptions. Naming is action-oriented (browser_session, browser_observe, browser_act, mobile_observe, mobile_act, doctor, run, browser_screenshot, mobile_screenshot). Descriptions are present and moderately detailed (avg ~100 chars), explaining WHAT each tool does. However, parameter descriptions are sparse or missing context about dependencies and constraints. Output schemas are not documented in the visible code. Error handling is basic (errorText helper exists but recovery guidance is minimal). Tool annotations (readOnlyHint, destructiveHint, idempotentHint) are correctly applied. The 'since' parameter pattern for polling is well-designed. Missing: explicit output schema documentation, parameter constraint details (e.g., valid enum values for 'operation'), and recovery guidance in error messages.
Perform an action on a browser element (click, fill, type, press, navigate) and return the resulting state.
Capture the current browser state as a compact ARIA snapshot with interactive element references.
Capture a screenshot of the current browser window.
Start, select, inspect, list, or stop isolated project browsers. Start requires an AL launch.json path.
Run diagnostic checks on the bc-rig environment (Node.js, Playwright, Android SDK, emulator).
Perform an action on a mobile element (tap, type, back, navigate) and return the resulting state.
Capture the current mobile (Android) UI tree with interactive element references.
Output schemas not documented. Tools return CompactBrowserState, CompactMobileState, and other structured types, but the response schema is not visible in tool definitions. LLMs cannot plan downstream calls without knowing what fields to expect.
Parameter descriptions lack constraint details. 'operation' enum values are listed but no description explains when to use 'start' vs 'use' vs 'status'. 'launchJson' requires 'absolute path' but no format or validation guidance. 'limit' and 'offset' lack min/max bounds.
Error handling lacks recovery guidance. errorText() helper returns raw error messages without actionable next steps. E.g., 'No browser session selected' should suggest 'Call browser_session with operation=start first.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Capture a screenshot of the current mobile (Android) device screen.
Start, resume, finish, or inspect a test run manifest for recording steps and artifacts.
Parameter dependencies undocumented. browser_session 'configuration' defaults to 'first AL launch entry' but this is only mentioned in description, not enforced or validated. 'launchJson' is optional for 'use/status/stop' but required for 'start', this conditional requirement is not explicit in schema.
Pagination design incomplete. browser_observe and mobile_observe accept 'offset' and 'limit' but no 'total' or 'next_cursor' is documented in return. Without knowing total count, LLMs cannot determine if more results exist or plan pagination loops.