addrbookFor publishers
← The evidence ledger

Evidence row 1002291

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint fcc9479e-a631-4b19-8a70-85ed9772b709
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
047482fbd024bf807a4ce68f42d03cbf06057c0650cabd7a470520e19df4c3cb
Leaf
0xfacd3599a30543b8d659ae17b762213b002003b7f416c3cd70a67f8638af9f9a

What was observed

{
  "count": 26,
  "tools": [
    {
      "description": "The unsigned calldata to repay USDG debt: approve to Blue (when short) + repay(marketParams, usdg, 0, account, 0x), or for 'all'\n        repay by the exact share debt (no dust; the approval carries 0.1% headroom for interest until the tx lands), with the post-action\n        HF / LTV. nothing_to_repay, exceeds_debt, insufficient_balance are answers. Repay reads no oracle: it works while the oracle is\n        unavailable. You send it with the account's own owner key; this server never sends.",
      "inputSchema": {
        "properties": {
          "account": {
            "title": "Account",
            "type": "string"
          },
          "market": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Market"
          },
          "usdg": {
            "default": "all",
            "title": "Usdg",
            "type": "string"
          }
        },
        "required": [
          "account"
        ],
        "title": "borrow_repay_quoteArguments",
        "type": "object"
      },
      "name": "borrow_repay_quote"
    },
    {
      "description": "Share Lending, BORROW side: the Morpho Blue market that takes hhNVDA-CC fund shares as collateral for USDG — id (discovered from\n        the lending vault at each call; the mainnet market is being migrated to a new oracle), LLTV, the ShareRiskOracle price and status\n        (live / held / unavailable), borrow rate, utilization, supply, borrowed, available — and `my`: collateral, debt (interest to now),\n        borrowing power, health factor, LTV and the liquidation price. Positions left on another market show under otherPositions;\n        `market` selects one. Rule: keep LTV at or below 70% of LLTV. Read-only; nothing is sent.",
      "inputSchema": {
        "properties": {
          "account": {
            "title": "Account",
            "type": "string"
          },
          "market": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Market"
          }
        },
        "required": [
          "account"
        ],
        "title": "borrow_statusArguments",
        "type": "object"
      },
      "name": "borrow_status"
    },
    {
      "description": "The unsigned calldata to post `shares` fund shares (a decimal or 'all' of the wallet) as collateral: approve to Blue (when the\n        allowance is short) + supplyCollateral(marketParams, shares, account, 0x), with the position before and after (HF, LTV). No\n        oracle read. insufficient_balance when the wallet holds fewer shares (shares still in the fund's redemption queue do not count).\n        You send it with the account's own owner key; this server never sends.",
      "inputSchema": {
        "properties": {
          "account": {
            "title": "Account",
            "type": "string"
          },
          "market": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Market"
          },
          "shares": {
            "title": "Shares",
            "type": "string"
          }
        },
        "required": [
          "account",
          "shares"
        ],
        "title": "borrow_supply_collateral_quoteArguments",
        "type": "object"
      },
      "name": "borrow_supply_collateral_quote"
    },
    {
      "description": "The unsigned calldata to borrow `usdg` USDG against posted collateral: borrow(marketParams, usdg, 0, account, account), with the\n        post-action HF / LTV and a `warning` when the resulting LTV is above 70% of LLTV. Refused with oracle_stale when the ShareRiskOracle\n        is fail-closed (Blue cannot price the collateral), unhealthy when HF would drop below 1 (with the most you could add),\n        insufficient_liquidity when the market lacks the USDG. You send it with the account's own owner key; this server never sends.",
      "inputSchema": {
        "properties": {
          "account": {
            "title": "Account",
            "type": "string"
          },
          "market": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Market"
          },
          "usdg": {
            "title": "Usdg",
            "type": "string"
          }
        },
        "required": [
          "account",
          "usdg"
        ],
        "title": "borrow_take_quoteArguments",
        "type": "object"
      },
      "name": "borrow_take_quote"
    },
    {
      "description": "The unsigned calldata to take fund shares back from Blue: withdrawCollateral(marketParams, shares, account, account), with the\n        post-action HF / LTV and the 70%-of-LLTV warning. Refused with unhealthy when the remaining collateral would not cover the debt,\n        oracle_stale when there is debt and the oracle is fail-closed (no debt: no oracle read, always allowed), insufficient_collateral.\n        You send it with the account's own owner key; this server never sends.",
      "inputSchema": {
        "properties": {
          "account": {
            "title": "Account",
            "type": "string"
          },
          "market": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Market"
          },
          "shares": {
            "default": "all",
            "title": "Shares",
            "type": "string"
          }
        },
        "required": [
          "account"
        ],
        "title": "borrow_withdraw_collateral_quoteArguments",
        "type": "object"
      },
      "name": "borrow_withdraw_collateral_quote"
    },
    {
      "description": "The quote that exits `account`'s open position in `instrument` before expiry: reads the position, takes the opposite\n        side (long -> sell, short -> buy), size = min(|position|, quantity or the whole position), and returns the desk's signed\n        quote with the fillOrderAs calldata in fill.send. You must send it with your own key before validUntil\n        (`hedgehood close <instrument> --send` or the npm MCP's close_position); this server never sends. nothing_to_close\n        when the account is flat there; a close_only:* refusal from the desk is returned with its reason.",
      "inputSchema": {
        "properties": {
          "account": {
            "title": "Account",
            "type": "string"
          },
          "instrument": {
            "title": "Instrument",
            "type": "string"
          },
          "quantity": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Quantity"
          },
          "session_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Session Key"
          }
        },
        "required": [
          "account",
          "instrument"
        ],
        "title": "close_quoteArguments",
        "type": "object"
      },
      "name": "close_quote"
    },
    {
      "description": "The ERC-8004 Identity Registry record of an agent id and the accounts seen trading under it.",
      "inputSchema": {
        "properties": {
          "agent_id": {
            "title": "Agent Id",
            "type": "integer"
          }
        },
        "required": [
          "agent_id"
        ],
        "title": "get_agent_recordArguments",
        "type": "object"
      },
      "name": "get_agent_record"
    },
    {
      "description": "PAST activity of an account, newest first: fills (your side buy / sell, price, premium, fee), settlements (payout, PnL)\n        and redeems, at most `limit` (<= 500) and after `since` (unix seconds), plus a one-line `summary`. Open positions are\n        get_positions.",
      "inputSchema": {
        "properties": {
          "account": {
            "title": "Account",
            "type": "string"
          },
          "limit": {
            "default": 50,
            "title": "Limit",
            "type": "integer"
          },
          "since": {
            "anyOf": [
              {
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Since"
          }
        },
        "required": [
          "account"
        ],
        "title": "get_historyArguments",
        "type": "object"
      },
      "name": "get_history"
    },
    {
      "description": "Leaderboard per account or per ERC-8004 agent id (by='agent'): fills, premium paid / received, settled PnL.",
      "inputSchema": {
        "properties": {
          "by": {
            "default": "account",
            "title": "By",
            "type": "string"
          },
          "limit": {
            "default": 25,
            "title": "Limit",
            "type": "integer"
          },
          "order": {
            "default": "settledPnlRaw",
            "title": "Order",
            "type": "string"
          }
        },
        "title": "get_leaderboardArguments",
        "type": "object"
      },
      "name": "get_leaderboard"
    },
    {
      "description": "Model bid / ask / mid (USDG per share), delta and whether a quote would be given. instrument like NVDA-20261016-200-C.",
      "inputSchema": {
        "properties": {
          "instrument": {
            "title": "Instrument",
            "type": "string"
          }
        },
        "required": [
          "instrument"
        ],
        "title": "get_markArguments",
        "type": "object"
      },
      "name": "get_mark"
    },
    {
      "description": "PnL of an account: every position (open / closed / settled) with the desk's mark, unrealized and realized PnL, fees paid\n        and the total, all USDG raw (1e6) signed from the account's side, plus a one-line `summary` in USDG.",
      "inputSchema": {
        "properties": {
          "account": {
            "title": "Account",
            "type": "string"
          }
        },
        "required": [
          "account"
        ],
        "title": "get_pnlArguments",
        "type": "object"
      },
      "name": "get_pnl"
    },
    {
      "description": "ACTIVE positions: open positions, cost basis and leaderboard row of an account (and its ERC-8004 agent id when it has\n        one). Past activity is get_history; marks / PnL are get_pnl; exit before expiry with close_quote.",
      "inputSchema": {
        "properties": {
          "account": {
            "title": "Account",
            "type": "string"
          }
        },
        "required": [
          "account"
        ],
        "title": "get_positionsArguments",
        "type": "object"
      },
      "name": "get_positions"
    },
    {
      "description": "A signed quote addressed to `account` for `quantity` shares (buy or sell), valid for seconds, with the exact calldata\n        to send to fillOrderAs from the owner key or the given session key, the fee, the decay and a canFill preview (with a\n        session_key it also checks the key's live TRADE session, its spend budget spendLeft and its short-risk budget riskLeft). Sells are close-only: side=sell is quoted only against a long `account` holds in that instrument (else close_only:*);\n        to exit a position use close_quote. Nothing is sent by this server.",
      "inputSchema": {
        "properties": {
          "account": {
            "title": "Account",
            "type": "string"
          },
          "instrument": {
            "title": "Instrument",
            "type": "string"
          },
          "quantity": {
            "title": "Quantity",
            "type": "string"
          },
          "session_key": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Session Key"
          },
          "side": {
            "title": "Side",
            "type": "string"
          }
        },
        "required": [
          "instrument",
          "side",
          "quantity",
          "account"
        ],
        "title": "get_quoteArguments",
        "type": "object"
      },
      "name": "get_quote"
    },
    {
      "description": "Why the desk refused quotes to `taker` (your account) in the last 48 h, newest first: code, reason, instrument, side and\n        quantity as asked, plus counts by code and what to do about each code. At most `limit` (<= 500) rows; read-only.",
      "inputSchema": {
        "properties": {
          "limit": {
            "default": 50,
            "title": "Limit",
            "type": "integer"
          },
          "taker": {
            "title": "Taker",
            "type": "string"
          }
        },
        "required": [
          "taker"
        ],
        "title": "get_refusalsArguments",
        "type": "object"
      },
      "name": "get_refusals"
    },
    {
      "description": "How to fund a market balance with USDG over x402 (and the direct deposit path). amount in USDG. On mainnet the answer\n        carries `onramp`: a MoonPay buy link for USDG delivered on Robinhood Chain to `account`, for an agent that holds no USDG\n        yet (a human completes KYC and payment; not in New York or Canada); on the testnet it names the faucet / wallet path. Also: how the owner authorises a\n        session key (authorizeSession with maxShortRisk and maxSpend: maxShortRisk 0 = the key cannot open shorts, maxSpend 0 = buy-to-close only).",
      "inputSchema": {
        "properties": {
          "account": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Account"
          },
          "amount": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Amount"
          }
        },
        "title": "how_to_depositArguments",
        "type": "object"
      },
      "name": "how_to_deposit"
    },
    {
      "description": "TESTNET only: how to get the test settlement token (TestUSD, hUSD-test, no value). Returns the faucet call (to, data =\n        faucet(): a fixed amount to the caller once per cooldown), the account's balance and next draw time when readable, and the\n        onboarding steps: connect -> faucet -> deposit -> session key -> quote -> fill. Read-only: your own wallet sends the call.\n        Mainnet answers not_on_mainnet (see how_to_deposit).",
      "inputSchema": {
        "properties": {
          "account": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Account"
          }
        },
        "title": "how_to_get_test_fundsArguments",
        "type": "object"
      },
      "name": "how_to_get_test_funds"
    },
    {
      "description": "The unsigned calldata to lend `usdg` USDG: `txs` = USDG approve (when the allowance is short) then the vault's ERC-4626\n        deposit(usdg, account), with the share preview, the APY estimate and the cap / gate / balance checks as {error, reason}\n        (cap_exceeded, insufficient_balance, paused, not_eligible). You send every tx with the account's own owner key (needs ETH for\n        gas); this server holds no keys and sends nothing.",
      "inputSchema": {
        "properties": {
          "account": {
            "title": "Account",
            "type": "string"
          },
          "usdg": {
            "title": "Usdg",
            "type": "string"
          }
        },
        "required": [
          "account",
          "usdg"
        ],
        "title": "lend_deposit_quoteArguments",
        "type": "object"
      },
      "name": "lend_deposit_quote"
    },
    {
      "description": "Share Lending, LEND side: the Morpho Vault V2 that lends USDG against Hedgehood fund shares (hhNVDA-CC) on Morpho Blue — vault,\n        total assets, cap and room, the live market's utilization and borrow rate, an approximate supply APY (net of the vault's 10%\n        performance fee), and `my`: the account's vault shares, their USDG value and its wallet USDG. Deposits mint shares at once and\n        earn immediately; a withdrawal needs unborrowed liquidity. Read-only; nothing is sent. Not for US persons.",
      "inputSchema": {
        "properties": {
          "account": {
            "title": "Account",
            "type": "string"
          }
        },
        "required": [
          "account"
        ],
        "title": "lend_statusArguments",
        "type": "object"
      },
      "name": "lend_status"
    },
    {
      "description": "The unsigned calldata to take lent USDG back: withdraw(usdg, account, account), or redeem(all shares, account, account) for\n        'all' (exact, no dust). insufficient_balance when the account holds less, insufficient_liquidity when the vault's idle USDG plus\n        the market's unborrowed supply cannot pay it now. You send it with the account's own owner key; this server never sends.",
      "inputSchema": {
        "properties": {
          "account": {
            "title": "Account",
            "type": "string"
          },
          "usdg": {
            "default": "all",
            "title": "Usdg",
            "type": "string"
          }
        },
        "required": [
          "account"
        ],
        "title": "lend_withdraw_quoteArguments",
        "type": "object"
      },
      "name": "lend_withdraw_quote"
    },
    {
      "description": "Instruments (expiry x strike x call/put) with their on-chain ids. expiry as YYYYMMDD or unix seconds.",
      "inputSchema": {
        "properties": {
          "expiry": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Expiry"
          },
          "underlying": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "title": "Underlying"
          }
        },
        "title": "list_instrumentsArguments",
        "type": "object"
      },
      "name": "list_instruments"
    },
    {
      "description": "The option markets: underlying, addresses, version, open expiries.",
      "inputSchema": {
        "properties": {},
        "title": "list_marketsArguments",
        "type": "object"
      },
      "name": "list_markets"
    },
    {
      "description": "The Hedgehood OptionVault v2 funds (hhNVDA-CC, hhNVDA-WHEEL, hhGOOGL-CC, ...): stock token, deposit cap and room, total\n        shares, NAV per share (USDG, from the chain), the current epoch (index, phase, cutoff / trade window / expiry, next freeze)\n        and the deposit gate. Vaults are passive weekly premium income held for weeks, not a trade: a deposit queues, becomes shares\n        at the next epoch freeze (up to a week) and shares are redeemed in kind at a later freeze; use the options market for\n        exposure you open and close in seconds. Read-only; nothing is sent.",
      "inputSchema": {
        "properties": {},
        "title": "list_vaultsArguments",
        "type": "object"
      },
      "name": "list_vaults"
    },
    {
      "description": "The unsigned calldata to collect what `account`'s redemption (or refunded deposit) in `vault` paid: claim(account, account)\n        with the claimable stock and USDG amounts; nothing_to_claim with the pending redemption's cutoff when it has not frozen yet.\n        You send it with the account's own owner key; this server never sends.",
      "inputSchema": {
        "properties": {
          "account": {
            "title": "Account",
            "type": "string"
          },
          "vault": {
            "title": "Vault",
            "type": "string"
          }
        },
        "required": [
          "account",
          "vault"
        ],
        "title": "vault_claim_quoteArguments",
        "type": "object"
      },
      "name": "vault_claim_quote"
    },
    {
      "description": "The unsigned calldata to deposit `usdg` USDG into `vault` (address or symbol like hhNVDA-CC) for `account`: `txs` = USDG\n        approve (when the allowance is short) then requestDeposit(0, usdg, account), with the cohort epoch and its cutoff, a share\n        estimate at today's NAV, the balance / cap / eligibility checks and the cancelDeposit calldata. The deposit is NOT instant: it\n        is priced and becomes shares when the cohort freezes at the cutoff (up to a week). You send every tx with the account's own\n        owner key (needs ETH for gas); this server holds no keys and sends nothing.",
      "inputSchema": {
        "properties": {
          "account": {
            "title": "Account",
            "type": "string"
          },
          "usdg": {
            "title": "Usdg",
            "type": "string"
          },
          "vault": {
            "title": "Vault",
            "type": "string"
          }
        },
        "required": [
          "account",
          "vault",
          "usdg"
        ],
        "title": "vault_deposit_quoteArguments",
        "type": "object"
      },
      "name": "vault_deposit_quote"
    },
    {
      "description": "The unsigned calldata to redeem `shares` (a decimal or 'all') of `vault` for `account`: requestRedeem(shares, account),\n        the cohort it joins and when it pays, the cancelRedeem calldata. The shares go into escrow now and are paid IN KIND (stock\n        and/or USDG at that freeze's NAV) when the cohort freezes: in a locked epoch that is after the current option expires, up to\n        a week; then vault_claim_quote collects. You send it with the account's own owner key; this server never sends.",
      "inputSchema": {
        "properties": {
          "account": {
            "title": "Account",
            "type": "string"
          },
          "shares": {
            "default": "all",
            "title": "Shares",
            "type": "string"
          },
          "vault": {
            "title": "Vault",
            "type": "string"
          }
        },
        "required": [
          "account",
          "vault"
        ],
        "title": "vault_redeem_quoteArguments",
        "type": "object"
      },
      "name": "vault_redeem_quote"
    },
    {
      "description": "An account's standing in every fund: shares (credited and owed by a frozen deposit), value at NAV, the pending deposit or\n        redemption with its cohort epoch and cutoff, what is claimable, the fund's epoch state and the next step (wait / claim /\n        redeem). The cycle is request -> freeze / settlement -> claim: a request is never instant.",
      "inputSchema": {
        "properties": {
          "account": {
            "title": "Account",
            "type": "string"
          }
        },
        "required": [
          "account"
        ],
        "title": "vault_statusArguments",
        "type": "object"
      },
      "name": "vault_status"
    }
  ]
}

