Collection of MCP servers for file management, LED control, shell execution, and document search integrated with a natural-language OS powered by LLM agents
Qubito has 19 tools with basic schemas and descriptions, but significant gaps limit production readiness. Most tools have descriptions (10 - 200 chars, within baseline), but many lack parameter-level detail. Input schemas are present but sparse: most parameters have only type and description, missing constraints like enums, ranges, or format specs. Error handling is minimal, no recovery guidance, no categorization of retryable vs fatal errors. Destructive tools (delete_file, run_command) lack confirmation patterns. No tool annotations (readOnlyHint, destructiveHint). Composition is reasonable (file ops, LED control, shell, utilities are separate), but some tools combine concerns (reminder with add/list/clear via action enum rather than separate tools). Output schemas are undocumented, LLMs cannot predict response structure for chaining.
Read from or write to the system clipboard.
Create a new file with the given content. Use this when the user asks to create or write a new file. Parent directories are created automatically if they don't exist.
Delete a file. Use this when the user explicitly asks to remove a file.
Search indexed documents for information relevant to a query. Use when the user asks about content from uploaded or indexed files.
Edit a file by replacing a text fragment. Use this to modify an existing file. Provide the exact text to find and the replacement text.
Get the current date and time.
Destructive tools (delete_file, run_command) lack confirmation or dry-run patterns. No error guidance for recovery. Agents can delete files or execute arbitrary commands without safeguards.
No output schemas documented. LLMs cannot predict response structure (e.g., does document_search return array or object? What fields?). Breaks tool chaining and forces LLMs to guess.
Parameter constraints missing. set_led_color accepts r/g/b 0-255 but no min/max in schema. set_brightness accepts 0-100 but undocumented. Enums not used for set_room_mood moods (cinema, romantic, etc.), free-form string invites hallucination.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | <=2025-11-25 | v2 |
Pretty-print or minify a JSON string.
List files and directories at the given path. Use this to explore and navigate the filesystem.
Evaluate a Python expression (math, string ops, list comprehensions). No imports or side effects allowed. Use for calculations.
Read the contents of a file. Use this to view what's inside a file the user mentions.
Manage reminders: add, list, or clear them.
Reset the Bluetooth connection to the LED strip and verify it recovers. Use this ONLY after other LED tools have failed multiple times in a row. It power-cycles the Bluetooth adapter and re-scans for the device, then waits a few seconds and checks the health endpoint.
Execute a shell command and return its output. Runs the command via bash with the given working directory. Internet access is available. Output is truncated to 50000 chars.
Set the LED strip brightness without changing the current color or effect. Use this when the user asks to dim or brighten the lights, lower or raise the brightness, or make the lights softer/stronger.
Set the LED strip to a specific RGB color. Use this for custom colors that don't match a predefined mood. IMPORTANT: This LED strip renders red weaker than expected. Boost the red channel significantly to compensate. For example, orange should be around (255, 80, 0) not (255, 165, 0), and warm white needs R=255.
Set the room lighting to a predefined mood. Use this to match the room ambiance to the conversation vibe. Available moods: cinema, romantic, relax, party, boca_juniors, reading, night, energetic, music. - cinema: dim warm light for watching movies - romantic: soft warm red ambient light - relax: calm soft blue-white light - party: colorful cycling party effect - boca_juniors: Dale Boca! Blue and gold celebration (effect 52) - reading: bright neutral white for reading - night: very dim warm nightlight - energetic: bright cool white to boost energy - music: audio-reactive mode, LEDs dance to whatever is playing
Stop the audio-reactive LED mode. Use this when the user wants to stop the lights from reacting to music without turning them off. The lights will stay on at their last state.
Get basic system information (OS, hostname, Python version).
Turn off the LED strip completely (also stops audio mode if active).
reminder tool combines add/list/clear via action enum. Should be three separate tools (add_reminder, list_reminders, clear_reminders) for single responsibility and clearer LLM intent.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes without explicit hints. Increases risk of unintended side effects.