Offensive security platform for agentic AI infrastructure
Project description
{q-AI}
Unified offensive security platform for agentic AI infrastructure.
Seven research modules in one package: audit MCP servers, intercept agent traffic, test tool poisoning and prompt injection, execute multi-step attack chains, generate IPI payloads, poison coding assistant context files, and measure RAG retrieval rank. A local web UI orchestrates multi-module workflows. All findings write to a shared SQLite database.
Research program by Richard Spicer · {q-AI}
Install
pip install q-uestionable-ai
Or from source:
git clone https://github.com/q-uestionable-AI/qai.git
cd qai
uv sync --group dev
RXP requires optional dependencies:
pip install "q-uestionable-ai[rxp]"
Usage
# Start the web UI (opens browser)
qai
# Audit — scan an MCP server against the OWASP MCP Top 10
qai audit scan --transport stdio --command "npx @modelcontextprotocol/server-everything"
# Proxy — intercept MCP traffic
qai proxy start --transport stdio --target-command "python my_server.py"
# Inject — run a tool poisoning campaign against any LLM provider
qai inject campaign --model anthropic/claude-sonnet-4-20250514
qai inject campaign --model openai/gpt-4o
qai inject campaign --model ollama/llama3
# Chain — execute multi-step attack chains
qai chain list-templates
qai chain run --chain-file chain.yaml --dry-run
# IPI — generate indirect prompt injection payloads
qai ipi generate --callback-url http://localhost:8080 --format pdf --output ./payloads/
# CXP — build poisoned coding assistant context repos
qai cxp build --format cursorrules --output ./test-repos/
# RXP — measure RAG retrieval rank of adversarial documents
qai rxp validate --profile rag-security --model minilm-l6
Full documentation at docs.q-uestionable.ai.
Legal
All tools are intended for authorized security testing only. Only test systems you own, control, or have explicit permission to test. Responsible disclosure for all vulnerabilities discovered.
License
AI Disclosure
This project uses a human-led, AI-augmented workflow. See AI-STATEMENT.md.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file q_uestionable_ai-0.2.0.tar.gz.
File metadata
- Download URL: q_uestionable_ai-0.2.0.tar.gz
- Upload date:
- Size: 519.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f995cf4c1e1869b20e0810889db3d4dbdff475863600e42a31373da6c5207c8d
|
|
| MD5 |
60154e68f93488b0c80aa5d9b7f1105e
|
|
| BLAKE2b-256 |
35f4077858116c967963cfd64b214186b64246c3c5ca6331ae9e2ecfc066b5d6
|
Provenance
The following attestation bundles were made for q_uestionable_ai-0.2.0.tar.gz:
Publisher:
release.yml on q-uestionable-AI/qai
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
q_uestionable_ai-0.2.0.tar.gz -
Subject digest:
f995cf4c1e1869b20e0810889db3d4dbdff475863600e42a31373da6c5207c8d - Sigstore transparency entry: 1108637995
- Sigstore integration time:
-
Permalink:
q-uestionable-AI/qai@68a098888ae77a3cc0241e97d7eb4af0f25b7f00 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/q-uestionable-AI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@68a098888ae77a3cc0241e97d7eb4af0f25b7f00 -
Trigger Event:
push
-
Statement type:
File details
Details for the file q_uestionable_ai-0.2.0-py3-none-any.whl.
File metadata
- Download URL: q_uestionable_ai-0.2.0-py3-none-any.whl
- Upload date:
- Size: 420.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
837416be62ab6a34b82adb8276c48a0ae11c80a7953c0d82f6a0e2e1dbe24eb4
|
|
| MD5 |
ac5bc212732483c13b677d7be1f46d2a
|
|
| BLAKE2b-256 |
0f1ff11f3ed1c914daba5d65793bf676536910b7d147e552da6555cc1b013a7e
|
Provenance
The following attestation bundles were made for q_uestionable_ai-0.2.0-py3-none-any.whl:
Publisher:
release.yml on q-uestionable-AI/qai
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
q_uestionable_ai-0.2.0-py3-none-any.whl -
Subject digest:
837416be62ab6a34b82adb8276c48a0ae11c80a7953c0d82f6a0e2e1dbe24eb4 - Sigstore transparency entry: 1108638007
- Sigstore integration time:
-
Permalink:
q-uestionable-AI/qai@68a098888ae77a3cc0241e97d7eb4af0f25b7f00 -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/q-uestionable-AI
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@68a098888ae77a3cc0241e97d7eb4af0f25b7f00 -
Trigger Event:
push
-
Statement type: