Local-first engine for scheduled, LLM-generated email digests that read your own data and never leave your machine. Exposes tools to list jobs, run jobs, preview jobs, and list plugins via the Model Context Protocol over stdio.
Four tools with clear verb-noun naming (list_*, run_*, preview_*). All have descriptions (avg 180 chars, within 10-1024 baseline). Input schemas present with type definitions and parameter descriptions. However, output schemas are undocumented, LLMs cannot plan downstream calls or extract structured data. Error handling lacks recovery guidance. Missing tool annotations (destructiveHint on run_job is critical). Descriptions are functional but lack dependency hints and prerequisite clarity.
List every configured job; takes no arguments and returns one object per job with id, schedule, sources, delivery, render, model and status.
List the registered plugin names grouped by kind, optionally narrowed to one kind out of source, model, gate, delivery, render or post.
Render what the job named by job_id would email, optionally overriding its model (pass model="echo" for an offline preview), and return subject, path, chars, truncated, body and would_deliver_to; this path writes to a local file and can never send.
Run the job named by job_id through the real pipeline and return its run receipt; dry_run defaults to true and stops before delivery, while dry_run=false SENDS REAL EMAIL from the configured inbox.
Output schemas undocumented. LLMs cannot infer what fields list_jobs, run_job, preview_job, and list_plugins return. This blocks downstream tool chaining and forces agents to guess at response structure.
run_job lacks destructiveHint annotation. The tool sends real email when dry_run=false, but MCP clients cannot detect this is irreversible without reading the description. Tool annotations are required for safe agent planning.
Error handling provides no recovery guidance. If run_job fails (invalid job_id, delivery error), the response does not suggest next steps (e.g., 'Call list_jobs to see available jobs'). Agents cannot self-correct.
preview_job description mentions 'path writes to a local file' but does not explain what the path field contains or how agents should use it. Ambiguous output field documentation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 63 | 2026-07-28+ | v2 |
list_plugins 'kind' parameter description lists valid values inline ('source, model, gate, delivery, render, post') instead of as an enum constraint. LLMs may hallucinate invalid kinds.