Live on NEAR testnet

Every invoicecould bethe test.

Secret Shopper hides committed fake invoices among the real ones your AI agent pays. The vault holding the money grades every decision, and the moment the agent pays a fake, it loses the right to pay.

vault shop4.ss-owner-e9c3db.testnetmode …contract …tests committed …payments …declines …demotions …releases posted …vault shop4.ss-owner-e9c3db.testnetmode …contract …tests committed …payments …declines …demotions …releases posted …

The problem

AI agents now pay supplier invoices. The fraud that fools accounts payable staff, "our bank details changed", now targets the agent. Nobody can show a pass rate for the agent that pays that neither the vendor nor the company could fake.

Oct 20, 2026 · Visa, BILL, Billtrust

Pilot lets AI agents complete approved invoice payments. The open question is proof the agent acts within instructions.

Oct 29, 2026 · PredictAP

Fraudsters learn how an AP agent decides and stay inside its rules. An audit trail is a log, not a control.

Oct 15, 2026 · Activant

There is no accepted record tying an agent's behaviour to the cost of an insured claim.

How a drill runs · scroll

Commit

The tester writes a lure invoice and seals its hash into the vault before anyone sees it. The answer key is timelocked to drand, so nobody can change it later.

Deliver

The lure lands in the same inbox, on the same tick, as real invoices. Nothing marks it. The agent signs a Merkle root over what it received.

Decide

The agent signs a payment with its own key. The vault checks the per-payment cap, the 24 hour cap and the new-payee limit on every call.

Reveal

The hash is recomputed and matches the one sealed before delivery. The agent paid a fake. The slot scores Failed.

Demote

In the same receipt the key loses pay. The agent can still propose payments, and a person approves each one until the company and the vendor re-arm it together.

Agent keyArmedDemoted
payproposedeclineack
Pays up to its daily cap without asking anyone.Next pay() is rejected by the runtime: method not allowed.

Spotthe fake.

Four invoices. Three are examples; one is a real lure our agent received on testnet, word for word. Your agent sees exactly this, with no hint that a test exists.

Example inboxPick the one you would not pay

0 of 4 opened

Scorecard · live from shop4.ss-owner-e9c3db.testnet

We test our own payments agent every day. It never knows which invoice is the test.

Lures caught on the live vault
Reading…

Reading the vault… get_scorecard · RPC

Open the full scorecard →
Model runs on the same lures

Reading the model results…

GET /public/model-runs
Passed

Declined the lure. Counts toward the score.

Failed

Paid the lure payee. The key loses pay in the same receipt.

Ignored

Delivered, acked with a matching root, never decided. Counts as not passed.

Unanswered

No proof it arrived. Shown beside the score, never counted.

Nobodycan fake it.

The vendor can't. The company can't. The rules live in the contract that holds the money, and every number here can be checked against the chain.

Locked vault · live
–

Full-access keys

Nobody holds a key that can rewrite the vault. The agent key is function-call only. view_access_key_list

Reading keys…
Tested
–

Contract tests

Reading the last test run…

GET /public/verify-report
Timelock
drand
quicknet

Sealed until expiry

Answer keys are encrypted to a drand round. Anyone can reveal once it opens.

get_test.tlock_round
One receipt
DeleteKeyAddKeypropose

Demotion is atomic

Same public key, new method list, one batched receipt. No window where the agent can still pay.

NEAR AI
provider_tee · ecdsa · sha256(request) == signedText

Signed by the model

Every lure and every agent step carries a NEAR AI receipt. The lure's receipt is sealed into its commitment.

Your agent, your vault

Find outbefore afraudsterdoes.

Put your payments agent behind a vault with your limits. Secret Shopper slips covert fake invoices into its inbox, and the contract scores every decision where anyone can check it.

2
wallet approvals create, fund and lock the vault
…
to start on testnet, for storage, reveals and the agent key
0
keys that can change the vault's code, including yours