Secure Personal AI Research Kit - Multi-provider LLM web interface with MCP tool integration
Spark provides 8 tools with complete JSON schemas and descriptions. Naming follows verb_noun conventions (get_, store_, query_, list_, delete_, create_, validate_). Descriptions are present and contextual (avg ~120 chars), meeting baseline minimums. However, several tools lack parameter-level descriptions, and output schemas are not documented. Error handling guidance is absent. The memory tools (store_memory, query_memory, list_memories, delete_memory) form a coherent subsystem but lack composition guidance. create_autonomous_action is complex with 8 parameters but minimal guidance on interdependencies (e.g., schedule_type/schedule_value coupling). Overall: solid foundation, but gaps in parameter clarity and error recovery patterns prevent higher scores.
Create the autonomous action. Only call after the user confirms the summary.
Delete a specific memory by its ID.
Get the current date and time, optionally in a specific timezone.
List all tools available for autonomous actions (builtin + MCP).
List all stored memories, optionally filtered by category.
Search persistent memories for relevant information. Use this to recall facts, preferences, or context from previous conversations.
Store information to persistent memory for future conversations. Use this to remember facts, preferences, or instructions the user shares.
Output schemas not documented. Tools return results but LLMs cannot plan downstream calls without knowing response structure (e.g., what fields does list_memories return? Is there pagination?). Violates pattern:tool and mxe:response-field-naming.
create_autonomous_action has 8 parameters with minimal interdependency documentation. schedule_type and schedule_value are coupled (one-off vs recurring formats differ), but this constraint is not stated in parameter descriptions. Violates pattern:constrained-input and review:param-relationships.
No error handling guidance. Tools lack recovery hints (e.g., if delete_memory fails with 'memory_id not found', what should the LLM do? Call list_memories first?). Violates pattern:recovery-guide.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
Validate a schedule expression (one-off datetime or cron).
Memory tools (store_memory, query_memory, list_memories, delete_memory) lack composition guidance. No documentation of typical workflows (e.g., 'query_memory before store_memory to avoid duplicates'). Violates pattern:tool-chain.
list_available_tools has empty input schema (no properties). Description does not explain what it returns or when to call it. Violates pattern:tool-description.