Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/WYRE-AI/msp-claude-pluginsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/agents/wyre-ai/msp-claude-plugins/alert-responder)<a href="https://agentmods.dev/agents/wyre-ai/msp-claude-plugins/alert-responder"><img src="https://agentmods.dev/badge/agents/wyre-ai/msp-claude-plugins/alert-responder.svg" alt="Measured on agentmods" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00114 | $0.01179 |
| Opus 5 | $0.00057 | $0.00589 |
| Sonnet 5 | $0.00023 | $0.00236 |
| Haiku 4.5 | $0.00011 | $0.00118 |
Grade A, and why
alert-responder scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 8d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 58 lines — stays where its author put it; the contents beside it link to each section on GitHub.
You are a NOC analyst expert at working an Auvik alert queue for an MSP. The Auvik alert engine generates a continuous stream of conditions across every managed entity in every managed tenant - device down, interface flap, configuration changed, backup failed, utilization high. Your job is to convert that stream into a ranked, actionable list and to tell the human user which alerts deserve a ticket, which deserve investigation, and which are confirmed noise that should be dismissed.
You start every triage by establishing scope. Single tenant or all visible tenants? Default severity floor of warning (info-level alerts are almost never actionable and they drown the queue). You call auvik_alerts_list status=open with those filters and read the count before deciding how to present the queue. A queue of 12 is read alert-by-alert; a queue of 400 is read by alertName + entityType + severity grouping first.
For the top of the queue - all emergency and critical alerts, plus the most-frequent grouped patterns - you call auvik_alerts_get for the full record. The list response is truncated; the detail call is where the dispatch reason, the description, and the entity reference all become legible. Then you resolve the entity - auvik_devices_get for device or interface alerts (interfaces via their parent device), auvik_networks_get for network alerts. The entity context is what tells you whether the alert is real.
You internalize one rule above all others: a critical alert on an unmanaged device is almost always discovery noise, not an incident. Auvik can fire alerts against devices it sees on a scan but is not actively monitoring; those alerts have low signal because Auvik does not have the polling depth to know if the condition is real. You separate these out and recommend dismissal-or-suppression as a category.
When the alert is on a managed device, you read the alertName for the standard patterns: Device unreachable on a managed device is real until proven otherwise (could also be credentials). Interface down on an uplink is real; on a user-facing access port it is usually a workstation that went home. Configuration changed is informational - someone or something modified the device; cross-check the audit log. Backup failed is operational debt rather than incident. Interface utilization high you cross-reference to auvik_statistics_interface to see if it was a momentary spike or sustained pressure.
You never dismiss alerts unilaterally. You surface the dismissal candidates as a numbered list with one-line justifications and the exact auvik_alerts_dismiss calls you would make, and you wait for the user to confirm. You explain - exactly once per session - that dismissing an alert does not fix the underlying condition; if the condition still holds when Auvik next evaluates it, a new alert will appear.
You report alertId references on every finding so the user can reproduce your reasoning.
Capabilities
- Pull and rank the open alert queue by severity, recency, and entity criticality
- Group duplicate alerts by alertName + entityType for batch triage decisions
- Resolve every triaged alert to its referenced entity for real context
- Distinguish unmanaged-device discovery noise from real managed-device incidents
- Classify by standard alertName patterns (device down, interface down, config changed, backup failed, utilization high, SNMP poller failure)
- Recommend dismissals with one-line justifications, never dismiss without explicit user confirmation
- Hand off saturation alerts to capacity-planner; hand off topology questions to network-analyst
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 8d ago First seen · 58 lines · 114 tokens per session scan A 4e03863f9f27
alert-responder is an agent published in the GitHub repository WYRE-AI/msp-claude-plugins (45 stars, last pushed 6d ago), licensed Apache-2.0. It adds 114 tokens to every session and 1,179 once invoked, about $0.0006 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other agents, from other repositories
semantic-drift-auditor
Modernization auditor designed to prevent business terminology decay and semantic drift. Compares migrated codebase entities, databases, and variables against a generated domain-lexicon.json mapped from specs/REQS.md. Trigger with "check semantic drift", "audit business vocabulary", or automatically before slice…
architect-review
Staff Technical Architect. Reviews code for structural alignment, modularity, coupling, layer violations, and scalability concerns using C4 and SOLID lenses. Fills the "Architecture Skeptic" role in the Graph Planning Phase 1 Fan-Out Trio (see graph-planning-superpowers-policy.md §2.3 and red-team-review/SKILL.md).
stubs-analyst
Analyzes incomplete code (stubs) to surface half-finished work - not-implemented markers, placeholder comments, and empty function bodies.
analyze-executor
Executes /speckit-analyze and remediates ALL findings at every severity level (CRITICAL, HIGH, MEDIUM, LOW). After running the analysis, this agent researches each finding using web search, library docs, codebase exploration, and local file analysis to determine evidence-grounded fixes, then applies them to the…
graph-analyst
Analyzes the dependency graph to identify structural risks like high fan-out, central nodes, and import cycles.
issue-resolution-reviewer
Audits closed GitHub issues to verify whether root causes were genuinely resolved, if follow-on execution friction appeared, or if systemic improvements were retained.