MCP server for DreamCleanr: clean while you sleep with safe macOS cleanup, MCP tools, and one-page receipts.
DreamCleanr defines 5 tools with complete input schemas and tool annotations (readOnlyHint present). All tools have descriptions (10 - 200 chars, within baseline 34 - 392 range). However, parameter descriptions are entirely absent, the schema shows enums and types but no explanation of what each parameter controls. Output schemas are undocumented; the code shows tool_scan returns a summary dict but the structure is not formally specified. Error handling is minimal; no recovery guidance or actionable error messages visible. Tool names are clear (scan, clean_preview, report_render, schedule_status, schedule_preview) but lack verb-noun consistency (scan vs. clean_preview vs. report_render). The report_render tool is marked READ_ONLY in annotations but performs a WRITE operation (html_out file output), creating a semantic mismatch.
Preview a cleanup plan and receipt without deleting anything.
Render an HTML cleanup receipt from the latest or specified DreamCleanr JSON report.
Capture a DreamCleanr machine snapshot without changing state.
Preview the launchd configuration DreamCleanr would install for nightly cleanup.
Inspect the DreamCleanr launch agent and current scheduled cleanup state.
Parameter descriptions entirely missing. Schema defines enums and types (mode, scope, hour, minute, retention_count) but provides no explanation of what each parameter controls or when to use each value. LLMs cannot infer intent from names alone.
Output schemas undocumented. tool_scan returns a summary dict with family, state, recommended_action, stale fields, but the full structure is not formally specified. LLMs cannot plan downstream calls or extract the right data without knowing what fields to expect.
report_render marked readOnlyHint=true but performs a WRITE operation (html_out parameter writes to file). Semantic mismatch between annotation and actual behavior. Agents cannot trust the readOnlyHint flag.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 51 | 2025-06-18+ | v2 |
No error handling or recovery guidance. Code does not show try-catch blocks, validation, or actionable error messages. If a tool fails, the LLM receives no guidance on what to do next (retry, ask user, or give up).
Inconsistent naming convention. Tools use scan, clean_preview, report_render, schedule_status, schedule_preview, mixing verb_noun (scan, clean_preview) with noun_verb (report_render, schedule_status). LLMs struggle to parse intent when naming is inconsistent.