Single tool with reasonable structure but notable gaps. Tool name 'send_notification' is action-verb clear and appropriate for the Gotify domain. Input schema is present with proper types (string, integer) and all four parameters have descriptions. However, descriptions are minimal (10-30 chars each), and output is unstructured plain text rather than a typed schema. No error handling guidance for LLM recovery. The tool performs a write operation (sends notification) but lacks any confirmation pattern or dry-run capability. Missing tool annotations (destructiveHint) that would help agents understand side effects.
Send a notification to Gotify
Parameter descriptions are too brief (10-30 chars). 'Priority level of the notification' and 'Content type of the message' lack guidance on valid ranges or formats. Priority defaults to 5 with no explanation of what 1-10 scale means or when to use low vs high values.
No output schema documented. Tool returns plain string 'Notification sent: ' + resp.text rather than a structured object with success status, notification ID, timestamp, or metadata. LLM cannot plan downstream actions or extract relevant data.
Error handling lacks actionable guidance. Returns generic 'Error: {exception}' or 'GOTIFY_TOKEN not set' without recovery steps. LLM cannot distinguish transient failures (retry) from configuration problems (contact admin) from invalid input (reformat).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 54 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 50 | - | v1 |
No constraint validation on priority parameter. Description says 'Priority level' but does not specify if range is 0-10, 1-5, 1-100, or custom. No enum or min/max. LLM may pass arbitrary integers.
No tool annotation for destructive intent. send_notification modifies state (sends a notification) but lacks a destructiveHint annotation. LLMs cannot determine if this is a safe read or an irreversible write that should be confirmed.
Credentials (GOTIFY_TOKEN, GOTIFY_URL) are validated at server startup in config.py but not validated at tool invocation. If token becomes invalid during runtime, error message is unhelpful. No guidance for expired/revoked token recovery.