{"openapi":"3.1.0","info":{"title":"MONARK harness — HTTP/JSON mirror","version":"0.4.0","description":"Plain-JSON mirror of the MONARK MCP harness (attest, gate, cascade, calibrate). Same frozen contracts as the MCP surface; derived from the frozen schemas, never hand-written. The gate only emits a decision; it never calls the named tool."},"servers":[{"url":"https://api.monarkgate.tech"}],"paths":{"/gate":{"post":{"operationId":"gate","summary":"Run the gate operation (JSON mirror of the MCP tool).","description":"Coverage-gated decision from the real HIKAE L3 policy (commit/defer/abstain) over a caller-carried authorization budget B_t. Dispatches on task_class. For 'btc-dir-15m' it conformalizes against a committed synthetic calibration derived from the HIKAE S2a instrument (seed 101, n=300 draw), declared synthetic — a plumbing fixture, not a measured predictor. For 'cascade-liquidable-24h' no cascade calibration is committed; the gate abstains (under_calib) on this class. For 'stable-run-velocity-24h' (Narabi: a redemption-flow velocity forecast) the gate holds a committed stable-run velocity calibration for the USDe synthetic-dollar-whitelisted-redeem population (key narabi:persistence-v2@eip155:1/erc20:0x4c9edd5852cd905f086c759e8383e09bff1e68b3) over calm-window redemption flow; coverage is stated under the split-conformal bound of Barber, Candes, Ramdas and Tibshirani 2023 (Thm 2, unit weights): at least 1 − α minus the average total-variation gap between calibration windows and the next one; that gap is not estimated here and the calibration is measured non-stationary across half-years, so 1 − α is the coverage only if that gap is zero (exchangeability), which is not assumed here; no coverage is measured; for any other population, no stable-run velocity calibration is committed for this population; the gate abstains (under_calib). For 'liquidation-eligible-coverage' (Ukemi: a per-account liquidable-amount class, class A only) the served region is a conformal upper bound on the liquidable amount for the calibrated class; the lower edge is 0 by construction, not a calibrated bound; abstains (under_calib) outside it; this class requires alpha = 0.01, nMin = 100; calibrated on one recorded episode; no coverage is claimed on any other event; the H-3 exchangeability check is a report, a YES licenses nothing more; the bound holds only if yhat was produced by the frozen close-factor rule on a mono-collateral WETH account at the first crossing, which the gate does not check. When the caller instead supplies a `calibration` (its own nonconformity scores plus a `mode`: `interval` ⇒ region [yhat - q̂, yhat + q̂], or `set` ⇒ a conformal set over caller `candidates`), the gate conformalizes against THOSE caller-supplied scores (BYO): split-conformal quantile at miscoverage α over caller-supplied nonconformity scores. MONARK does not see, store, or verify the caller's data or model, and does not validate that the supplied numbers are nonconformity scores of any model. Marginal 1−α coverage holds ONLY for future points exchangeable with the supplied scores; non-exchangeable data (e.g. distribution-shifted or time-ordered) voids it. Never a probability of being right. A caller-carried `attested` price must declare a subject consistent with the committed task class (exact committed-URL membership; BYO classes do not accept `attested` in P1); the attestation is carried by the caller and is not re-verified at call time (the verifier is not executed here); `attest` only projects the committed witness — verify a caller-carried attestation offline with the Shōgen verifier; no temporal binding in P1. The gate only emits a decision; it never calls the named tool.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["prediction","params"],"properties":{"prediction":{"type":"object","additionalProperties":false,"required":["schema_version","task_class","yhat","predictor_id","produced_at"],"properties":{"schema_version":{"type":"string","pattern":"^\\d+\\.\\d+\\.\\d+$"},"task_class":{"type":"string","pattern":"^[ -~]+$","minLength":1},"yhat":{"type":["string","number"]},"predictor_id":{"type":"string","pattern":"^[ -~]+$","minLength":1},"produced_at":{"type":"string","format":"date-time"},"features_digest":{"type":"string","pattern":"^[0-9a-f]{64}$"}}},"params":{"type":"object","additionalProperties":false,"required":["remainingBudget","bFloor","tau","tauInterval","alpha","nMin","intent","tool","clockOpen"],"properties":{"remainingBudget":{"type":"number","description":"B_t — remaining authorization capacity (caller-owned, D6)."},"bFloor":{"type":"number","description":"B_floor threshold (>= 0)."},"tau":{"type":"number","description":"Set-size threshold for the `set` path (>= 0)."},"tauInterval":{"type":"number","description":"Width threshold for the `interval` path (>= 0)."},"alpha":{"type":"number","description":"Target miscoverage in (0,1)."},"nMin":{"type":"integer","description":"Minimum calibration count (>= 1)."},"intent":{"type":["string","number","null"],"description":"The intent tested against the region."},"tool":{"type":"string","description":"The NAMED gated tool (echoed, never invoked — D0/D1)."},"clockOpen":{"type":"boolean","description":"Whether the coverage window is still open (caller-owned)."},"calibration":{"type":"object","additionalProperties":false,"required":["scores","mode"],"description":"OPTIONAL BYO calibration (ADR-M007 D7): caller-supplied nonconformity scores + region mode. Present ⇒ the gate conformalizes on the caller's model, not a committed class.","properties":{"scores":{"type":"array","items":{"type":"number"},"maxItems":10000,"description":"Caller-supplied nonconformity scores (interval mode requires all >= 0)."},"mode":{"type":"string","enum":["interval","set"],"description":"`interval` ⇒ region [yhat - q̂, yhat + q̂]; `set` ⇒ conformal set over `candidates`."},"candidates":{"type":"array","maxItems":10000,"description":"Set-mode candidate labels with their nonconformity scores (required and non-empty when mode = set).","items":{"type":"object","additionalProperties":false,"required":["label","score"],"properties":{"label":{"type":"string","description":"Candidate label (printable ASCII, unique, no `|`)."},"score":{"type":"number","description":"The candidate's nonconformity score."}}}}}}}},"attested":{"type":"object","additionalProperties":false,"required":["schema_version","subject","attestor","residual","transport","utterance","observed_at","octets_recalcules","verifier_revision"],"properties":{"schema_version":{"type":"string","pattern":"^\\d+\\.\\d+\\.\\d+$"},"subject":{"type":"string","pattern":"^[ -~]+$","minLength":1},"attestor":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"object","additionalProperties":false,"required":["identity","key"],"properties":{"identity":{"type":"string","pattern":"^[ -~]+$","minLength":1},"key":{"type":"string","pattern":"^([0-9a-f]{2})+$"}}}},"residual":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string","pattern":"^[ -~]+$","minLength":1}},"transport":{"type":"string","pattern":"^[ -~]+$","minLength":1},"utterance":{"type":"object","additionalProperties":false,"required":["hash"],"properties":{"hash":{"type":"string","pattern":"^[0-9a-f]{64}$"},"bytes":{"type":"string","pattern":"^([0-9a-f]{2})*$"}}},"observed_at":{"type":"object","additionalProperties":false,"required":["clock","instant"],"properties":{"clock":{"type":"string","pattern":"^[ -~]+$","minLength":1},"instant":{"type":"integer","minimum":0}}},"octets_recalcules":{"type":"boolean"},"verifier_revision":{"type":"string","pattern":"^[ -~]+$","minLength":1},"sens_emis_digest":{"type":"string","pattern":"^[0-9a-f]{64}$"}}}}}}}},"responses":{"200":{"description":"The frozen structuredContent plus the honesty content text (K-1).","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["structuredContent","content"],"properties":{"structuredContent":{"type":"object","additionalProperties":false,"required":["schema_version","action","allow","tool","intent","verdict","remaining_budget","reason"],"properties":{"schema_version":{"type":"string","pattern":"^\\d+\\.\\d+\\.\\d+$"},"action":{"enum":["commit","defer","abstain"]},"allow":{"type":"boolean"},"tool":{"type":"string","pattern":"^[ -~]+$","minLength":1},"intent":{"type":["string","number","null"]},"verdict":{"type":"object","additionalProperties":false,"required":["schema_version","task_class","method","alpha","n_calib","region","qhat","abstain","reason","residual","calib_digest","produced_at"],"properties":{"schema_version":{"type":"string","pattern":"^\\d+\\.\\d+\\.\\d+$"},"task_class":{"type":"string","pattern":"^[ -~]+$","minLength":1},"method":{"enum":["split","hac-cp"]},"alpha":{"type":"number","exclusiveMinimum":0,"exclusiveMaximum":1},"n_calib":{"type":"integer","minimum":0},"region":{"oneOf":[{"type":"object","additionalProperties":false,"required":["kind","labels","label_schema"],"properties":{"kind":{"const":"set"},"labels":{"type":"array","items":{"type":"string","pattern":"^[ -~]+$"}},"label_schema":{"type":"string","pattern":"^[ -~]+$","minLength":1}}},{"type":"object","additionalProperties":false,"required":["kind","lo","hi"],"properties":{"kind":{"const":"interval"},"lo":{"type":"number"},"hi":{"type":"number"}}}]},"qhat":{"type":["number","null"]},"abstain":{"type":"boolean"},"reason":{"enum":["covered","set_too_large","interval_too_wide","intent_not_in_region","under_calib","no_label_schema","budget_exhausted","clock_expired","upstream_timeout","attestation_absent","attestation_refused","binding_broken","non_evaluable"]},"residual":{"type":"array","items":{"type":"string","pattern":"^[ -~]+$"}},"scores":{"type":"array","items":{"type":"number"}},"calib_digest":{"type":"string","pattern":"^[0-9a-f]{64}$"},"produced_at":{"type":"string","format":"date-time"}}},"remaining_budget":{"type":"number"},"reason":{"enum":["covered","set_too_large","interval_too_wide","intent_not_in_region","under_calib","no_label_schema","budget_exhausted","clock_expired","upstream_timeout","attestation_absent","attestation_refused","binding_broken","non_evaluable"]}}},"content":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["type","text"],"properties":{"type":{"const":"text"},"text":{"type":"string"}}}}}}}}},"400":{"description":"Input failed the frozen schema, or the tool refused the input (never a silent result)."},"403":{"description":"Origin present and not a monarkgate.tech origin (K-9)."}}}},"/cascade":{"post":{"operationId":"cascade","summary":"Run the cascade operation (JSON mirror of the MCP tool).","description":"Estimated liquidable amount from the real UKEMI cascade primitives (imported, never re-implemented): an Eisenberg-Noe clearing of the interbank system (L, e) with alpha=beta=1 yields the largest clearing vector L*; each node is then read as a leveraged position — collateral is its cleared balance-sheet value (external assets plus interbank receipts under L*), debt is its nominal obligations, liquidation threshold K=1 — and liquidableAmount sums the debts of the nodes whose cleared value, once shocked by the caller-carried 24h fraction, no longer covers their obligations. Shocking the whole cleared value is a v0 simplification; no source supports shocking interbank receivables. yhat is that liquidable amount: a monetary quantity in the reference asset, a single point that HIKAE conformalizes downstream — no guarantee, no score. Downstream, no cascade calibration is committed; the gate abstains (under_calib) on this class. This cascade tool is v0, replaced at U-5.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["L","e","shock","producedAt"],"properties":{"L":{"type":"array","description":"Nominal interbank liabilities matrix L[i][j] = what node i owes node j. Square, entries >= 0, zero diagonal.","maxItems":64,"items":{"type":"array","items":{"type":"number"},"maxItems":64}},"e":{"type":"array","description":"External assets (liquidation value) per node at the clearing date. One value per node.","maxItems":64,"items":{"type":"number"}},"shock":{"type":"number","description":"24h collateral price shock fraction in [0,1] — a declared fixture parameter, not a dynamics model."},"producedAt":{"type":"string","description":"Caller-carried RFC3339 instant, injected for hash stability (D4); the tool reads no clock."}}}}}},"responses":{"200":{"description":"The frozen structuredContent plus the honesty content text (K-1).","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["structuredContent","content"],"properties":{"structuredContent":{"type":"object","additionalProperties":false,"required":["schema_version","task_class","yhat","predictor_id","produced_at"],"properties":{"schema_version":{"type":"string","pattern":"^\\d+\\.\\d+\\.\\d+$"},"task_class":{"type":"string","pattern":"^[ -~]+$","minLength":1},"yhat":{"type":["string","number"]},"predictor_id":{"type":"string","pattern":"^[ -~]+$","minLength":1},"produced_at":{"type":"string","format":"date-time"},"features_digest":{"type":"string","pattern":"^[0-9a-f]{64}$"}}},"content":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["type","text"],"properties":{"type":{"const":"text"},"text":{"type":"string"}}}}}}}}},"400":{"description":"Input failed the frozen schema, or the tool refused the input (never a silent result)."},"403":{"description":"Origin present and not a monarkgate.tech origin (K-9)."}}}},"/attest":{"post":{"operationId":"attest","summary":"Run the attest operation (JSON mirror of the MCP tool).","description":"projection of a committed Shōgen-verified witness (Binance BTCUSDT, self-notarized); the verifier is NOT executed at call time.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{}}}}},"responses":{"200":{"description":"The frozen structuredContent plus the honesty content text (K-1).","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["structuredContent","content"],"properties":{"structuredContent":{"type":"object","additionalProperties":false,"required":["price","provenance","label"],"properties":{"price":{"type":"object","additionalProperties":false,"required":["schema_version","subject","attestor","residual","transport","utterance","observed_at","octets_recalcules","verifier_revision"],"properties":{"schema_version":{"type":"string","pattern":"^\\d+\\.\\d+\\.\\d+$"},"subject":{"type":"string","pattern":"^[ -~]+$","minLength":1},"attestor":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"object","additionalProperties":false,"required":["identity","key"],"properties":{"identity":{"type":"string","pattern":"^[ -~]+$","minLength":1},"key":{"type":"string","pattern":"^([0-9a-f]{2})+$"}}}},"residual":{"type":"array","minItems":1,"uniqueItems":true,"items":{"type":"string","pattern":"^[ -~]+$","minLength":1}},"transport":{"type":"string","pattern":"^[ -~]+$","minLength":1},"utterance":{"type":"object","additionalProperties":false,"required":["hash"],"properties":{"hash":{"type":"string","pattern":"^[0-9a-f]{64}$"},"bytes":{"type":"string","pattern":"^([0-9a-f]{2})*$"}}},"observed_at":{"type":"object","additionalProperties":false,"required":["clock","instant"],"properties":{"clock":{"type":"string","pattern":"^[ -~]+$","minLength":1},"instant":{"type":"integer","minimum":0}}},"octets_recalcules":{"type":"boolean"},"verifier_revision":{"type":"string","pattern":"^[ -~]+$","minLength":1},"sens_emis_digest":{"type":"string","pattern":"^[0-9a-f]{64}$"}}},"provenance":{"type":"object","additionalProperties":false,"required":["source_lot_sha256","source_verdict_sha256","shogen_head_sha"],"properties":{"source_lot_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"sha256 of the committed witness lot (CBOR), recomputed from the bytes."},"source_verdict_sha256":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"sha256 of the committed verifier output (UTF-8), recomputed from the bytes."},"shogen_head_sha":{"type":"string","pattern":"^[0-9a-f]{40}$","description":"Source revision the fixtures were extracted from (pinned)."}}},"label":{"type":"string","description":"Honesty label carried OUTSIDE the frozen price (K-1): the witness is demonstrative, not probative."}}},"content":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["type","text"],"properties":{"type":{"const":"text"},"text":{"type":"string"}}}}}}}}},"400":{"description":"Input failed the frozen schema, or the tool refused the input (never a silent result)."},"403":{"description":"Origin present and not a monarkgate.tech origin (K-9)."}}}},"/calibrate":{"post":{"operationId":"calibrate","summary":"Run the calibrate operation (JSON mirror of the MCP tool).","description":"split-conformal quantile at miscoverage α over caller-supplied nonconformity scores. MONARK does not see, store, or verify the caller's data or model, and does not validate that the supplied numbers are nonconformity scores of any model. Marginal 1−α coverage holds ONLY for future points exchangeable with the supplied scores; non-exchangeable data (e.g. distribution-shifted or time-ordered) voids it. Never a probability of being right.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["scores","alpha","nMin"],"properties":{"scores":{"type":"array","description":"Caller-supplied nonconformity scores (BYO: the caller owns the score function; MONARK stays agnostic).","maxItems":10000,"items":{"type":"number"}},"alpha":{"type":"number","description":"Target miscoverage in the open interval (0,1)."},"nMin":{"type":"integer","description":"Minimum calibration count (>= 1); n < nMin fails closed to under_calib."}}}}}},"responses":{"200":{"description":"The frozen structuredContent plus the honesty content text (K-1).","content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"required":["structuredContent","content"],"properties":{"structuredContent":{"type":"object","additionalProperties":false,"required":["qhat","n","alpha","method","set_digest","label","reason"],"properties":{"qhat":{"type":["number","null"],"description":"The conformal quantile q̂, or null when the calibration is insufficient (fail-closed)."},"n":{"type":"integer","description":"The number of supplied scores (echoed)."},"alpha":{"type":"number","description":"The target miscoverage (echoed)."},"method":{"const":"split","description":"The conformal method — always split."},"set_digest":{"type":"string","pattern":"^[0-9a-f]{64}$","description":"calibDigest(scores): recalculable by reference; the audit tie to verdict.calib_digest (C2)."},"label":{"type":"string","description":"Honesty label (K-1): the marginal coverage holds only under exchangeability with the supplied scores."},"reason":{"type":["string","null"],"description":"under_calib when q̂ is null, else null on success."}}},"content":{"type":"array","items":{"type":"object","additionalProperties":false,"required":["type","text"],"properties":{"type":{"const":"text"},"text":{"type":"string"}}}}}}}}},"400":{"description":"Input failed the frozen schema, or the tool refused the input (never a silent result)."},"403":{"description":"Origin present and not a monarkgate.tech origin (K-9)."}}}}}}