A target adapter is the boundary between AgentGuardian and whatever you are scanning. Every adapter normalises its target to the same “send one prompt, get one text reply” interface and exposes a staticDocumentation Index
Fetch the complete documentation index at: https://docs.agentguardian.io/llms.txt
Use this file to discover all available pages before exploring further.
TargetFingerprint describing the surface area the swarm should attack.
Source-of-truth: src/agent_guardian/adapters/base.py.
The contract
Every adapter is a subclass ofTargetAdapter and must implement
exactly two things:
The fingerprint
TargetFingerprint is the static attack surface known at
adapter-construction time. The recon agent refines it during Phase 1 of
the swarm; the swarm’s tiering and applicability logic reads it via
TargetFingerprint.to_observed_surface().
| Field | What it captures | What it gates |
|---|---|---|
target_mode | prompt, python, http, framework, mcp | Which transport runs the call |
tools | Names of tools the target exposes | Tool Abuse (ASI02), Code Execution (ASI08) |
memory_present | True if the target keeps state across turns | Memory Poisoning (ASI06) |
multi_agent | True if the target hands off to other agents | Cascade Failure (ASI05), Trust Exploit (ASI10) |
external_systems | URLs / hosts the target can reach | Data Exfiltration, Identity Leak |
pii_surface | True if the target has access to PII | Identity Leak (ASI07) |
Bundled adapters
Five adapter families ship in the box. They cover the targets developers hit most often:| Adapter | Source | Use it when |
|---|---|---|
| Prompt | adapters/prompt.py | You only have a system prompt — no live target. The scan runs the prompt through a stub LLM and attacks the resulting agent shape. |
| Code | adapters/code.py | You have a Python callable / class — pass module:attr. The adapter introspects the source to refine the fingerprint. |
| HTTP | adapters/http.py | You have a hosted endpoint — pass --endpoint URL. Uses transports/http.py under the hood. |
| Framework | adapters/framework/{langgraph,crewai,autogen,openai_agents,adk,strands}.py | You have a native framework object — pair --framework KIND with --framework-ref MODULE:ATTR. |
| MCP | transports/mcp.py (driven through the contract adapter) | You have an MCP server — only adapter where Rules-of-Engagement tool blocklists are pre-execution gates. |
agent-guardian scan --help lists every flag combination, and the
Try AgentGuardian group walks through each target
type end-to-end.
Adding a new adapter
Three steps.- Subclass
TargetAdapterin a new module undersrc/agent_guardian/adapters/and implement__init__(build the fingerprint) andasync def call(prompt, *, session). - Register the entry point in
pyproject.tomlunder[project.entry-points."agent_guardian.adapters"]so the CLI can resolve your adapter by name. - Ship a
TargetFingerprintthat honestly describes the surface. Settingmemory_present=Falsewhen memory exists will skip ASI06 specialists and silently under-test the target.
Where to go next
- Adversarial swarm — how the fingerprint decides which specialists run.
- Evaluators — how each turn is judged.
- Try AgentGuardian — adapter-by-adapter walkthroughs.
- Reference: Python SDK — the public adapter surface for embedding AgentGuardian in your own code.