CAIN-42 · Test & grade your AI
AgentScore
A plain-English safety scorecard for an agent, plus a real jailbreak test, no code needed.
Last reviewed 2026-10-01
Live MCPGate gates · MCPGate
What it is
Plain-English safety checks for AI agents, no code required: a 12-question Guardian Agent scorecard plus a real jailbreak test run against your model's own API.
Where it fits
Part of Test & grade your AI: Score agents, attack them safely, check AI-written code and answers. Every CAIN-42 product runs behind the same rule: an AI agent's action is checked before it runs (identity, authority, policy, risk), decided as allow, hold for a human, or block, and recorded as signed evidence. Unknown or error never becomes allow.
Use it
- Open it
https://agentscore.mcpgate.online - Documentation
https://agentscore.mcpgate.online/docs - MCP endpoint
https://agentscore.mcpgate.online/mcp
Live now
Checked from your browser when this page opened, not from a cached list.
Fire a real decision
Send an action through the live CAIN-42 pipeline from this page, with no account, and watch every stage decide. This is the same pipeline every product here sits behind; it runs for a throwaway demo tenant and is rate limited.
For AI engineers
Every product sits behind one decision path: your agent proposes an action with the exact arguments, CAIN runs it through identity, authority, policy, risk, trust and quorum consensus, and answers ALLOW, REQUIRE_APPROVAL or DENY with an Ed25519-signed record. A timeout, outage or unknown verdict never becomes ALLOW. A brand-new agent has no trust history, so its first actions usually come back REQUIRE_APPROVAL.
Python (zero dependencies)
pip install https://cainstudio.online/cainstudio-0.3.0-py3-none-any.whl
export CAIN_API_KEY=... # free key: https://cainstudio.online/signup
import cainstudio
@cainstudio.guard()
def transfer(amount_usd: float, to: str) -> str:
... # runs only if CAIN allows this call, with these arguments
try:
transfer(5000, "acme")
except cainstudio.ApprovalRequired as e:
print("held for a human:", e.approval_id)
except cainstudio.ActionBlocked as e:
print("refused:", e.decision.reasons)
except cainstudio.CainUnavailable:
print("CAIN unreachable: not run") # fail-closedSee a real decision with no account
cainstudio try # live pipeline, stage by stage
cainstudio try --list # the other attack scenariosMCP clients (Claude Code, Cursor)
claude mcp add --transport http cain https://cainstudio.online/mcpMore: Python SDK · TypeScript SDK · framework integrations · AI quickstart · decision signing key
Tested guarantees in this area
Every rule in these niches has its own page with its recorded result.
- Attacks, threats & containment: 418 tested invariants — What happens when someone attacks: it is caught and contained.
- Benchmarks, coverage & performance: 1269 tested invariants — How fast it runs and how much was tested.
Related
- Agent discovery & red team — Finds the agents in your code and attacks your own rules, before someone else does.
- CAIN Eval — Benchmarks your agents so you can compare versions before you ship them.
- Citegate — Checks that an AI answer actually cites real, complete sources.
- Fairgate — Measures whether an AI system treats groups of people unfairly.
- Liftgate — Tells you whether an AI experiment's improvement is real or just luck.
- ProbeGate — Attacks your own MCP endpoints with known jailbreaks to see what gets through.
- Verifygate — Grades AI-written code honestly: proved, tested, checked, or unknown.
Try CAIN-42 on your own agents
Create a free account and every new account starts with a 7-day trial of the full platform. Or try the sandbox first, with no account at all.
Create a free account → · Try the sandbox · See the whole ecosystem