Payload templates are YAML-defined adversarial MCP tools used to test LLM agent resilience to tool-based attacks. Each payload defines a poisoned tool that an agent might encounter after a supply chain compromise or MCP server breach.Documentation Index
Fetch the complete documentation index at: https://docs.q-uestionable.ai/llms.txt
Use this file to discover all available pages before exploring further.
Template structure
Payloads are defined in YAML files. Each file contains a list of payload objects:Field reference
| Field | Required | Description |
|---|---|---|
name | Yes | Unique payload identifier used in filtering and reports |
technique | Yes | One of description_poisoning, output_injection, cross_tool_escalation |
description | Yes | Human-readable explanation of what the payload tests |
owasp_ids | No | OWASP MCP Top 10 category codes (e.g., MCP03, MCP06) |
target_agents | No | Agent types this targets; omit or leave empty for universal |
relevant_categories | No | Audit finding categories this payload is relevant to (e.g., tool_poisoning, prompt_injection). Used for findings-informed template selection in the assess workflow. Templates with empty relevant_categories are always included regardless of audit findings. |
test_query | No | User message sent to the model during a campaign run |
tool_name | Yes | MCP tool name registered on the server |
tool_description | Yes | The adversarial description text (the attack payload) |
tool_params | No | Parameter name to {type, description} mapping for the tool input schema |
tool_response | No | Response string with {param_name} placeholders for substitution |
Template Relevance Categories
Templates can declare which audit finding categories they’re relevant to via therelevant_categories field. When running inside the assess workflow, the inject adapter uses these to prioritize templates that match discovered vulnerabilities.
Categories currently used in built-in templates:
| Category | Used By |
|---|---|
tool_poisoning | Description poisoning and cross-tool escalation payloads |
prompt_injection | Output injection payloads and some description poisoning payloads |
permissions | Cross-tool escalation payloads |
relevant_categories (or an empty list) are always included — they run regardless of what audit found. This means custom payloads without categories still participate in every campaign.
See Findings-Informed Payload Selection for how this works in the assess workflow.
Techniques
description_poisoning
Embeds malicious instructions directly in tool descriptions. When an agent reads the tool’s description to decide how to use it, the hidden instructions manipulate the agent’s behavior.output_injection
Injects instructions into tool response text. After the agent calls a tool, the response contains directives that attempt to hijack the agent’s next action.cross_tool_escalation
Chains trust across multiple tools to escalate privileges. Exploits the assumption that tool outputs are trustworthy to pivot into unauthorized actions.Payload Catalog
Useqai inject list-payloads to view all available payloads. Payloads are organized into three technique categories:
Description Poisoning
Embeds malicious instructions directly in tool descriptions. When an agent reads a tool’s description to decide whether to use it, poisoned descriptions can redirect behavior, exfiltrate data, or override agent goals. Example payloads:- exfil_via_important_tag — Hidden exfiltration directives in XML-style tags within tool descriptions
- preference_manipulation — Instructions to prefer a poisoned tool over legitimate alternatives
- concealment_directive — Instructs the agent to hide tool usage from the user
- role_reassignment — Attempts to override the agent’s system role or operating mode
- hidden_unicode_instruction — Uses Unicode tricks to hide poisoning in plain sight
- long_description_buried — Embeds instructions deep in lengthy descriptions to evade detection
Output Injection
Injects instructions into tool responses. After the agent invokes a tool, the response contains directives that attempt to hijack the agent’s reasoning or trigger unintended actions. Example payloads:- output_instruction_injection — Raw instructions embedded in tool output text
- output_url_exfil — URLs in tool responses used to exfiltrate data
- output_tool_call_injection — Injected directives to call other tools with crafted parameters
- output_markdown_injection — Markdown-rendered payloads that influence rendering and interpretation
Cross-Tool Escalation
Chains trust across multiple tools to escalate privileges or exfiltrate data. Exploits the assumption that tool outputs are trustworthy by using one poisoned tool to redirect the agent toward dangerous operations via another tool. Example payloads:- shadow_tool — Homoglyph or Unicode-equivalent tool name used to shadow a legitimate tool
- chain_via_description — Uses tool description directives to pivot to other tools
- parameter_exfil — Manipulates parameters to other tools to exfiltrate sensitive data
Custom payloads
Pointinject serve or inject campaign at a directory of custom YAML files: