- Reliability 11/20
- Static-only review; the sole evidence is the README. It claims CI runs type checking, unit tests and a build, and documents npm test / npm run build / npm run test:integration, implying test infrastructure exists, but no CI workflow file or test source is provided, so coverage of key paths (osascript invocation, query filters, batch ops, repeating-item safety) cannot be verified. Tool behavior is described in unusual detail for a README (12 tools; edit_item refuses a no-op call; unknown argument keys are rejected with the key named; past repeating occurrences are protected unless allowPastOccurrence is passed), which suggests deliberate error handling, but it remains self-reported. The runtime surface is large: macOS + OmniFocus + Node 20 + a one-time AppleEvents automation grant. The shared daemon is described as handling reconnects, initialize-handshake replay and a standalone fallback, but again only in prose. Under the static calibration rule, reliability must not exceed 12 without verifiable execution evidence, so 11.
- Security and permissions 12/20
- No red line is triggered: there is no evidence of malware, credential theft, covert exfiltration, or default irreversible delete/deploy actions. The data surface is the local OmniFocus database, driven via osascript/JXA/OmniJS, with no network port; the daemon uses a Unix domain socket inside a 0700 directory and relies on filesystem permissions rather than a token, which is defensible for a single-machine tool. However, the confirmation gap is real: remove_item, batch_remove_items and the bulk-editing path of edit_item are documented with no described confirmation, dry-run, or impact preview before destructive changes. The only refusal described concerns edits to past occurrences of repeating items, which protects the repeat chain, not user data loss in general. The macOS automation grant is broad and granted once. Credential handling is a non-issue (no credentials), and no tokens or secrets appear in the examples. Scored 12.
- Maintenance 13/20
- Not archived, 241 stars, 8 open issues, MIT license, CI badge and an issues link, indicating an active project with an issue channel. The README describes recent, specific behaviors around daemon version bumping, simultaneous old/new daemons, in-band upgrade notices, idle exit, and reconnect semantics, which suggests ongoing iteration. Against that: no visible release cadence, no versioning or dependency-update policy, no security-response channel, and no clearly stated ownership or governance. This matches the anchor for 'active but with governance/versioning gaps', hence 13.
- Documentation 16/20
- Documentation is the strongest dimension here. The README is layered: installation for Claude Desktop, Claude Code and generic stdio clients; parameter tables for all 12 tools; the full filter enumeration for query_omnifocus; the repeat object schema with an explicit warning about choosing method correctly; the resource URI catalog with template listing/autocompletion; daemon failure semantics; an environment-variable table with defaults; a Roadmap that discloses unsupported repeat cases (positional monthly rules, specific month days, COUNT/UNTIL); and commands for unit and integration testing. Limitations are disclosed and examples are checkable. Deductions: the fuller query reference and worked examples are external links (QUERY_TOOL_REFERENCE.md, QUERY_TOOL_EXAMPLES.md) whose content is not in this material; troubleshooting for the daemon amounts to a single hint (OMNIFOCUS_MCP_NO_DAEMON); no cost/resource-usage guidance; no auth section (there is no auth, which is correct locally but undocumented as such). Scored 16.
- Setup experience 14/20
- The install path is clear. Prerequisites are stated (macOS with OmniFocus, Node 20+), Claude Desktop gets a complete claude_desktop_config.json snippet, Claude Code gets a one-line `claude mcp add omnifocus -- npx -y omnifocus-mcp`, and other clients are told to launch `npx -y omnifocus-mcp` over stdio. A single one-time macOS automation prompt is the only interactive step. Deductions: hard platform lock to macOS with a mandatory local OmniFocus install and no alternative path; the npm package publishing is asserted only by a badge and cannot be verified statically; the shared daemon and socket path add environmental assumptions (writable HOME, non-restrictive sandbox) even though OMNIFOCUS_MCP_NO_DAEMON exists as a manual fallback, so troubleshooting stays manual. Capped at 15 by the static calibration rule; scored 14.