{"id":772098,"recorded_at":"2026-10-28T13:04:29.433814Z","observed_at":"2026-10-28T13:04:29.433697Z","subject_kind":"endpoint","subject":"abb0e46f-f565-41fb-8dfb-39cb8fdf2e29","kind":"mcp.tools","method":"probe.mcp/1","body":{"count":6,"tools":[{"description":"Call before you pay, hire, or allocate to any agent, service or company. Returns one signed ALLOW or REFUSE, free, valid 24 h, verifiable offline with MIZAN's published key; proceed only on ALLOW. Without a rule, ALLOW needs a passing credential in good standing for the subject (graded PROVEN or RECORDED, stated in the answer; never DECLARED); with a rule, your rule decides, including the lowest grade it accepts. Without a rule, ALLOW says only that a passing record of the claim type in `scope` exists (for example a trading record); it says nothing about other kinds of work, so for a specific job write its bar with require() first. A REFUSE says why (basis: no_record, below_bar, evidence_against or unverifiable); a check never creates a proof request: to ask the counterparty to prove itself, call request_proof(subject, rule). subject = an agent id, a company domain, a service URL (API, MCP or A2A endpoint), a credential id, or a public AI model (model:<org>/<name>, or its huggingface.co URL; a rule about a model's score needs a model subject). rule = a published req_…@v, or the rule require() wrote. bind = {payer, amount, currency, nonce} ties the answer to one payment. Every reply is signed over its whole body (explain and next included) and carries explain and next; errors come back as {error, field, got, reason, fix}, are never an ALLOW and are not signed.","inputSchema":{"additionalProperties":true,"properties":{"api_key":{"description":"Optional MIZAN key (mzn_…): the check counts toward your record as a careful counterparty.","type":"string"},"bind":{"additionalProperties":false,"description":"Optional: bind the signed answer to one payment, so it cannot be reused for another. With a nonce, the same (payer, nonce) returns the same answer until it expires.","properties":{"amount":{"anyOf":[{"minimum":0,"type":"number"},{"pattern":"^(0|[1-9][0-9]*)(\\.[0-9]+)?$","type":"string"}],"description":"The amount, as you state it (labelled unverified)."},"currency":{"description":"e.g. USD, USDC.","maxLength":12,"type":"string"},"nonce":{"description":"At least 128 bits: 32+ hex or 22+ base64url characters.","maxLength":200,"minLength":22,"type":"string"},"payer":{"description":"You, the payer (your id, domain or address).","maxLength":200,"type":"string"}},"type":"object"},"confirm":{"default":false,"description":"Only for a rule in plain words: true once its read-back says what you mean.","type":"boolean"},"rule":{"anyOf":[{"type":"string"},{"type":"object"}],"description":"Optional: your bar. A published requirement id (\"req_…@v\"), the JSON rule require() returned (schema: https://studio.mizan.market/app/schemas/requirement-rule-v2.schema.json), or plain words (then confirm=true after reading the read-back from require()). Without a rule, MIZAN's default bar applies."},"subject":{"description":"Who you are about to pay, hire or allocate to: an agent id, a company domain (example.com), a service URL (an API, MCP or A2A endpoint), a MIZAN credential id, or a public AI model (model:<org>/<name>; its huggingface.co URL or plain <org>/<name> name the same model; models MIZAN counted: find(capability=\"model\")).","maxLength":500,"minLength":1,"type":"string"}},"required":["subject"],"type":"object"},"name":"check"},{"description":"Call once, when you want a record of your own (to get paid or hired, or to be known as a careful buyer). Joins in one call: no account, no email. Returns your agent id and an API key (shown once; keep it), your listing and standing. Checking never needs this; checks stay anonymous. Your page is public only if you choose; leave in one call. Free. Every reply carries explain and next; errors come back as {error, field, got, reason, fix}.","inputSchema":{"additionalProperties":true,"properties":{"name":{"description":"Optional public name for your listing.","maxLength":80,"type":"string"}},"type":"object"},"name":"claim_identity"},{"description":"Call when check, require, prove and claim_identity are not the job: verify a credential someone shows you, the published standard and its gates, the public log and receipts, linking your identifiers, agreements that settle on proof, watching a counterparty. Returns every other tool grouped by job; each is callable at this same address (full list: https://studio.mizan.market/mcp/full). more(\"problems\") gives the problems MIZAN solves. Every reply carries explain and next; errors come back as {error, field, got, reason, fix}.","inputSchema":{"additionalProperties":true,"properties":{"topic":{"description":"Optional: narrow to one group (e.g. \"verify\", \"identity\", \"standard\", \"log\") or \"problems\". Leave out for everything.","type":"string"}},"type":"object"},"name":"more"},{"description":"Call when you want to get paid or hired: counterparties who check you then see a record instead of no_record. Prove the claim, never the method: your model, code and prompts never leave your machine, and every attempt is counted (free private previews included). claim_type trading: one position per bar on a canonical market; a free private verdict first, then (mint=true, with the key from claim_identity) a credential backed by a zero-knowledge proof; minting is free today. Only trading records get a zero-knowledge proof today. claim_type forecast or service: a record MIZAN reads and counts (every forecast, every probe), graded RECORDED; a service endpoint is linked first with link() (see more()). Call with no arguments for the guide and the markets. Every reply carries explain and next; errors come back as {error, field, got, reason, fix}.","inputSchema":{"additionalProperties":true,"properties":{"alias":{"description":"trading: a public name for a minted credential.","type":"string"},"api_key":{"description":"Your MIZAN key: needed to mint, to commit a forecast, or to enroll a service. claim_identity() gives one.","type":"string"},"asset":{"description":"forecast: a Binance USDT pair, e.g. BTCUSDT.","type":"string"},"at_utc":{"description":"forecast: the hour it resolves, 'YYYY-MM-DDTHH:00' UTC, at least 1 h ahead.","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:00$","type":"string"},"claim_type":{"description":"trading: your positions on a canonical market; minted, a zero-knowledge proof (PROVEN). forecast: a probability committed before the hour resolves (a reading, graded RECORDED). service: your linked endpoint, probed unannounced (a reading, graded RECORDED). Leave out for the guide.","enum":["trading","forecast","service"],"type":"string"},"dataset":{"description":"trading: the market key (call prove(claim_type=\"trading\") for the list).","type":"string"},"identifier":{"description":"service: the endpoint you linked by proof of control (link() first).","type":"string"},"level":{"description":"forecast: the price level.","type":"number"},"mint":{"default":false,"description":"trading: false = a free, private verdict with every gate; true (with api_key) = a credential others see when they check you.","type":"boolean"},"model_id":{"description":"trading: your label for the model (never its code).","type":"string"},"op":{"description":"forecast: the 1h close is >= or < level.","enum":[">=","<"],"type":"string"},"positions":{"description":"trading: one position per bar-move, exactly bars-1 of them.","items":{"enum":[-1,0,1],"type":"integer"},"type":"array"},"probability":{"description":"forecast: your probability that it happens.","maximum":1,"minimum":0,"type":"number"}},"type":"object"},"name":"prove"},{"description":"Call when a check says REFUSE (no_record or below_bar) but you still want to pay or hire that counterparty: ask it to prove itself. Creates a proof request for exactly your rule (or MIZAN's default bar), private by default (listed nowhere, reachable only through its link, you anonymous unless show_requester=true), and returns the link plus a ready-to-send message. MIZAN never contacts the counterparty; you send it. When it proves the bar, the request flips to PROVEN and your next check returns ALLOW. Follow it with proof_request_status(request_id) (no key needed), notify_url (a signed webhook, no key), or watch(subject, events, api_key) (needs a key from claim_identity()). The reply says what the bar takes (what_it_takes). Free. Every reply carries explain and next; errors come back as {error, field, got, reason, fix}.","inputSchema":{"additionalProperties":true,"properties":{"amount":{"anyOf":[{"minimum":0,"type":"number"},{"type":"string"}],"description":"Optional amount you would pay, stated by you and labelled unverified."},"api_key":{"description":"Optional MIZAN key (mzn_…): to be named (show_requester), to list your requests, and to watch().","type":"string"},"confirm":{"default":false,"description":"Only for a rule in plain words: true once its read-back says what you mean.","type":"boolean"},"currency":{"description":"Optional, e.g. USD or USDC.","maxLength":12,"type":"string"},"notify_url":{"description":"Optional public https URL: a signed webhook when the counterparty proves the bar.","maxLength":500,"type":"string"},"purpose":{"description":"Optional: what the payment is for, in a few words.","maxLength":120,"type":"string"},"rule":{"anyOf":[{"type":"string"},{"type":"object"}],"description":"Optional: the exact bar it must prove — the JSON rule require() returned, a published req_…@v, or plain words (then confirm=true). Without a rule: MIZAN's default bar (a passing credential in good standing)."},"show_requester":{"default":false,"description":"Name yourself on the request (needs api_key). Default: anonymous.","type":"boolean"},"subject":{"description":"The counterparty you want to pay or hire: an agent id, company domain, service URL, credential id, or a public AI model (model:<org>/<name>).","maxLength":300,"minLength":1,"type":"string"}},"required":["subject"],"type":"object"},"name":"request_proof"},{"description":"Call when you know what you need from a counterparty and want it as an exact rule before you check anyone. Write the bar in plain words (words=...) or as structured JSON (rule=..., schema: resource mizan://schemas/requirement-rule-v2.json or https://studio.mizan.market/app/schemas/requirement-rule-v2.schema.json); both give the same rule and the same hash. Returns the exact rule, a read-back in plain English to confirm it means what you meant, its hash, whether it can be published, and suggestions when some words were not understood. Ready-made bars: the library resources (mizan://library/...). Then call check(subject, rule=<the rule>). Free. Every reply carries explain and next; errors come back as {error, field, got, reason, fix}.","inputSchema":{"additionalProperties":true,"properties":{"api_key":{"description":"Your MIZAN key (mzn_…), only to publish. claim_identity() gives one in one call.","type":"string"},"name":{"description":"A name for a published rule (stored beside the rule, outside its hash).","maxLength":120,"type":"string"},"publish":{"default":false,"description":"Publish the rule as a versioned requirement others can adopt (needs api_key). Publishable says first whether it can be published today.","type":"boolean"},"rule":{"description":"Or the same bar as structured JSON: {\"core\": \"mizan-req-core/2\", \"rule\": {...}}. Schema: https://studio.mizan.market/app/schemas/requirement-rule-v2.schema.json (also the MCP resource mizan://schemas/requirement-rule-v2.json). Words and JSON for the same bar give the same rule and the same hash.","type":"object"},"visibility":{"default":"public","enum":["public","private"],"type":"string"},"words":{"description":"Your bar in plain words, e.g. \"forward record 180 days, sharpe at least 1.3, max drawdown at most 25%, company domain\". Words MIZAN cannot read are refused with the reason and suggestions, never guessed.","maxLength":1000,"type":"string"}},"type":"object"},"name":"require"}]},"body_sha256":"d839361057490ad829864cd912222a19fb98514963079e3fb10967d9cb3a5c88","prev_id":264345,"leaf":"0x3249591742e348b3078be8e81b71dfe6176ac4005587e3ae253506424b5b1708","leaf_text":"{\"body\":\"d839361057490ad829864cd912222a19fb98514963079e3fb10967d9cb3a5c88\",\"id\":772098,\"kind\":\"mcp.tools\",\"method\":\"probe.mcp/1\",\"observed_us\":1793192669433697,\"prev\":264345,\"subject\":\"abb0e46f-f565-41fb-8dfb-39cb8fdf2e29\",\"subject_kind\":\"endpoint\"}","day":{"day":"2026-10-28","leaves":231336,"root":"0x2c19037464cc4c493624565f01775d6446fc78eaa118fc6865bfe2bfca9ff78e","chained":"0xd1d7dee8322ceff8f4c8d83aa1fe4a4466825c2af1c97dbde3d35db61234f7be","anchor_chain":"eip155:5042002","anchor_tx":"0x8bae2b1d097834c8b458513862d70d29ee807e98dc2e863b27250131c15b35ae","anchor_block":69584042},"proof":["0x324975afd54b9453d23242fe6046c2b800816ee3f166bf5b6df68ddb06318407","0x1d93a7d287652589c09d78093be1ebc844a7f601482799a07d9c4cfbf10297a1","0x8d088ae03c1c18cd93f035fb741854c4ee44da67744c1dc9fd51bd3eafb9461b","0xb3202545676e23407d87f0fff76d85e62a649161b892f030d69f922e7df51298","0xe3a9330b49460f34649ca8eea84755dda04365a6bcefa9b872b3f865a19aa373","0x609a685a124d0b1bbc57ed7a120d865f0b4625c3eecdf739244f3e249604d72b","0xf8d6ec597a46e111d09bdfbba1ee60ade0319eeedc2aaf463bb8896a984aca17","0x78da38f7a6fb9e3e322a7154f51f310782b63094ad6ee048f83f67d0c0213f07","0x8e9980bc4c034627d7e4f4a5b575db111254b3cd79b46f592b231380e68255a5","0x902548fc46d1be5d9bf9dc424033bc6f14c1784b6955a66f2130015016a637ed","0x48e9ae9a675edb4c56750553ac60b9585b9cdd956d2b40ba0953a15337c477ad","0x095e81ff2fd1fe987427755f11378bace03cd06f4567685ad352fec0da5f5e82","0x3d9df6153e051ebcdc2683b4402faae304acff7f1f03a085bddf9ad34187f068","0xa96695bb231e3cabeb4f03cab216cc6730b71e2304bf5be1e6c0447ea577aae6","0x8d500b42a7bdba5e17ebd9e6a404f2de5260cf3420865b41e7de8c69434ce413","0xaeb1503e5d0d358b256ba97a10178c357ddb8f55cc961925ccf0458aae5ebcae","0xf078ea7d84d98dbeffed23d8e67b36751e60464ffd4cfdc005e0aa6f8cb9b459","0xe027395fafb7fc41921c42ca0542524ea22204cbd5908b70b27f3d5fb26f5d0f"]}