Personal AI Assistant with Gemini & MCP - integrates Google Gemini API with MCP tools for file management, web search, SQLite database operations, and utility functions
Cleo AI has 11 tools with basic schemas and minimal descriptions. Most tool descriptions are under 50 characters (well below the 194-char baseline for A+ tools). Parameter descriptions are sparse or missing entirely. No output schemas documented. Error handling is absent, tools return plain text with no recovery guidance. No tool annotations (readOnlyHint, destructiveHint). The server exposes destructive operations (delete_file, db_execute) without confirmation patterns or permission gates. SQL injection risk in db_query/db_execute is unmitigated. File operations lack path traversal protection. Overall, this is a functional but immature implementation typical of early-stage personal assistants, not production-grade agent tooling.
Run INSERT, UPDATE or DELETE on the database
Run a SELECT query on the database
Show the database table structure
Delete a file
Fetch text content from a public web page
Get current date and time
Get real-time weather for a city
No output schemas documented. LLMs cannot predict response structure, forcing them to parse unstructured text and plan downstream calls blindly.
SQL injection vulnerability in db_query and db_execute. Parameters are passed to sqlite3.execute() without validation. Malicious LLM input or prompt injection could corrupt the database.
Destructive operations (delete_file, db_execute) lack confirmation or dry-run patterns. An agent mistake irreversibly deletes files or database records with no recovery path.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 39 | 2026-07-28+ | v2 |
List files in the assistant folder
Read the content of a text file
Search the web using DuckDuckGo
Write or create a text file
Parameter descriptions are missing or trivial (under 20 chars). E.g., 'filename' has no description; 'query' in db_query lacks format guidance. LLMs cannot infer constraints or expected formats.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Agents cannot distinguish safe reads from destructive writes without parsing descriptions.