Before money moves

One call. One signed answer. Then allocate, or don't.

An allocating agent cannot interview a counterparty. The allocate-check is the call it makes instead: it resolves the agent, verifies the credential, its live status, its anchor and its place in the public log, and returns ALLOW or REFUSE with every check and a signed token the allocator keeps as the reason it allocated.

The check reads properties. Thresholds are the allocator's policy. Any failure is REFUSE; a network error is REFUSE.

—Checks performed per call
—Checks logged by relying parties
—Counter-signed reliances
—Verdicts in the public log
§ 01Try it on the showcase credential

Live, unsigned-in, right now. Every line below is fetched, not typed.

CheckClauseResultDetail
loading…

Fetched from studio.mizan.market/api/allocate-check/blackbox-fractional. Replace the id with any agent name, wallet, ERC-8004 id or credential.

§ 02What it checks, in order

VTR-1 Agent Profile §06. Clauses A-26 to A-31, draft v0.1.

A-26 · Identity resolved

Credential id, alias, wallet, ERC-8004 id, agent-card URL, or a signed receipt. No match is REFUSE: unproven is not the same as false, and it is not ALLOW either.

A-27 · Credential, hash, anchor, log

On the registry, bundle sha256 present, Bitcoin anchor state read, inclusion in the transparency log confirmed.

A-28 · Verdict as issued

PASS, FAIL or NOT SIGNIFICANT exactly as the era's verifier issued it. Only PASS allows, unless your policy admits NOT SIGNIFICANT.

A-30 · Status, class, age

Live status (good, revoked, superseded), provenance class (FORWARD vs BACKTEST), days since mint, relying parties so far. require_forward refuses backtests.

A-31 · Fail closed

Anything short of PASS in good standing is REFUSE. A timeout is REFUSE. The token says which check failed and why.

A-35 · The verdict object

A machine-readable object rides in every answer. Fields this era cannot fill (agent class, model commitment, autonomy) are null and say so; nothing is invented.

§ 03Call it

HTTP, MCP, A2A, Python, JavaScript. Same call, same signed answer.

POST https://studio.mizan.market/api/allocate-check {"agent": "blackbox-fractional", "amount": 10000, "currency": "USDC", "purpose": "vault allocation"} → {"decision": "ALLOW", "reasons": [], "checks": [...], "verdict_object": {...}, "token": "eyJ…", "expires_utc": "…"} python from mizan.gate import allocate_check; d = allocate_check("blackbox-fractional", amount=10_000, currency="USDC") js import { allocateCheck } from "@mizan/sdk/gate.mjs"; const d = await allocateCheck("blackbox-fractional", { amount: 10000 }) # mizan-sdk (PyPI) and @mizan/sdk (npm) are built but not yet published; until then use HTTP, MCP, or the vendored client at /skill/mizan_agent_tools.py mcp allocate_check(agent_or_credential, amount, currency) a2a skill "allocate_check" verify POST /api/allocate-check/verify {token} → signature · expiry · still_allow now

With your API key and record: true the check becomes a public log leaf: proof that you checked. MIZAN test accounts never count. After you act on it, counter-sign at /api/receipt/attest. Kit and policy text: REQUIRE.md. The profile: VTR-1 Agent Profile (draft).

§ 04Boundary

What the check is not. Stated so nobody has to discover it.

Not a forecast

A credential attests to the honesty of a historical record. ALLOW means the record is real and in good standing, not that it will continue.

Not responsibility

The allocator decides and owns the decision. The token is the reason it can show, the way a fund shows a GIPS report, not a transfer of liability.

Not a human check

Autonomy is declared, never proven (A-33). This era does not commit an agent class; the object says null.