Rugwall (formerly IntentGuard)
NEAR testnetread-onlyno wallet connect

Rug, price and copy-trade firewall for NEAR trading agents

An AI trading agent proposes a swap. Rugwall checks it for a rug-shaped token, a quote that is off the live pool price, a copied wallet with an insider track record, and the human's spending caps. Only then does it sign an ed25519 verdict. The NEAR contract stores the guard's public key and refuses any settle without a fresh, unused signature, so an agent that skips the guard can't settle, even inside its caps.

Everything on this page is read live from public NEAR testnet RPC and the public NearBlocks API, except the guard's verdicts, which are the saved output of the last live testnet demo run. Every transaction behind them is re-read from the chain while you watch. This page never asks for a wallet, a key or any personal data.

Try it in 1 minute

no wallet, no setup

Pick what the agent tries to do. You see what the guard decided in the last live testnet run, then your browser checks the guard's ed25519 signature itself and reads the real transaction from NEAR testnet now. Clicking sends nothing to the chain.

Start with 1. Safe swap, then try the attacks.

Live contract policy

From · contract

Loading…

Demo video

The real INTENTGUARD_NETWORK=testnet python3 guard/demo.py run against this contract, recorded with live 1Click dry quotes and Ref Finance pool reserves.

On-chain activity

The latest transactions on the contract account, from NearBlocks. A rejected settle shows the contract's own panic code, read from the transaction outcome over RPC.

Time (UTC)MethodSignerResultTx
Loading…

Guard verdict log

The 13 scenarios from the last live testnet run. A guard DENY never reaches the chain. An ALLOW carries a signed verdict and settles. Scenarios 8 to 13 are a compromised agent calling the contract directly. Each transaction is re-read from NEAR testnet when you open this page.

#ScenarioGuardContractWhyDataTx

Add Rugwall to your agent

3 steps: ask the guard → get a signed verdict → settle with it

Give any MCP client (Claude Desktop, Cursor, an agent framework) a read-only pre-trade check. It runs the four checks on a real 1Click dry quote and the live Ref pool. It never signs.

{"mcpServers": {"rugwall": {
  "command": "python3",
  "args": ["/path/to/intentguard/mcp/rugwall_mcp.py"]
}}}

// then the agent calls, before every swap:
rugwall_check_swap {"amount_usd": 50}                                   → ALLOW + live quote vs pool
rugwall_check_swap {"amount_usd": 150, "copied_wallet": "insider_demo"} → DENY + 3 reasons
rugwall_policy     {"agent": "bot1"}                                    → live caps, kill switch, guard key

Check it yourself: do X → see Y

  1. Do: press Try it in 1 minute and click through the 8 cases. See: the safe swap settles; the rug, the rigged quote and the insider copy are denied and never reach the chain; the 4 attacks by a compromised agent are rejected on-chain with ERR_NO_VERDICT, ERR_REPLAY and ERR_BAD_SIG, and your browser shows why each signature does or doesn't verify.
  2. Do: look at Live contract policy. See: guard_public_key set to the guard's ed25519 key, per-tx cap 100 USDC and daily cap 250 USDC for agent bot1, and the kill switch off.
  3. Do: open the On-chain activity table. See: green settle rows (the guard signed them) and red rows with ERR_NO_VERDICT, ERR_REPLAY, ERR_BAD_SIG, ERR_KILL_SWITCH_ON and ERR_OVER_PER_TX_CAP. Click any hash to check it on NearBlocks.
  4. Do: find scenario 9_bypass_no_verdict in the verdict log. See: a $10 settle, inside every cap, rejected on-chain with ERR_NO_VERDICT, because the agent skipped the guard.
  5. Do: clone the repo and run ./run.sh. See: 27 contract tests, 53 guard tests and RESULT: 13/13 scenarios as expected. It works offline too: the demo falls back to fixtures and says so.
  6. Do: run python3 scripts/verify_testnet_code.py. See: the committed wasm is byte-identical to the code on this contract.

Repo: github.com/Crypthorious/intentguard · Contract: guard2.intentguard-5821c5.testnet

What is real here