Skip to main content
Tool poisoning and prompt injection framework. Serves adversarial MCP tools, runs automated campaigns against AI models, and reports on injection effectiveness.

inject

inject list-payloads

List available injection payload templates.
qai inject list-payloads [OPTIONS]
OptionRequiredDescription
--techniqueNoFilter by technique: description_poisoning, output_injection, cross_tool_escalation
--targetNoFilter by target agent: claude, gpt, copilot, etc.
qai inject list-payloads
qai inject list-payloads --technique description_poisoning

inject serve

Start a malicious MCP server serving configurable payloads. The server presents MCP tools with poisoned descriptions and/or returns injection payloads in tool responses. Connect any MCP client to test how it handles adversarial tool content.
qai inject serve [OPTIONS]
OptionRequiredDescription
--transportYesTransport: stdio or streamable-http
--portNoPort for streamable-http listener (default: 8888)
--payload-dirNoDirectory of custom payload templates to serve
--configNoPayload configuration YAML file
qai inject serve --transport stdio
Serve only custom payloads from a directory:
qai inject serve \
  --transport stdio \
  --payload-dir ./my-payloads

inject campaign

Run an injection campaign against an AI model. Systematically tests poisoned tool payloads against the target model via the Anthropic API, scoring each for effectiveness.
qai inject campaign [OPTIONS]
OptionRequiredDescription
--modelYes*Anthropic model ID (e.g., claude-sonnet-4-6). Falls back to QAI_MODEL env var.
--roundsNoNumber of attempts per payload (default: 1)
--outputNoOutput directory for campaign JSON (default: .)
--payloadsNoComma-separated payload names, or all (default: all)
--techniqueNoFilter by technique: description_poisoning, output_injection, cross_tool_escalation
--targetNoFilter by target agent (e.g., claude, gpt)
Requires ANTHROPIC_API_KEY environment variable to be set.--model is required unless QAI_MODEL environment variable is set.
qai inject campaign \
  --model claude-sonnet-4-6 \
  --rounds 3 \
  --output results/ \
  --technique description_poisoning

inject report

Render a summary report from campaign results. Loads a campaign JSON file and displays a Rich table summary.
qai inject report [OPTIONS]
OptionRequiredDescription
--input / -iYesPath to campaign JSON file
--format / -fNoOutput format: table or json (default: table)
qai inject report -i results/campaign-20260303T120000.json
qai inject report -i results/campaign-20260303T120000.json -f json