egui-mcp defines 15 tools with complete JSON schemas derived via schemars. Naming is consistent (egui_* prefix) and action-oriented. Descriptions are present and detailed for most tools, ranging 50 - 300+ chars. However, several tools use empty schemas (egui_kill, egui_disconnect, egui_status, egui_snapshot) which accept any input and provide no parameter guidance. Output schemas are not documented, LLMs cannot predict return structure. Error handling exists but lacks recovery guidance. Tool composition is sound (single responsibility), but descriptions could be more concise and LLM-optimized per the 10 - 1024 char baseline.
Click element by ref (e.g., 'n3').
Connect to egui app bridge. Must be called before other tools.
Disconnect from the egui app.
Drag the pointer from (x1, y1) to (x2, y2) in screen-space pixels. Use for text selection in selectable_label widgets, or any continuous-drag interaction. Coordinates are absolute (find them via egui_snapshot rects).
Set value directly on element (for sliders, spinboxes).
Focus element by ref.
Get current value of element.
Four tools (egui_kill, egui_disconnect, egui_status, egui_snapshot) use empty schemas that accept any input. No parameter guidance for LLMs. Violates pattern:constrained-input and pattern:tool-description.
No output schemas documented for any tool. LLMs cannot predict return structure, field names, or types. Violates pattern:tool and pattern:response-shaper.
Error handling present but lacks recovery guidance. Errors do not tell LLM what to do next (e.g., 'Try egui_connect first'). Violates pattern:recovery-guide.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | <=2025-11-25 | v2 |
Hover over element by ref.
Send a keyboard event with optional modifiers (global — not targeted at a widget). Examples: {key: "F", modifiers: ["ctrl"]} for Ctrl+F, {key: "Escape"} for Esc, {key: "F5"} for F5. Supported keys: A-Z, 0-9, F1-F35, Enter, Escape, Tab, Space, Backspace, Delete, Home, End, PageUp, PageDown, Insert, ArrowLeft/Right/Up/Down, and common symbols. Modifiers (case-insensitive): ctrl, shift, alt, command. Default sends press+release; set press_only=true to hold the key.
Kill the launched egui application.
Launch an egui application with optional environment variables. Auto-detects X11 mode when DISPLAY is set (for virtual displays like Xvfb). Waits for MCP bridge, then auto-connects. NOTE: Performs pre-flight checks to verify (1) binary was compiled with MCP support (--features mcp), and (2) Xvfb is running on :99.
Scroll at a position. Use to test scroll isolation between panels.
Get accessibility tree snapshot. Returns elements with refs like [ref=n3].
Check if connected to an egui app.
Type text into input element. Focuses the element first.
Tool descriptions exceed 1024 char baseline for egui_launch and egui_key. Verbose descriptions waste tokens and bury key details. Violates pattern:tool-description length guidance.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) declared. Risk classification is implicit in description text only. Violates current spec alignment for tool metadata.