Local-only macOS prompt-injection monitor and optional blocker for AI coding agents
Single tool 'bouclier_status' has critical definition gaps. Tool name lacks action verb (should be 'get_bouclier_status'). No parameter descriptions exist (none needed given empty schema, but naming convention violated). Output schema undocumented, LLM cannot infer what fields to expect from the response. No error handling guidance. Tool appears to be read-only status check, but this is not explicitly declared in description or via toolAnnotations.
Returns the current status of Bouclier protection and detection engine state
Tool name 'bouclier_status' does not start with action verb. Should be 'get_bouclier_status' to signal intent and match LLM parsing conventions (90% of A+ tools start with verb).
Output schema is not documented. LLM cannot infer what fields the response contains (e.g., status, engine_state, timestamp, error). This forces the LLM to guess or fail on downstream reasoning.
No error handling guidance. Description does not explain what happens on failure, whether the call is retryable, or what the LLM should do if the protection engine is unavailable.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 40 | 2026-07-28+ | v2 |
Tool is read-only but this is not declared via toolAnnotations (readOnlyHint). LLM cannot distinguish this from a stateful operation without explicit annotation.