Execute SQLite database commands with semantic similarity search and automatic vector embedding generation
The server exposes a single monolithic 'sqlite' tool that attempts to cover SQL execution, vector embeddings, bulk operations, and administrative functions in one interface. While the tool has a lengthy README with detailed documentation, the JSON Schema exposed in the MCP protocol is incomplete and the tool conflates multiple concerns into a single responsibility. The naming is generic ('sqlite') rather than action-oriented. The description adequately explains the tool's purpose but lacks specificity about when to use it vs alternatives. Parameter descriptions exist in the schema but many lack clear guidance on constraints, ranges, and valid values. The tool lacks error handling patterns, recovery guidance, and permission gates.
Execute SQLite database commands. Includes semantic similarity search and automatic vector embedding generation. - Use this when you need to execute SQLite commands or work on tasks that need database and/or semantic searches
Naming violates verb_noun convention. 'sqlite' is a product name, not an action verb. Should be 'execute_sql', 'query_database', or similar to signal intent to LLMs.
Single tool conflates multiple responsibilities: SQL execution, vector embeddings, bulk inserts, administrative operations, and authentication token validation. This violates the single-responsibility principle and forces LLMs to reason about which sub-operation to invoke within a single tool.
tool_unlock_token parameter is a credential exposed as a tool input parameter. Per pattern:secret-injection, tokens must never be parameters, they should be server-side injected via environment or vault. Agents log all parameters, and this token will leak into traces.
No error handling guidance. Tool description and schema lack recovery instructions. If a query fails, LLM receives no guidance on whether to retry, adjust the query, or escalate.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 39 | <=2025-11-25 | v2 |
No permission gates or audit trail declarations. A tool that can execute arbitrary SQL and modify any database file lacks scope declarations (e.g., 'read:database', 'write:database') and does not declare what logging/auditing is performed.
Output schema is not documented. Tool description mentions returning 'JSON format' but does not specify which fields are returned, their types, or how pagination works. LLMs cannot plan downstream operations without knowing output structure.
Parameter 'operation' is documented as 'Operation type: "readme" for documentation, or omit for SQL execution', vague and incomplete. Does not enumerate all valid operation types or explain when to use each. Invites LLM confusion.
Parameter 'sql' accepts both 'string|array' but lacks clarity on transaction semantics. When is an array treated as a transaction? Are failures in one statement rolled back? Documentation is vague.
Parameter 'database' path expansion supports seven different prefixes (@appdata, @user_data, etc.) but this feature is buried in a lengthy README, not in the parameter description itself. LLMs are unlikely to discover or correctly use these prefixes.
Parameters 'timeout_seconds' and 'max_rows' have defaults documented in the README but not explicitly declared in the JSON Schema as properties with default values. Schema documentation is incomplete.