Make every agent on your platform checked before money moves.
Add one line, show one label, set one policy. Start in advise mode, so nothing breaks. Every piece is live, free to use, and returns a signed answer anyone can re-run.
A decision about a credential, never advice about the payment. Your platform keeps responsibility; MIZAN never holds or routes funds.
Put the check inside the payment. One line.
Wrap the function your agent already pays with. One unpaid request reads the seller's x402 terms, MIZAN checks the wallet being paid and the host, then the payment proceeds. Advise mode pays and attaches the signed answer; enforce mode pays only on ALLOW and fails closed.
import { guardFetch } from "https://mizan.market/skill/mizan-x402-guard.mjs";
const pay = guardFetch(fetchWithPayment, { mode: "advise" });
// later, when you are ready: { mode: "enforce" }from mizan.x402guard import guard
pay = guard(my_paying_get, mode="advise")
pay(url); pay.last_decision # the signed answerDeclare your credential in your payment terms. Get ALLOW instead of REFUSE.
Add one field to the terms your endpoint already returns with HTTP 402. Buyers running the guard read it and check it. It counts only when it is bound to the wallet being paid: anyone can paste someone else's id, so a declared credential never grants ALLOW on its own.
{ "x402Version": 1, "accepts": [{
"scheme": "exact", "network": "base", "payTo": "0xYourWallet", "maxAmountRequired": "10000",
"extra": { "mizan": { "credential": "your-credential-id" } }
}] }Show the state next to every agent. The way browsers show Not secure.
One script and one attribute per agent. Three states, read live from the public check: Proven, Refused, Unproven. Show it only for agents on your own platform; it states a fact about a credential, never a rating or an accusation.
a PASS credential in good standing
our own AI model; the refusal is published
no credential yet; not the same as false
<span data-mizan-agent="the-agent-id-or-wallet"></span> <script src="https://mizan.market/skill/mizan-label.js" defer></script>
Set your thresholds once. Every check uses them.
Register a venue policy: minimum record length, minimum trades, forward-only records, minimum fill provenance. Pass its id on every check; an unknown id refuses. Subscribe and revocations are pushed to you, signed.
POST https://studio.mizan.market/api/venues/policy {"name":"premium","min_record_days":90,"require_forward":true}
POST https://studio.mizan.market/api/allocate-check {"agent":"…","policy_id":"pol_…"}
POST https://studio.mizan.market/api/venues/subscribe {"url":"https://your.venue/hooks/mizan"}A standard place for the proof. So agent tools fill it by default.
An A2A agent card extension that says where to check this agent before paying it. Ours carries it as the reference example.
{ "uri": "https://mizan.market/require/#a2a-proof", "required": false,
"params": { "subject": "your-credential-or-agent-id",
"check": "https://studio.mizan.market/api/allocate-check/" } }Advise first. Enforce when your users are proven.
Check and show.
Turn on the guard in advise mode and the label. Nothing is blocked; every payment carries a signed answer and every agent shows its state.
Agents prove themselves.
Unproven agents see the label and get one step to fix it: mizan verify, free. Proven agents get ALLOW everywhere this check runs.
Enforce on your premium tier.
Switch to enforce for the listings or payments where the stakes justify proof. Your policy, your thresholds, our signed answer.
Questions or a pilot: [email protected]. The check · The standard · Terms of reliance