A Tauri-based desktop application with an embedded Node.js MCP server for AI-powered goal planning and execution with sub-agent delegation, PPTX generation, and tool guardrails.
S-Loop PI Server has 6 tools with mixed quality. Three tools (plan_goal, execute_step, check_progress) have complete JSON schemas with typed parameters and reasonable descriptions (50-150 chars). However, parameter descriptions are entirely missing, the schema shows property names but no 'description' fields explaining what each parameter controls. The three PPTX tools (create_pptx, inspect_pptx, renderPptxHtml) have minimal descriptions (20-40 chars) and lack parameter-level documentation. No output schemas are documented. Error handling is present but generic ('isError: true' with text responses). Tool naming follows verb_noun convention (good), but composition issues exist: plan_goal, execute_step, and check_progress form a tightly coupled state machine rather than independent tools, limiting agent flexibility. No tool annotations (readOnlyHint, destructiveHint) despite clear risk levels (WRITE vs READ_ONLY).
Record the required assessment for the most recently executed plan step before continuing.
Generate a PowerPoint presentation by executing an agent-authored pptxgenjs script in a sandboxed child Node.js process.
Execute the next pending plan step through its assigned sub-agent. Steps must run in order and be checked before continuing.
Validate and inspect a PowerPoint file using the OfficeCLI binary for machine validation.
Create the required ordered execution plan. This must be the first state-changing goal action.
Render a PowerPoint presentation to high-fidelity HTML using the OfficeCLI binary.
Parameter descriptions entirely missing. Schema defines properties (steps, reasoning, step_index, script, outputPath, path) but no 'description' field for any parameter. LLMs cannot infer what 'script' means or what format 'outputPath' expects without explicit text.
No output schemas documented. Tools return {content: [...], isError, details} but LLMs have no schema to understand what 'details' contains or how to extract structured data for downstream calls.
Tool annotations missing. plan_goal, execute_step, check_progress, create_pptx are marked WRITE risk but lack destructiveHint/idempotentHint annotations. inspect_pptx and renderPptxHtml are READ_ONLY but lack readOnlyHint.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Tight coupling of plan_goal → execute_step → check_progress creates a state machine. These three tools are interdependent (plan_goal must run first, execute_step requires a plan, check_progress requires a step_index). This violates single-responsibility and forces rigid orchestration.
PPTX tool descriptions are too brief (20-40 chars). 'Generate a PowerPoint presentation by executing an agent-authored pptxgenjs script in a sandboxed child Node.js process' is good, but 'Validate and inspect a PowerPoint file using the OfficeCLI binary for machine validation' lacks context on when to use it vs renderPptxHtml.