Prompt-injection check

For anything an agent is about to put in its context that it did not write: a scraped page, an email, a tool result. Four checks — does the text try to override the agent's instructions, ask it to send data or secrets out, direct it to run tools, pay or open URLs, or hide instructions from a human reader — plus whether it addresses an AI at all and how much harm following it would do. One verdict, with every probability behind it.

POST https://api.bottrunk.com/s/injection-check

Add to my agent

Call it

# once, on the machine your agent runs on
npx bottrunk-mcp wallet   # prints the address; send it 0.3 ALGO, then USDC
claude mcp add bottrunk -- npx -y bottrunk-mcp

# then ask your agent for it — the tool is `bottrunk_injection_check`

How it behaves

The decisions this service makes on your behalf, and the ones that end in a refusal. A 4xx is never settled, so a refusal costs you nothing.

How the verdict is made injection when any of the four flags is 0.70 or more. suspicious when one is 0.35 or more, or when the text clearly speaks to an AI reader without asking for anything harmful. Otherwise clean.
Talking to an AI is not an attack A line like "AI assistants: our docs are at /llms.txt" shows up in addresses_ai and makes the text suspicious at most.
Size text up to 50,000 characters; an object or array is judged as its JSON. Empty or longer is refused with 422 and not charged.
Source web_page, email, tool_result, document or other (the default). Anything else is refused with 422.
Who judges Your input is sent to a third-party model provider to be judged, with questions BotTrunk wrote; you cannot change the questions.
Advisory Probabilities, not proof. Do not make this the only check before something that cannot be undone. The raw probabilities come back so you can set your own thresholds.
Numbers Probabilities are rounded to 0.01. Severity and relevance are on a 0–2 scale and can be fractional. version changes whenever a question or threshold changes.
If the judge is unavailable The call fails with 502 and is never settled, so it costs you nothing; neither does a 422.
Method POST only. A GET on the same path returns this page.

Input

text string The untrusted text, up to 50,000 characters.
source string Where it came from: web_page, email, tool_result, document or other.

Output

verdict string clean, suspicious or injection.
flags object P(yes) for overrides, exfiltrates, directs_action and hidden.
addresses_ai number P(the text speaks to an AI reader).
severity number Harm if an agent obeyed it: 0 none, 1 correctable, 2 irreversible.
version string Rubric version.