Hedgehood Options
io.github.0xHedgeHood/hedgehood-optionsVersion 0.5.1Stock options market for AI agents on Robinhood Chain: RFQ quotes, buy/close, P&L, x402 deposits.
Status
Responds1856 msAnswered our handshake without sign-in.- Last checked
- Nov 14, 2026, 14:34 UTC
- Latency
- 1856 ms
- Remotes responding
- 1 of 1
- Sign-in
- No sign-in
- Hosting
- Hosted outside the EU (detected)
- Registry data as of
- Nov 14, 2026, 22:14 UTC
Data from the official MCP Registry, checked by run.zero. How we check
Connect
Streamable HTTP
https://mcp.hedgehood.io/mcpResponds1856 msNo sign-in
Claude Code
claude mcp add --transport http hedgehood-options https://mcp.hedgehood.io/mcpClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: hedgehood-options
Remote MCP server URL: https://mcp.hedgehood.io/mcpCursor
{
"mcpServers": {
"hedgehood-options": {
"url": "https://mcp.hedgehood.io/mcp"
}
}
}VS Code
code --add-mcp '{"name":"hedgehood-options","type":"http","url":"https://mcp.hedgehood.io/mcp"}'Streamable HTTP
npm: @hedgehood-io/mcp 0.5.1Package only
npm (npx)
claude mcp add hedgehood-options -e 'HEDGEHOOD_SESSION_KEY_FILE=<YOUR_HEDGEHOOD_SESSION_KEY_FILE>' -- npx -y @hedgehood-io/mcp@0.5.1Replace <YOUR_HEDGEHOOD_SESSION_KEY_FILE> before running.
Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
26 tools
Read-only | Idempotent | Open world | ||
|---|---|---|---|---|
borrow_repay_quoteThe unsigned calldata to repay USDG debt: approve to Blue (when short) + repay(marketParams, usdg, 0, account, 0x), or for 'all'
repay by the exact share debt (no dust; the approval carries 0.1% headroom for interest until the tx lands), with the post-action
HF / LTV. nothing_to_repay, exceeds_debt, insufficient_balance are answers. Repay reads no oracle: it works while the oracle is
unavailable. You send it with the account's own owner key; this server never sends. | Not declared | Not declared | Not declared | Not declared |
borrow_statusShare Lending, BORROW side: the Morpho Blue market that takes hhNVDA-CC fund shares as collateral for USDG — id (discovered from
the lending vault at each call; the mainnet market is being migrated to a new oracle), LLTV, the ShareRiskOracle price and status
(live / held / unavailable), borrow rate, utilization, supply, borrowed, available — and `my`: collateral, debt (interest to now),
borrowing power, health factor, LTV and the liquidation price. Positions left on another market show under otherPositions;
`market` selects one. Rule: keep LTV at or below 70% of LLTV. Read-only; nothing is sent. | Not declared | Not declared | Not declared | Not declared |
borrow_supply_collateral_quoteThe unsigned calldata to post `shares` fund shares (a decimal or 'all' of the wallet) as collateral: approve to Blue (when the
allowance is short) + supplyCollateral(marketParams, shares, account, 0x), with the position before and after (HF, LTV). No
oracle read. insufficient_balance when the wallet holds fewer shares (shares still in the fund's redemption queue do not count).
You send it with the account's own owner key; this server never sends. | Not declared | Not declared | Not declared | Not declared |
borrow_take_quoteThe unsigned calldata to borrow `usdg` USDG against posted collateral: borrow(marketParams, usdg, 0, account, account), with the
post-action HF / LTV and a `warning` when the resulting LTV is above 70% of LLTV. Refused with oracle_stale when the ShareRiskOracle
is fail-closed (Blue cannot price the collateral), unhealthy when HF would drop below 1 (with the most you could add),
insufficient_liquidity when the market lacks the USDG. You send it with the account's own owner key; this server never sends. | Not declared | Not declared | Not declared | Not declared |
borrow_withdraw_collateral_quoteThe unsigned calldata to take fund shares back from Blue: withdrawCollateral(marketParams, shares, account, account), with the
post-action HF / LTV and the 70%-of-LLTV warning. Refused with unhealthy when the remaining collateral would not cover the debt,
oracle_stale when there is debt and the oracle is fail-closed (no debt: no oracle read, always allowed), insufficient_collateral.
You send it with the account's own owner key; this server never sends. | Not declared | Not declared | Not declared | Not declared |
close_quoteThe quote that exits `account`'s open position in `instrument` before expiry: reads the position, takes the opposite
side (long -> sell, short -> buy), size = min(|position|, quantity or the whole position), and returns the desk's signed
quote with the fillOrderAs calldata in fill.send. You must send it with your own key before validUntil
(`hedgehood close <instrument> --send` or the npm MCP's close_position); this server never sends. nothing_to_close
when the account is flat there; a close_only:* refusal from the desk is returned with its reason. | Not declared | Not declared | Not declared | Not declared |
get_agent_recordThe ERC-8004 Identity Registry record of an agent id and the accounts seen trading under it. | Not declared | Not declared | Not declared | Not declared |
get_historyPAST activity of an account, newest first: fills (your side buy / sell, price, premium, fee), settlements (payout, PnL)
and redeems, at most `limit` (<= 500) and after `since` (unix seconds), plus a one-line `summary`. Open positions are
get_positions. | Not declared | Not declared | Not declared | Not declared |
get_leaderboardLeaderboard per account or per ERC-8004 agent id (by='agent'): fills, premium paid / received, settled PnL. | Not declared | Not declared | Not declared | Not declared |
get_markModel bid / ask / mid (USDG per share), delta and whether a quote would be given. instrument like NVDA-20261016-200-C. | Not declared | Not declared | Not declared | Not declared |
get_pnlPnL of an account: every position (open / closed / settled) with the desk's mark, unrealized and realized PnL, fees paid
and the total, all USDG raw (1e6) signed from the account's side, plus a one-line `summary` in USDG. | Not declared | Not declared | Not declared | Not declared |
get_positionsACTIVE positions: open positions, cost basis and leaderboard row of an account (and its ERC-8004 agent id when it has
one). Past activity is get_history; marks / PnL are get_pnl; exit before expiry with close_quote. | Not declared | Not declared | Not declared | Not declared |
get_quoteA signed quote addressed to `account` for `quantity` shares (buy or sell), valid for seconds, with the exact calldata
to send to fillOrderAs from the owner key or the given session key, the fee, the decay and a canFill preview (with a
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:*);
to exit a position use close_quote. Nothing is sent by this server. | Not declared | Not declared | Not declared | Not declared |
get_refusalsWhy the desk refused quotes to `taker` (your account) in the last 48 h, newest first: code, reason, instrument, side and
quantity as asked, plus counts by code and what to do about each code. At most `limit` (<= 500) rows; read-only. | Not declared | Not declared | Not declared | Not declared |
how_to_depositHow to fund a market balance with USDG over x402 (and the direct deposit path). amount in USDG. On mainnet the answer
carries `onramp`: a MoonPay buy link for USDG delivered on Robinhood Chain to `account`, for an agent that holds no USDG
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
session key (authorizeSession with maxShortRisk and maxSpend: maxShortRisk 0 = the key cannot open shorts, maxSpend 0 = buy-to-close only). | Not declared | Not declared | Not declared | Not declared |
how_to_get_test_fundsTESTNET only: how to get the test settlement token (TestUSD, hUSD-test, no value). Returns the faucet call (to, data =
faucet(): a fixed amount to the caller once per cooldown), the account's balance and next draw time when readable, and the
onboarding steps: connect -> faucet -> deposit -> session key -> quote -> fill. Read-only: your own wallet sends the call.
Mainnet answers not_on_mainnet (see how_to_deposit). | Not declared | Not declared | Not declared | Not declared |
lend_deposit_quoteThe unsigned calldata to lend `usdg` USDG: `txs` = USDG approve (when the allowance is short) then the vault's ERC-4626
deposit(usdg, account), with the share preview, the APY estimate and the cap / gate / balance checks as {error, reason}
(cap_exceeded, insufficient_balance, paused, not_eligible). You send every tx with the account's own owner key (needs ETH for
gas); this server holds no keys and sends nothing. | Not declared | Not declared | Not declared | Not declared |
lend_statusShare Lending, LEND side: the Morpho Vault V2 that lends USDG against Hedgehood fund shares (hhNVDA-CC) on Morpho Blue — vault,
total assets, cap and room, the live market's utilization and borrow rate, an approximate supply APY (net of the vault's 10%
performance fee), and `my`: the account's vault shares, their USDG value and its wallet USDG. Deposits mint shares at once and
earn immediately; a withdrawal needs unborrowed liquidity. Read-only; nothing is sent. Not for US persons. | Not declared | Not declared | Not declared | Not declared |
lend_withdraw_quoteThe unsigned calldata to take lent USDG back: withdraw(usdg, account, account), or redeem(all shares, account, account) for
'all' (exact, no dust). insufficient_balance when the account holds less, insufficient_liquidity when the vault's idle USDG plus
the market's unborrowed supply cannot pay it now. You send it with the account's own owner key; this server never sends. | Not declared | Not declared | Not declared | Not declared |
list_instrumentsInstruments (expiry x strike x call/put) with their on-chain ids. expiry as YYYYMMDD or unix seconds. | Not declared | Not declared | Not declared | Not declared |
list_marketsThe option markets: underlying, addresses, version, open expiries. | Not declared | Not declared | Not declared | Not declared |
list_vaultsThe Hedgehood OptionVault v2 funds (hhNVDA-CC, hhNVDA-WHEEL, hhGOOGL-CC, ...): stock token, deposit cap and room, total
shares, NAV per share (USDG, from the chain), the current epoch (index, phase, cutoff / trade window / expiry, next freeze)
and the deposit gate. Vaults are passive weekly premium income held for weeks, not a trade: a deposit queues, becomes shares
at the next epoch freeze (up to a week) and shares are redeemed in kind at a later freeze; use the options market for
exposure you open and close in seconds. Read-only; nothing is sent. | Not declared | Not declared | Not declared | Not declared |
vault_claim_quoteThe unsigned calldata to collect what `account`'s redemption (or refunded deposit) in `vault` paid: claim(account, account)
with the claimable stock and USDG amounts; nothing_to_claim with the pending redemption's cutoff when it has not frozen yet.
You send it with the account's own owner key; this server never sends. | Not declared | Not declared | Not declared | Not declared |
vault_deposit_quoteThe unsigned calldata to deposit `usdg` USDG into `vault` (address or symbol like hhNVDA-CC) for `account`: `txs` = USDG
approve (when the allowance is short) then requestDeposit(0, usdg, account), with the cohort epoch and its cutoff, a share
estimate at today's NAV, the balance / cap / eligibility checks and the cancelDeposit calldata. The deposit is NOT instant: it
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
owner key (needs ETH for gas); this server holds no keys and sends nothing. | Not declared | Not declared | Not declared | Not declared |
vault_redeem_quoteThe unsigned calldata to redeem `shares` (a decimal or 'all') of `vault` for `account`: requestRedeem(shares, account),
the cohort it joins and when it pays, the cancelRedeem calldata. The shares go into escrow now and are paid IN KIND (stock
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
a week; then vault_claim_quote collects. You send it with the account's own owner key; this server never sends. | Not declared | Not declared | Not declared | Not declared |
vault_statusAn account's standing in every fund: shares (credited and owed by a frozen deposit), value at NAV, the pending deposit or
redemption with its cohort epoch and cutoff, what is claimable, the fund's epoch state and the next step (wait / claim /
redeem). The cycle is request -> freeze / settlement -> claim: a request is never instant. | Not declared | Not declared | Not declared | Not declared |
Details
- Registry status
- Active
- Published
- Nov 3, 2026
- Updated
- Nov 3, 2026
- Categories (suggested)
- Finance and paymentsSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
- GDPR
- Not declared