AI analysis
Five tools compose a deterministic database result with an AI-derived analysis section.
ai: false, or
errors outright, you still get the data plus analysisSkipped explaining why
nothing was added. Every one of these tools is useful with the AI layer switched
off.Requires Pro or above. Pass ai: false on any of them to skip it.
vulnetix_triage_reason
Fetches the decision inputs, then produces a prioritisation rationale.
| Argument | Type |
|---|---|
identifier | string, required |
context | string, optional |
ai | boolean, optional |
context is where you say what the model cannot know:
{
"identifier": "CVE-2021-44228",
"context": "internal service, no untrusted input, behind a WAF, Java 8"
}
Returns a priority band (P1–P4), the rationale, the factors that dominated, and what would change the answer. That last one is what makes it defensible to someone else.
vulnetix_secure_code_write
CWE guidance for an advisory, plus language-specific guidance on not writing the same weakness.
| Argument | Type |
|---|---|
identifier | string, required |
cweId | string, optional |
language | string, optional |
ai | boolean, optional |
Returns a summary, one clearly-unsafe example, a safe replacement, and the review checks that would catch the unsafe form.
Naming a cweId returns that entry’s guidance in full and its ATT&CK mappings;
the rest come back as a short index. An aggregated CVE maps to dozens of
weaknesses (36 for Log4Shell), so returning all of them in full would not fit.
vulnetix_detection_rules
Deployable content: Snort/Suricata signatures, YARA rules and Nuclei templates.
| Argument | Type | Default |
|---|---|---|
identifier | string, required | none |
families | array of snort, yara, nuclei | all three |
stack | string, optional | none |
ai | boolean, optional | none |
With stack supplied, the analysis says which to deploy first, what each is
matching, where false positives are likely, and what the content does not
cover.
vulnetix_exploit_test
A copy-pasteable command to check whether a target is still vulnerable.
| Argument | Type |
|---|---|
identifier | string, required |
target | string, optional |
ai | boolean, optional |
Returns the command, how to read its output, prerequisites, and a destructive
boolean.
vulnetix_fix_plan
A concrete upgrade plan from a package coordinate.
| Argument | Type |
|---|---|
packageName | string, required |
ecosystem | enum, required |
currentVersion | string, optional |
targetVersion | string, optional |
ai | boolean, optional |
Returns the recommended version, the exact manifest edit, the install command, a verification command, the rollback, whether it is a major bump, and the risks.
No file content is sent. The tool takes coordinates only: package name, ecosystem, versions. Your agent applies the edit locally.
How the AI layer is kept safe
CVE descriptions, advisory prose and cached proof-of-concept source are attacker-influenced by construction: anyone who can get text into an advisory can get text in front of the model. Since the output becomes a tool result your agent may act on, a successful injection would not be cosmetic.
Four rules, enforced in the server rather than left to each tool:
- Upstream content is data, never instructions. It is passed inside a delimited block, never concatenated into the prompt.
- The system prompt is fixed and states that the block is material to analyse, not instructions to follow.
- Output is schema-constrained JSON. The model cannot emit free-form prose that a caller might mistake for an instruction.
- Output never influences control flow. It does not choose an endpoint, set a parameter, or select a tool. It is decoration on a deterministic result, never a step in producing one.
AI-derived fields are labelled distinctly from database fact, and every augmented
result carries the model id and token counts in _meta["vulnetix/ai"].
On privacy: because no repository content reaches this server, what reaches the model is public advisory data plus the structured parameters you passed.