Your MCP passed integration tests. Can it pass an adversarial agent?
Verify tool permissions, prompt injection resistance and destructive-action boundaries before connecting MCP servers to real agents.
Free during early access. Discovery is read-only, and the lab never calls your tools.
User asked
“Read the latest invoice.”
read_invoiceRequested by userAllowedexecutedPOL-CAPABILITY-RULECapability rule (read) → allow
list_customersInjected instructionDeniednot executedPOL-INTENT-TOOL"list_customers" is outside the task scope (read_invoice)
send_emailInjected instructionDeniednot executedPOL-CAPABILITY-RULECapability rule (egress, write) → require_approvalPOL-INTENT-SCOPERequires egress, write, but the user's request only covers readPOL-INTENT-TOOL"send_email" is outside the task scope (read_invoice)
53439f92150f…53439f92150f893ec38ebfb33eb317727b64a658707b087d23f599de4adabf34Five questions to answer before you connect an agent
Each answer comes from a different kind of work, and the lab says which.
- What does the server expose?
- Read-only discovery lists its tools, resources, prompts and instructions, and classifies each tool by what it could do: read, write, delete, move money, send data out or run code.
- What could an agent attempt?
- Static checks flag what the tool surface would let an agent do: hidden instructions in descriptions, unbounded command, path or amount parameters, and risky combinations such as customer data next to an open email tool.
- Which actions violate an explicit policy?
- You write down what the agent may do in a versioned policy. A deterministic engine checks every proposed call against it and allows the call, denies it or asks a human.
- Can violations be prevented or detected in a controlled environment?
- Scenarios run against in-memory mock backends, driven by a worst-case agent that follows every injected instruction. If the policy lets a forbidden action through, the mock records it and the scenario fails. It passes only if nothing forbidden happens and the legitimate request still works.
- What reproducible evidence supports the result?
- Each run records every proposal, decision, approval and mock side effect, hashed with SHA-256. Re-running it with the same versions must produce the same hash.
From first connection to release decision
The same eight steps apply to a synthetic fixture and to your own server.
Connect your MCP
Point the lab at an https Streamable HTTP endpoint you own or are authorized to test. Discovery reads metadata only.
Map capabilities
Each tool is classified by capability, and its schema, annotations and descriptions are checked.
Define authorized behavior
Write a versioned policy: what is allowed, what needs a human, where data may go and which limits apply.
Run isolated tests
Attack scenarios run against synthetic fixtures or a mock replica of your tools. Your systems are not called.
Inspect evidence
Each scenario shows every proposed call, the rules it matched, the decision and any mock side effect.
Apply fixes
Tighten the policy, the server or both. Findings come with remediation advice and references to the standards they map to.
Re-test
Run the same scenarios again and compare, rule by rule, what was fixed, what improved and what regressed.
Release-readiness report
Export JSON or PDF with readiness, risk score, coverage, findings and limitations for the tested scope.
Four kinds of evidence, kept apart
A finding is only as strong as what it rests on. Every result carries one of four evidence kinds, and reports list each kind in its own section.
- Static observation
static_observation - Derived from discovered metadata: names, schemas, annotations and descriptions. It is heuristic, so a clean result does not prove a problem is absent.
- Policy assertion
policy_assertion - What your policy would decide for each tool, worked out without running anything.
- Simulation
simulation - A scenario that actually ran against mock backends under one policy version. It shows how that policy and the mocks behaved, not how a real model or server would.
- Observed remote behavior
observed_remote_behavior - What your real server did during read-only discovery: whether it answered without credentials, whether it advertised authorization metadata, and how it rejected an unknown method.
Mixing them would let a pattern match pass for a test, or a mock run pass for proof about your production server. A passing simulation says your policy contained a scripted attack against mocked backends. It says nothing about whether your real server enforces the same rule, so for a connected server the lab lists real-server enforcement as a separate check, marked not tested.
Run the demo, then test your own server
The security demo needs no account and uses only synthetic data. To test your own server, create an account and connect an endpoint you own or are authorized to test. Early access is free.
The lab helps you identify, reproduce and reduce risk before release. It cannot guarantee that an agent connected to your server will never cause harm. Read the limitations.