Require it. One line before money moves.
Write your bar once, in plain words. Every hook you own enforces it. Money, listings and code move only on a signed ALLOW.
- One barWritten once, pinned to a version and a hash.
- Every hookRelease, payment, listing, deploy, questionnaire, code.
- Free to checkChecking costs nothing, for you or for anyone.
Anyone who lets something happen after a result, and can say no.
Tap the one you are. Its bar fills the box above. Selling, not buying? Get counted →
Already on the ledger: services measured by MIZAN · the registry →
Sign it once. Paste one line into the hook you own.
Publish and sign your bar.
No form, no sales call. To sign, this page claims a MIZAN key for you. The key stays in this tab and is forgotten when you close it. The rules you publish stay on the record.
One rule, six hooks. Same id and hash at each.
Sign first. Your lines appear here.
Also as python · javascript · the full integrate reply · raw text.
A hold releases on ALLOW. It stays held on REFUSE. No money moves.
A real hold in MIZAN’s sandbox, through the release guard. ALLOW returns a signed authorization. REFUSE returns a signed denial.
Under the reference rule (Sharpe at least 1.0, drawdown at most 25%) until you sign yours.
Start where nothing is enforced. Switch on when you trust it.
- Nothing enforcedYour payment always runs. Each answer is recorded beside it.
MIZAN_CHECK_BEFORE_PAY=advise - You keep every decisionBy default, advise mode waits at most 1.5 seconds for an answer.
- Enforce when readyRemove one setting. From then on it pays only on ALLOW.
- FreeChecking is free in both modes. Volume plans: talk to us.
The answer rides inside the payment. You check it offline.
The payer carries a signed answer in the protocol it already uses. Settle only on an unexpired ALLOW for this payee and this rule. Nothing is forked.
// the payment requirement the payer accepted { "scheme": "exact", "payTo": "<payee>", "extra": { "mizan": { "token": "mzv1.eyJ…", "kid": "2266fb495f83b0a0" } } } # facilitator, offline, in the same step as the payment ok, code = mizan_verdict_ok(requirement, keys, rule="sha256:…") if ok: settle() # signature · kid · expiry · payee · rule · ALLOW
# a constraint in the user-signed open Payment Mandate (AP2 v0.2) {"type": "market.mizan.verdict", "rule": "sha256:…"} # the token is presented with the closed Payment Mandate ok, code = ap2_verdict_ok(constraint, closed_mandate, token, keys) # met only by an unexpired ALLOW under that rule, bound to the payee. # per AP2, a verifier that does not know the type fails it.
// the seller lists the extension in capabilities.extensions { "name": "market.mizan.verdict", "extends": ["$.CheckoutSessionCompleteRequest.mizan_verdict"] } // the agent completes checkout with "mizan_verdict": { "token": "mzv1.eyJ…", "kid": "2266fb495f83b0a0" } # the seller, offline ok, code = acp_verdict_ok(complete_request, merchant_id, keys, rule)
# any HTTP request: one header, one token POST /work HTTP/1.1 Mizan-Verdict: mzv1.eyJ… # the receiving party, offline ok, code = header_verdict_ok(request.headers, payee="<you>", keys=keys, rule=rule) // TypeScript, any runtime const r = verifyToken(token, { keys, payee, rule });
Code decides on a message it verifies itself.
Seven fields, canonical JSON, one Ed25519 signature. Your contract or config checks it offline with the published key, and acts only on ALLOW.
Asking the record…
The rule in the payment request, and the payer’s own limits
Your 402 carries your rule id and its hash, so the payer checks the payee against exactly that bar before it pays. Read live for a published rule:
Reading the live binding…
A principal signs, with its own key, what one agent may spend: payees, a limit per payment and in total, a currency, an expiry. A payment outside it gets a signed denial, at the same hook. The mandate, field by field →
Your volume, your arithmetic.
A bar met once is accepted everywhere it is trusted.
Another requirer can rely on a bar already met, without checking again. That lasts up to a day, and checking again is always free. Every answer also shows where the subject is already required, in its required_by field. API reference →
Five questions to ask first.
What if MIZAN is down?
Answers verify offline with the published key, so a token you hold keeps working. A hold without an ALLOW stays held. The guard fails closed, never open.
Who is liable?
You decide. MIZAN never holds or moves money. An answer is about the record, not advice about the payment. Terms of reliance →
One bar. Every hook. Checking stays free.
Questions: [email protected]
The answer, field by field · SDKs · What ALLOW means