A defensive security research platform for threat detection, MITRE ATT&CK/D3FEND mapping, telemetry acquisition, and agent registry analysis
22 tools with significant quality gaps. Most tools have basic descriptions (10-50 chars) but lack depth on WHEN to use them or prerequisites. Input schemas present but sparse: many parameters lack type definitions (e.g., 'iterable', 'sequence', 'object' are not JSON Schema types). No output schemas documented. Duplicate tool names (dedupe, sha256_text, write_snapshot appear 2-3 times) signal composition issues. Error handling absent, no recovery guidance, no actionable error messages. Security concerns: path parameters exposed without validation hints. Naming is verb-forward but descriptions do not explain dependencies or side effects.
Compute SHA-256 digest of a local file
One row per package, keeping the earliest advisory identifier
Deduplicate certificate records by crtsh_id or dns_names tuple
Download and verify dataset if remote URL is available
Retrieve package.json manifest metadata directly from npm registry JSON API
Fetch packages matching query from npm registry search API
Fetch package metadata and release history from PyPI JSON API
Duplicate tool names (dedupe, sha256_text, write_snapshot appear 2-3 times). LLMs cannot disambiguate between tools with identical names. Violates single-responsibility principle.
Input schemas use non-JSON-Schema types ('iterable', 'sequence', 'object', 'date', 'path'). JSON Schema requires 'string', 'array', 'object', 'integer', 'boolean', 'number'. LLMs cannot validate or constrain inputs.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract required fields. Violates pattern:tool-chain.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 49 | 2026-07-28+ | v2 |
Fetch project names from PyPI PEP 691 simple API matching filter terms
Return confirmed-malicious package identities for one ecosystem
Load and parse the telemetry manifest
Load and iterate over malicious package records from a JSONL snapshot
Returns the provenance of the mapping for a technique_id
Normalize raw npm search object into the standard agent package record schema
Return raw crt.sh rows for a substring term
Compute SHA-256 hash of a text string
Compute SHA-256 hash of a text string
Normalize crt.sh rows into the shape the pipeline's CT collector reads
Verify an existing local dataset against its declared SHA-256
Confirm a stored snapshot still matches its recorded hash
Write malicious package records to JSONL and create hash-pinned lockfile
Write records to a JSONL file and write a hash-pinned lockfile
Write records to a JSONL file and write a hash-pinned lockfile
Descriptions are too brief (10-50 chars) and lack WHEN/WHY context. E.g., 'Normalize crt.sh rows into the shape the pipeline's CT collector reads' does not explain when to call it or what prerequisites exist. Baseline: 194 chars average.
No error handling or recovery guidance. Tools like download_dataset and fetch_npm_search have no documented error cases, timeouts, or retry strategies. Agents cannot self-correct on failure.