A LiveKit-based voice AI agent that integrates with MCP servers to provide voice interaction capabilities with company knowledge systems, analytics, and UI navigation
Three tools with verb-noun naming (get_*, click_*) and descriptions present. However, descriptions lack LLM-optimization guidance (e.g., no 'when to use' or prerequisites). Input schemas are minimal or empty, get_page_elements and get_current_page have empty input objects with no parameters. click_ui_element has one parameter (element_name) with type and description, but lacks enum constraints or format guidance. No output schemas documented. Error handling and recovery guidance absent. Tool composition is reasonable (single responsibility), but parameter descriptions could be more actionable.
Click a button, link, or any interactive element on the current page using its text/name. This is the PRIMARY way to interact with the UI including NAVIGATION. For NAVIGATION: Click sidebar links like "WhatsApp Reports", "Dashboard", "Productivity Reports", etc. For ACTIONS: Click buttons like "View Report", "Download", "ملء الشاشه", etc.
Get information about the current page the user is viewing. Use when: Need to check where user is before taking action, User asks where they are, To verify navigation was successful. Returns the current page path and title.
Get all interactive elements (buttons, links, inputs, dropdowns, etc.) on the current page. Call this to discover what buttons and actions are available on the page the user is currently viewing. This is essential for navigation - look for sidebar links to navigate between pages.
Empty input schemas for discovery tools (get_page_elements, get_current_page). No parameters defined, limiting LLM's ability to understand what inputs are accepted or required.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., element IDs, page paths) without knowing response structure.
Descriptions lack 'when to use' context and prerequisites. E.g., get_page_elements says 'Call this to discover' but doesn't explain when discovery is needed vs. direct action.
click_ui_element parameter 'element_name' lacks enum constraints or format guidance. LLM may hallucinate element names not present on the page, causing failures.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 47 | <=2025-11-25 | v2 |
No error handling or recovery guidance. If click_ui_element fails (element not found), LLM has no guidance on next steps (e.g., 'call get_page_elements first').