flipdot presents 9 well-named, verb-action tools with clear descriptions. Most parameters have type annotations and descriptions. However, output schemas are not explicitly documented in the source, several tools lack comprehensive parameter validation constraints, and error handling guidance is minimal. The server is well-structured for HTTP/FastMCP, with good naming conventions (get_*, set_*, list_*) and moderate parameter completeness.
Add a text object to the board at pixel position (x, y).
Erase everything on the board (drawing, text and images).
Return the current 28x28 frame as a PNG image plus ASCII art and the active mode. The image is an upscaled render (lit dots white on black); the JSON text block carries the same board as ASCII ('·' off, '█' lit) alongside the mode and dimensions. Vision-capable clients can read the image; text-only clients fall back to the ASCII. Call this after drawing to check the result and iterate.
Return the sleep (blank-screen) schedule.
Report the current mode, time in mode, and sleep schedule.
List the display modes an agent can switch between.
Output schemas not documented in source code. Tools return data (PNG images, ASCII art, mode lists, etc.) but the structure expected by callers is not formally specified in the MCP tool definitions.
Parameter constraints not enumerated. set_mode accepts 'mode' as a string with description 'The mode identifier to switch to', but no enum of valid mode values is exposed in the schema. KNOWN_MODES exists in code but is not surfaced to the LLM.
Missing parameter validation and error guidance. Tools like add_text accept x, y, font, size, style, spacing parameters but source code does not show validation of bounds (e.g., x/y in 0-28 range, font size limits, allowed font families) or what error message is returned for invalid input.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 69 | 2026-07-28+ | v2 |
Switch the display to a given mode (see list_modes for valid ids).
Set the sleep schedule. Hours are 0-23. Persists across restarts.
Show a short text message on the display. Clears the board, switches to board mode and adds the message as a text object. Set scroll=True for a horizontally scrolling marquee.
Tool descriptions lack actionable recovery hints. Error scenarios (e.g., 'mode not found', 'board not available', 'invalid coordinates') are not documented in tool descriptions, and no guidance on what to try next if a call fails.
No idempotency guidance. Stateful modification tools (set_mode, set_sleep_settings, show_message, clear_board, add_text) do not document whether repeated calls are safe or have side effects. Agents may not know if retry is safe.
add_text parameter descriptions lack format guidance. Parameters like 'font', 'style', 'spacing' have no enum or constraint documentation in source; it is unclear what values are valid (e.g., is 'classic' the only font? are 'bold', 'italic' valid styles?).