{"service_id":"health-guard","name":"Health Shield","category":"health_factor","category_job":"Protect a loan","what_you_get":"A persistent watch over one BSC address's Venus Core Pool lending position, and the read-only report it is built on. Venus publishes liquidity and shortfall in USD and publishes no health factor at all — so you get its own two figures verbatim, with the call and the block they came from, and a collateral ratio computed here whose exact formula, inputs and scales are stated inline beside it, together with a cross-check of that derivation against Venus's own liquidity figure so you can see whether the two agree. For every market the account has entered: supplied and borrowed balances, the collateral factor, the exchange rate and the oracle price, each labelled with the call that produced it. Each cycle the derived ratio is compared against the floor you set, and when it falls below you get an alert carrying the smallest remedy that returns it above the line — a repay in one borrowed market, or a collateral add — with the integer arithmetic that sized it and the ratio recomputed after it. The remedy is prepared as exact calls: an approval for the exact amount and never unlimited, then repayBorrowBehalf on the vToken, which is the one Venus function a third party may call on a borrower's account. Supplying collateral has no such form — mint credits whoever sends it — so a collateral add is reported for you to sign from your own wallet and is never offered for Docket to execute. Borrow and withdraw are encoded nowhere in this service. The approval is put to the chain as an eth_call and a gas estimate before it is offered; the call that spends under it is marked as waiting on that approval rather than tested against a state that does not exist, and every call is simulated again from its real sender immediately before it is sent. A batch the chain refuses comes back as an alert rather than reaching a signer. You sign the calls yourself, or grant a bounded session — a contract allowlist, a per-token cap, a gas ceiling and an expiry, all checked by Docket before every send rather than enforced by a chain, so what really bounds your exposure is how much you fund the session with. Pause the watch or revoke the session whenever you choose; revoking sweeps the session balance back to you. Every figure comes back with the block it was read at, so you can check any of it against the chain yourself.","price_display":"0.50 USDT","price_atomic":"500000000000000000","asset":"0x55d398326f99059fF775485246999027B3197955","paid_stock":false,"stock_status":"preview","admission":{"fresh_paired_benchmark":false,"cold_canary":false,"decision_grade_presenter":true,"true_settlement":false},"admission_evidence":{"fresh_paired_benchmark":"no v3 family registered for health-guard is in a terminal state among ['complete_unscored', 'refuted', 'not_refuted']; no v1 experiment names health-guard on a complete pair of arms","cold_canary":"no canary run has ever been recorded for this service","decision_grade_presenter":"stated for this service in docket/hire/catalogue.py: it is a property of how a result is written, which nothing in the store observes","true_settlement":"no hire_payments row for health-guard has reached 'settled'. A row left at 'settlement_unknown' is a payment whose facilitator answer never came back and is not counted","window":"a paired benchmark stays fresh for 30 days from its own observation date; a canary for 129600 seconds from its finish"},"typical_seconds":40,"activation":"policy_action","activation_means":"One-shot activations return read-only reports. Funded sessions are separate: the runner checks your policy in software before submitting actions. The policy is not enforced by the session account on chain.","evidence_modality":"live_read","metrics":[{"name":"Entered markets carrying a borrow","unit":"entered markets read","window":"single recorded read; no paired run against a person; one wallet across 2 entered Venus Core Pool markets","observed_at":"2026-08-22T16:05:41.904205+00:00","method":"The catalogue health-guard runner read Unitroller.getAccountLiquidity, getAssetsIn, each entered vToken snapshot, and the current Venus oracle; the service stamped the read at BSC block 117453014.","value":null,"numerator":1,"denominator":2,"display":"1 of 2 entered markets read"}],"agent_id":"56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:311259","identity":"Bound to the BSC ERC-8004 agent 56:0x8004a169fb4a3325136eb29fa0ceb6d2e539a432:311259. This registration is not an endorsement, evidence of paid stock, or evidence that the service produced a result.","hire_method":"POST","hire_path":"/hire/health-guard","registration_uri":"https://docket.gudman.xyz/registrations/health-guard.json","input_schema":{"wallet":{"type":"string","required":true,"default":"0xe55816904796341bf8535e25f6c8b647927fc946","example_note":"Docket's controlled wallet has no Venus position, so the honest result is no position — replace with your address","description":"the 0x-prefixed BSC address whose Venus position to read; it is read and never touched"},"trigger_shortfall_usd":{"type":"integer","required":false,"default":1000000000000000000,"description":"the shortfall Venus has to be reporting, 1e18-scaled USD as the comptroller reports it, before any action is drafted; zero is refused"},"observation_block":{"type":"integer","required":false,"advanced":true,"description":"read this account at this BSC block instead of the latest one. Every call behind the answer is pinned to it — the comptroller, each vToken's snapshot, the collateral factors and the oracle prices — so two readers at different times get the same result. Give it when the answer has to be reproducible. Public dataseeds prune, so a deployment without an archive endpoint refuses a pinned read with observation_block_unsupported rather than answering about the head, and a block the reachable nodes no longer hold is a stated read failure rather than an empty account"},"source_refs":{"type":"array","items":{"type":"object"},"required":false,"advanced":true,"description":"the frozen typed source references bound to this observation. They are echoed back under sources so a recorded pair carries the evidence it was answered against"},"min_collateral_ratio":{"type":"number","required":false,"default":1.25,"description":"the floor the watch holds the DERIVED collateral ratio to, as a multiple of the debt. Venus publishes no health factor; this is Docket's own ratio, and the formula that computes it travels with every answer. 1.0 is the point at which the weighted collateral exactly covers the debt"},"mode":{"type":"string","required":false,"default":"repay","description":"which remedy to size: repay, add_collateral, or either. Under either a repay is tried first, because it is the only one of the two a bounded session can complete for you — supplying collateral credits whoever sends it, so it is always yours to sign"},"allowed_vtokens":{"type":"array","items":{"type":"string"},"required":false,"required_for_watch":true,"example":["0xfD5840Cd36d94D7229439859C0112a4185BC0255","0xecA88125a5ADbe82614ffC12D0DB554E2e2867C8"],"description":"required by a persistent watch and never defaulted: a market list Docket chose for you is a permission you did not grant. A one-off report needs none, and a watch without one sizes nothing. the Venus Core Pool vTokens a remedy may be sized in. The native market is refused: vBNB takes repayBorrowBehalf(address) with the amount as BNB value, which is a different function from the one this service encodes"},"max_rescue_atomic":{"type":"object","required":false,"required_for_watch":true,"example":{"0x55d398326f99059fF775485246999027B3197955":100000000000000000000,"0x8AC76a51cc950d9822D68b83fE1Ad97B32Cd580d":100000000000000000000},"description":"required by a persistent watch and never defaulted: a spend ceiling Docket chose for you is a cap you did not set. A one-off report needs none, and a watch without one sizes nothing. the largest remedy permitted per underlying token, keyed by that token's address in its own atomic units. A remedy above the cap is reported with the amount that was refused rather than trimmed to fit"}},"limitations":"Venus Core Pool on BSC and nothing else: no Isolated Pools, no other lending market, no other chain. Venus publishes no health factor — it publishes liquidity and shortfall in USD — so the collateral ratio in the report is derived here rather than read, and it carries its formula, its inputs and its scales inline; anybody looking for Aave's figure is looking for a number this protocol never produced. Only the markets getAssetsIn reports the account has entered are read, which is the same set the comptroller itself iterates, so a supply in a market the account never entered is not collateral and does not appear. Prices come from whichever oracle the comptroller currently names, Docket never holds a key to your wallet and cannot sign for it. Prepared calls are yours to sign unless you grant a session key. That key is created by Docket and bounded by a contract allowlist, a per-token cap, a gas ceiling and an expiry you set — but those are checks Docket runs in front of every send, not rules a chain enforces, so what actually caps your exposure is how much you fund the session with. Fund it with what you are willing to lose to a bug. Revoking it sweeps its balance back to you at any time. Your borrower account is never transferred to Docket and nothing is custodied on your behalf: a repay is repayBorrowBehalf, which pays your debt down out of the session's own tokens and moves nothing of yours. Supplying collateral has no on-behalf form at all — mint credits whoever calls it — so a collateral add is always yours to sign, is reported rather than offered for execution, and a session is never permitted to send one. Every approval is for an exact amount and never unlimited. The approval is put to the chain before it is offered; the call that spends under it is marked as waiting on that approval rather than simulated against a state that does not exist, and every call is simulated again from its real sender immediately before it is sent. Venus caps a repay at what is owed rather than reverting and signals failure by returning an error code rather than reverting, so a mined transaction is not by itself evidence of how much was retired; that is read from the next account snapshot. Remedies are repay and supply-collateral only; borrowing and withdrawing are not encoded and no argument produces one. A remedy changes a balance Venus holds at the block it lands in and establishes nothing about a liquidation that did not happen, because that is a claim about a world nobody observed. A single recorded read; no paired run against a person stands behind the metrics on this card.","evidence":[{"kind":"advantage_task","url":"/services/health-guard","label":"Task 05 — single recorded read summary; the full committed JSON is docket/advantage/recorded_runs/05-health-guard-read.json and is not exposed by a public artifact route in this build"}],"agent_path":null,"identity_note":"The snapshot Docket serves does not hold this agent, so there is no /agents record to open for it here. Docket's default sweep covers the agents carrying at least one feedback record, which is a small slice of the registry — an identity outside that slice is registered on chain and is simply not in what Docket indexed."}