What the leaf hashes

{"body":"047482fbd024bf807a4ce68f42d03cbf06057c0650cabd7a470520e19df4c3cb","id":1002291,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793255811417630,"prev":null,"subject":"fcc9479e-a631-4b19-8a70-85ed9772b709","subject_kind":"endpoint"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (242798 rows).

  1. 0xfacd928908bf2e7700362b295a28cdca674cfe357e09d529ffd680fd8488530c
  2. 0x091506d160682d5db5d02ad20fc26f6b291031e753af5cdc3496a9ab94637679
  3. 0xa9a68f6ccb0bf9890f68a2df20ff5fdbaa9014b83f409a17b1b9da5405d5f075
  4. 0xe6b01e19db35eed71058450d9489dcf17b2eb9bcaabae9cd6e252e2c509e0822
  5. 0xb7e9d42246efa66f0298d869d0c0caa7cac76de2385b63278e75300ebdb68f5f
  6. 0xfcefd37a1d1b8197c4b6750858a3a4e766f01dd8759583d74c9fc4020d2e24f0
  7. 0x3f572fe58aa98efdbbf55c28aa465d8f762e37cc95eb0dd7286b6da4cd858746
  8. 0x153afc5b7c0b854360f8bf9c2bcde669e23dbfc5c79582371dc4cc713da81b26
  9. 0x696523148c0d2a44ca5efb6cf2cb0e50b5ba7aea3aa50ba14e32c484a18ddb5f
  10. 0xaf5e27d9706b6ece7828a6e5458afa3cbfeeec4816d5b5672ce301303e1aa2b7
  11. 0xdca3b929b35564c7c25ce2498f3699b9960f89efad0619e20b8b80127972242e
  12. 0xdb76702465d9dcc18228c424b986c0d068605e407bc0698ac73f564044fa8c39
  13. 0x53bd5c3baafe91745ebff65c20addef2a0eec44e95ed2b7e15d2e7abd391cbca
  14. 0xf708469bc3aba85a4a4875a16834cb1ef22f7d55f1823cedb60f00dfa15f77df
  15. 0x1dd763930a8023065a24b676469b4f26d92a89cfe71226ced9df379f43ec0f0a
  16. 0x1597ec94933260048e5e583aff1ad0fd44cc49efcd0a994091ed5db4924d7b02
  17. 0xe01539ac4c9f9cdf265a9e5c6d99c8da11e70ff0c7175fb23e402d33b9d79785
Day root
0xc050555c6b023f2aefb6536efb9f0760b92c30a0d06c572b7daf63db259ea17c
Chained
0x4cde8bae2042512e1bec11650628f0293556311cc4ea74d99ffddf02b671a7d6
Published
On Arc Testnet, block 69753317: 0x9e85c340732f416e431b111fae72f7624870125f7f379af2732eb6c2ba8cf6a1

How to check it · This row as JSON