v1.5.0 — Tools that don't lie
Tools that don't lie
A quality sweep applying one rule to the whole MCP tool surface: never report a network as clean or complete when it isn't. Driven by a read-only audit of all 25 tools.
The headline fix — the false "0 findings". The findings loader conflated three states — "the graph is unreachable", "the query errored", and "the run genuinely has no findings" — into one indistinguishable result, so tools rendered "0 findings" for all three. A down graph read as a clean network. Now the loader raises a typed FindingsUnavailable (distinct from an empty result), and every consumer surfaces it honestly: primary findings tools return an error, dashboard APIs return 503 (not a false 404), and nothing presents a fabricated zero.
The rest of the sweep
- No "reads clean when not collected" — security posture, site summary, and device detail now account for uncollected devices instead of hiding them.
blast_radiusstops silently ignoringinterface/max_hops; its verdict and map highlight now carry the affected blast area and internet impact.- Captured-but-unread fields rendered — route active/inactive state, QoS policer-vs-shaper type, firewall schedule and logging flags.
- Honest status codes — empty or failed results return
no_data/error, not a misleadingok. - Two machine-readable verdicts where a real consumer exists — a findings severity summary and a security pass/warn/fail — with no speculative verdicts added elsewhere.
Backward-compatible; deterministic model snapshots unchanged. Verified end-to-end on a real production collection.