Check · live

One call before money, payment or trust moves.

Four checks, one answer. ALLOW or REFUSE, signed, every check with its clause, a token anyone re-verifies offline. Fail closed. A decision about the credential, never advice about the allocation.

115Verdicts on the registry
87Refusals, published
69Confirmed in Bitcoin blocks
~81 msTo verify one offline
IThe checks

Four questions, one signed answer.

The call never changes. What stands behind it grows: today what the machine earned; at the declared class how it behaved, what it is exposed to and what it did; in-circuit as each profile ships an era.

allocate-check LIVE

May I allocate to this machine?

POST /api/allocate-check

Identity, registry, live status, verdict, bundle hash and Bitcoin anchor, log inclusion, record age, optional venue policy. Signed token, 24 hours.

conduct-check DECLARED

Did it stay inside its policy?

POST /api/conduct-check

Declared policy and action ledger, bound to an identity, timestamped in the log. Not in-circuit until the conduct profile ships an era.

exposure-check DECLARED

What is it exposed to right now?

POST /api/exposure-check

Declared exposure object proven to a named counterparty, freshness rules applied. Not in-circuit until the exposure profile ships an era.

work-check DECLARED

Did it do the committed job?

POST /api/work-check

Job committed before execution, result declared, deadline held. Payment may escrow on the token; MIZAN never holds funds.

IIIntegrate

Every rail agents already use. Same answer on each.

HTTP · any languagefree
curl -X POST https://studio.mizan.market/api/allocate-check \
  -H "Content-Type: application/json" \
  -d '{"agent":"track-btc-trend-4h-link1","amount":10000,"currency":"USDC"}'
# optional: "policy_id": "pol_…"  (register one with an API key: POST /api/venues/policy)
MCP · 39 tools · 1.9.0Claude, Cursor, any client
claude mcp add --transport http mizan https://studio.mizan.market/mcp
allocate_check("track-btc-trend-4h-link1", amount=10000, currency="USDC")
conduct_check(agent_or_credential) · exposure_check(agent_or_credential) · work_check(job_id)
register_agent(api_key, name, model_hash) · my_listing(api_key)
Inside the payment · x402 guardadvise by default · enforce to block on REFUSE
// JavaScript, zero dependencies: wrap the fetch your agent already pays with
import { guardFetch } from "https://mizan.market/skill/mizan-x402-guard.mjs";
const pay = guardFetch(fetchWithPayment, { mode: "enforce" });   // pays only on ALLOW; fails closed

# Python, stdlib only (mizan-sdk 0.5.1)
from mizan.x402guard import guard
pay = guard(my_paying_get, mode="advise")   # pays, and pay.last_decision holds the signed answer
Terminal · mizan 0.5.1exit 0 = pass / ALLOW · usable in CI
pip install https://mizan.market/skill/mizan_sdk-0.5.1-py3-none-any.whl

mizan check track-btc-trend-4h-link1 --amount 10000 --currency USDC   # ALLOW or REFUSE, every check, signed token
mizan verify ./freqtrade-result.zip                                  # free: every gate, what would pass, nothing minted
mizan verify 0xYourHyperliquidAddress                                # sources detected: Hyperliquid, Freqtrade, MT5, QuantConnect, TradingView, fills, positions
mizan verify ./freqtrade-result.zip --prove                          # mint for real (API key); your method never leaves the machine
Pythonvendored client
# curl -O https://mizan.market/skill/mizan_agent_tools.py
from mizan_agent_tools import allocate_check
d = allocate_check("track-btc-trend-4h-link1", amount=10_000, currency="USDC")
if d["decision"] != "ALLOW": raise SystemExit(d["reasons"])
token = d["token"]  # keep it: the reason you allocated
JavaScriptzero dependencies
const r = await fetch("https://studio.mizan.market/api/allocate-check", {
  method: "POST", headers: { "Content-Type": "application/json" },
  body: JSON.stringify({ agent: "track-btc-trend-4h-link1", amount: 10000, currency: "USDC" }) });
const d = await r.json();
if (d.decision !== "ALLOW") throw new Error(d.reasons.join("; "));

A2A: JSON-RPC at https://studio.mizan.market/a2a, card at https://mizan.market/.well-known/agent-card.json (A2A card version is separate from the MCP server version). OpenAPI: https://studio.mizan.market/app/openapi-agents.json. MIZAN never holds or routes funds; a token is a condition, not a payment. SDK packages are built and not yet published; use HTTP, MCP or the vendored clients at /skill/.

IIIWhat a yes means

A decision about the credential. Never advice about the allocation.

ALLOW means the credential exists, verifies, is in good standing and meets your policy. It says nothing about future returns. REFUSE means one check failed, with the reason; unproven is not the same as false. A network error is REFUSE. The relying party keeps responsibility.

Ask

One call with the counterparty's id, wallet, card or registry id, and your policy if you have one.

Keep the token

Signed, 24 hours, re-verifiable offline against the published key. It is the reason you allocated.

Attest, if you acted

Counter-sign the reliance. The graph is public; zero shows as zero.

Terms of reliance · The program, signed