An MCP server that pushes phone notifications via ntfy.
Two tools with complete input schemas and reasonable descriptions. send_notification has good parameter coverage with defaults and type info; send_job_alert is a thin wrapper with minimal parameters. Both tools document their return format (status string). However, descriptions lack LLM-optimized structure (no WHEN/WHY guidance), parameter descriptions are generic, and no output schema is formally documented. Error handling is present but not recovery-focused. No tool annotations (readOnlyHint/destructiveHint/idempotentHint) despite both being WRITE operations.
Send a job-search inbox-sweep summary with sensible defaults. Thin wrapper around send_notification: title "Job sweep", high priority, a briefcase tag. Intended for the daily job-inbox-sweep task. Args: summary: The summary text to push to your phone. Returns: A status string starting with "OK:" on success or "FAILED:" on error.
Send a push notification to the configured ntfy topic (your phone). Args: message: The notification body text. title: Optional bold title shown above the message. priority: One of min, low, default, high, urgent (or "1".."5"). Anything unrecognized falls back to "default". tags: Comma-separated emoji shortcodes, e.g. "tada,computer". click_url: Optional URL opened when the notification is tapped. Returns: A status string starting with "OK:" on success or "FAILED:" on error.
No tool annotations despite WRITE operations. Both tools modify external state (send notifications) but lack destructiveHint or idempotentHint annotations. LLMs cannot determine if retrying is safe.
Output schema not formally documented. Both tools return a status string ('OK:...' or 'FAILED:...') but no structured schema is declared. LLMs must parse free-text responses, increasing error likelihood.
Error messages lack recovery guidance. 'FAILED: ntfy returned 401' tells the LLM nothing about next steps. Should suggest 'Check NTFY_TOKEN or NTFY_TOPIC environment variables.'
Parameter descriptions are generic and lack constraints. 'priority: One of min, low, default, high, urgent' uses prose instead of enum constraint. 'tags: Comma-separated emoji shortcodes' lacks format specification.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Tool descriptions lack WHEN/WHY context. 'Send a push notification' is functional but does not explain when to use send_notification vs send_job_alert, or what prerequisites exist (NTFY_TOPIC must be set).