Sniff and decode BLE GATT traffic, fingerprint device profiles, and assert on insecure pairing/characteristics in CI against a capture.
Single tool 'blescope_scan' has a reasonable description (127 chars, within 10-1024 range) but critical gaps in schema completeness and parameter documentation. Input schema visible but lacks parameter descriptions, the 'target' parameter has no guidance on format, constraints, or examples. No output schema documented. Tool name uses verb_noun pattern correctly. No error handling guidance, no pagination support, no field-level documentation. Naming is clear but parameter documentation is absent, violating baseline that 100% of A+ tools have param descriptions.
Sniff and decode BLE GATT traffic, fingerprint device profiles, and assert on insecure pairing/characteristics in CI against a capture.. Returns JSON findings.
Parameter 'target' lacks description. LLMs cannot infer whether to pass a file path, stdin marker, or capture data. Should document: 'Path to BLE GATT capture file (JSON) or '-' to read from stdin. File must contain valid GATT/SMP packet data.'
No output schema documented. Tool returns 'JSON findings' but LLMs need to know the structure: field names, types, and what each field means. Document: {findings: [{id, severity, title}], insecure: boolean}.
No error handling guidance. Tool description does not explain what happens on invalid input (malformed JSON, missing file, unsupported format). Should state: 'Returns error with details if capture is invalid or file not found. Suggest user validate JSON structure.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Tool description lacks WHEN/WHY context. Current text is purely functional ('Sniff and decode...') but does not explain when an LLM should call this vs other tools, or what prerequisites exist (e.g., 'Use this to audit BLE device security posture from a packet capture. Requires a valid GATT/SMP capture file.').
No input validation constraints documented. Parameter 'target' should specify: file size limits, supported formats (JSON only?), character encoding, and whether relative/absolute paths are accepted. Prevents LLM from passing invalid values.