Observation-first Linux host monitoring toolkit for AI agents, built with Cloudflare Workers, D1, MCP, and TypeScript.
Snuffles has 10 tools with basic descriptions and input schemas, but significant gaps limit production readiness. Tool names lack consistent verb-noun structure (e.g., 'snuffles.discover' vs 'snuffles.observe' vs 'snowball.contain'). Descriptions are present but brief (avg ~80 chars), lacking WHEN/WHY context and recovery guidance. Input schemas exist but are minimal, most parameters lack type constraints, enums, or validation rules. Output schemas are not documented in the source. Error handling is not visible. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Parameter descriptions are sparse; e.g., 'severity' in snuffles.observe has no enum or valid values listed.
Queue a containment action for a signal with optional TTL and approval requirement
Get a containment recommendation for a signal based on severity and score
Disable Snowball containment mode for the workspace
Enable Snowball containment mode for the workspace
Discover resources and host snapshot metadata for a given monitoring goal
Explain a specific signal by ID, returning the signal and its evidence
Output schemas not documented. No visible response structure for any tool. LLMs cannot plan downstream calls or extract required fields (e.g., what does snuffles.discover return? Is there a resource_id for chaining?).
Parameter descriptions lack constraints and enums. 'severity' in snuffles.observe has no valid values listed. 'provider' in snuffles.test_integration says 'cloudflare, telegram, or slack' in description but no enum constraint. LLMs will hallucinate invalid values.
No tool annotations despite clear risk levels. snuffles.test_integration and snowball.contain are WRITE/REVERSIBLE but lack destructiveHint or idempotentHint. Agents cannot distinguish safe from risky calls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 62 | 2026-07-28+ | v2 |
Observe signals, integrations, and actions filtered by optional severity level
Plan a build workflow with steps and resources for a given goal
Create a snapshot artifact and optionally deliver it via Telegram
Test an integration (cloudflare, telegram, or slack) and update its status
Inconsistent tool naming. Mix of 'snuffles.*' and 'snowball.*' namespaces without clear semantic distinction. Names like 'wake' and 'sleep' are vague, 'enable_containment_mode' and 'disable_containment_mode' would be clearer.
No error handling guidance visible. No recovery hints, retryability classification, or actionable error messages. If snuffles.test_integration fails, the agent has no guidance on what to do next.