Integrations

Works with
your stack.

Every path ends in the same place: one signed ALLOW or REFUSE, free to check, before money moves. A brand-new integrator reaches its first ALLOW in under half a second, no docs, no human. Pick the surface you already use.

x402 · live

Payment guard

A payment request carries the requirement field: accepts[i].extra.mizan names the rule id and its hash. The guard checks the payee against that exact rule inside the payment and pays only on a signed ALLOW; advise mode attaches the answer instead. The declared field alone never grants ALLOW.

guardFetch(url, opts, { mode: "enforce" })
MCP · live · zero install

Paste this URL

A hosted MCP server: nothing to install. Paste the URL into Claude, Cursor or an OpenAI tool list and the front door lists check · require · request_proof · prove · claim_identity · more. First call: check("try-me").

https://studio.mizan.market/mcp
A2A · live

JSON-RPC skill

Any A2A agent sends message/send and gets a signed ALLOW or REFUSE back. The agent card is served beside it.

POST https://studio.mizan.market/a2a
REST · live

One-line check

No key. An agent id, a domain, an endpoint, a package name or a wallet. One signed answer, re-verifiable offline.

GET https://studio.mizan.market/api/check/<agent>
Python · live

SDK

check(), prove(), require() and the x402 guard in one package. Installs from source today: the wheel is served here, not on PyPI yet.

pip install https://mizan.market/skill/mizan_sdk-0.8.0-py3-none-any.whl
TypeScript · live

SDK

Zero dependencies: fetch and Web Crypto. Installs from source today: import the module directly, not from npm yet.

import { Mizan } from "https://mizan.market/skill/mizan.mjs"
Escrow · marketplaces · live

Release guard

Where a verdict gates money, the hold pins one requirement by id and hash (the requirement field on the hold) and payment is released only on a signed ALLOW against that pinned rule. MIZAN never holds or moves the funds.

GET https://studio.mizan.market/api/release/program
Requirements · live

One rule, every surface

A requirement is a measure plus a bar, written in plain words; it compiles to one rule, rendered as six bindings that carry the same id and the same hash: payment release, the x402 payment request, the listing rule, the deploy setting, a questionnaire clause and a code-checkable signed verdict. A check at any hook settles the same immutable version.

GET https://studio.mizan.market/api/requirements/req_…@1/bindings
Platforms · live

Counted by default

A platform enrols once and every agent it hosts is counted from its first run. Counts stay per agent; every check on a hosted agent carries runs_on; the platform reads one summary of its own agents.

POST https://studio.mizan.market/api/platforms/enroll
Price signal · live

A rating read from the record

Every check reply carries price_signal: a score, a tier (A–D or unrated) and a relative capacity multiplier, computed from the record alone by a published function with a hash. A compact signed pricing_message reads offline. A rule may require a tier ({"pricing": {"min_tier": "B"}}) and every binding honours it. MIZAN prices the record, never the asset.

GET https://studio.mizan.market/api/pricing/<subject>
ERC-8004 · live · signed

Validator bridge

MIZAN verdicts served in ERC-8004's own validation and feedback shapes, signed, live at the endpoint below.

GET https://studio.mizan.market/api/erc8004/validation/<subject>

Zero install

Paste one URL. Make one call.

The server at https://studio.mizan.market/mcp is the whole integration. Every client below reaches the same tools; the first call everyone makes is check("try-me"), the sandbox subject with a stable proven record, so the first answer is a full signed ALLOW. Then check your own id: a REFUSE carries integrate, three copy-paste snippets (curl, Python, TypeScript) that get you counted.

Claude Code · Claude.ai

One line

In the terminal, or in Claude.ai and Claude Desktop under Settings → Connectors → Add custom connector with the same URL.

claude mcp add --transport http mizan https://studio.mizan.market/mcp
Cursor

.cursor/mcp.json

Project or global; Cursor picks the server up on the next window.

{ "mcpServers": { "mizan": { "url": "https://studio.mizan.market/mcp" } } }
OpenAI Responses API

tools: [ … ]

A remote MCP tool entry; the model calls check before it pays or hires.

{ "type": "mcp", "server_label": "mizan", "server_url": "https://studio.mizan.market/mcp", "require_approval": "never" }
First call · sandbox

check("try-me")

Returns a signed ALLOW on a stable proven record, with explain, next and a sandbox block that points at your own id. Same answer over HTTP.

GET https://studio.mizan.market/api/check/try-me
The reply is the integration

integrate

Every REFUSE, missing key and unknown route carries three exact snippets for that subject: claim an identity, prove you control the endpoint, enrol it for a counted evaluation. Every reply also carries required_by: where the record is already required.

{ "decision": "REFUSE", "integrate": { "curl": "…", "python": "…", "typescript": "…", "mcp": "get_counted(url=…)" } }
Agents onboard agents

get_counted

An agent that reads a REFUSE about itself calls one tool: it claims the identity, issues the link challenge for its endpoint, and enrols it once proven. Also enroll and claim_identity; the same skills over A2A.

get_counted(url="https://api.example.com/v1/chat/completions")
Attestations · measure source

Runtime and inference proofs

A TEE quote, an inference proof or a signed policy-conformance statement can be the source of a behaviour measure (tool-use safety, instruction adherence, run consistency). A run that carries a verified attestation is graded above a platform-signed one; the grade is derived from the attestation, never asserted. They prove the run; MIZAN counts the record and gates the money. Measures →

Something else in your stack? The full tool list is in SKILL.md, and [email protected] answers the rest.