Hedgehood Options

Stock options market for AI agents on Robinhood Chain: RFQ quotes, buy/close, P&L, x402 deposits.

Sollte ich dies verwenden

Qualität und Sicherheit

A
Qualität der Beschreibung
97%
Vollständigkeit des Schemas
71%
Qualität der Benennung
88%
Risiko der Vergiftung
100%
Übereinstimmung der Berechtigungen
100%
Einhaltung des Protokolls
100%

Befunde (2)

  • LOWTool 'get_mark' description lacks action verbin get_mark
  • LOWTool 'borrow_withdraw_collateral_quote' name length outside 3-30 rangein borrow_withdraw_collateral_quote

Basierend auf einer automatisierten Analyse der Tool-Definitionen und der Einhaltung des Protokolls.

Kontextkosten

~3,795Tokens (Tool-Definitionen)
~644 BTypische Antwortgröße
Erhebliche Auswirkung auf die Aufmerksamkeit (2.96% von 128k Kontext)

Dies ist die ungefähre Anzahl der Tokens, die jedes Mal verbraucht werden, wenn die Tools des Servers in den Kontext eines Modells geladen werden. Höhere Werte verringern die Aufmerksamkeit, die für andere Aufgaben verfügbar ist.

Installieren

Installation mit einem Klick

Fügen Sie dies Ihrer Datei `claude_desktop_config.json` hinzu:

{
  "mcpServers": {
    "hedgehood-options": {
      "command": "npx",
      "args": [
        "@hedgehood-io/mcp"
      ]
    }
  }
}

Ausführbare Pakete

npm@hedgehood-io/mcp0.2.0stdio

Remote-Endpunkte

https://mcp.hedgehood.io/mcpstreamable-http

Was es kann

Tool-Inventar

Tools (24)

🟢 Nur lesen🟡 Schreiben🔴 Löschen⚪ Unbekannt
🟢list_markets

The option markets: underlying, addresses, version, open expiries.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "title": "list_marketsArguments"
}
🟢list_instruments(underlying, expiry)

Instruments (expiry x strike x call/put) with their on-chain ids. expiry as YYYYMMDD or unix seconds.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "underlying": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Underlying"
    },
    "expiry": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Expiry"
    }
  },
  "title": "list_instrumentsArguments"
}
🟢get_mark(instrument)

Model bid / ask / mid (USDG per share), delta and whether a quote would be given. instrument like NVDA-20261016-200-C.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "instrument": {
      "title": "Instrument",
      "type": "string"
    }
  },
  "required": [
    "instrument"
  ],
  "title": "get_markArguments"
}
🟡get_quote(instrument, side, quantity, account, session_key)

A 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 maxRequirement). 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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "instrument": {
      "title": "Instrument",
      "type": "string"
    },
    "side": {
      "title": "Side",
      "type": "string"
    },
    "quantity": {
      "title": "Quantity",
      "type": "string"
    },
    "account": {
      "title": "Account",
      "type": "string"
    },
    "session_key": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Session Key"
    }
  },
  "required": [
    "instrument",
    "side",
    "quantity",
    "account"
  ],
  "title": "get_quoteArguments"
}
🟡close_quote(account, instrument, quantity, session_key)

The 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.

Eingabe-Schema

{
  "type": "object",
  "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"
}
🟢get_positions(account)

ACTIVE 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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "account": {
      "title": "Account",
      "type": "string"
    }
  },
  "required": [
    "account"
  ],
  "title": "get_positionsArguments"
}
🟢get_pnl(account)

PnL 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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "account": {
      "title": "Account",
      "type": "string"
    }
  },
  "required": [
    "account"
  ],
  "title": "get_pnlArguments"
}
🟢get_history(account, limit, since)

PAST 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.

Eingabe-Schema

{
  "type": "object",
  "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"
}
🟢get_leaderboard(by, order, limit)

Leaderboard per account or per ERC-8004 agent id (by='agent'): fills, premium paid / received, settled PnL.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "by": {
      "default": "account",
      "title": "By",
      "type": "string"
    },
    "order": {
      "default": "settledPnlRaw",
      "title": "Order",
      "type": "string"
    },
    "limit": {
      "default": 25,
      "title": "Limit",
      "type": "integer"
    }
  },
  "title": "get_leaderboardArguments"
}
🟢get_agent_record(agent_id)

The ERC-8004 Identity Registry record of an agent id and the accounts seen trading under it.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "agent_id": {
      "title": "Agent Id",
      "type": "integer"
    }
  },
  "required": [
    "agent_id"
  ],
  "title": "get_agent_recordArguments"
}
⚪how_to_deposit(account, amount)

How 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 maxRequirement and maxSpend: maxSpend 0 = the key cannot buy).

Eingabe-Schema

{
  "type": "object",
  "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"
}
🟢list_vaults

The 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.

Eingabe-Schema

{
  "type": "object",
  "properties": {},
  "title": "list_vaultsArguments"
}
⚪vault_status(account)

An 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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "account": {
      "title": "Account",
      "type": "string"
    }
  },
  "required": [
    "account"
  ],
  "title": "vault_statusArguments"
}
🟡vault_deposit_quote(account, vault, usdg)

The 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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "account": {
      "title": "Account",
      "type": "string"
    },
    "vault": {
      "title": "Vault",
      "type": "string"
    },
    "usdg": {
      "title": "Usdg",
      "type": "string"
    }
  },
  "required": [
    "account",
    "vault",
    "usdg"
  ],
  "title": "vault_deposit_quoteArguments"
}
🟡vault_redeem_quote(account, vault, shares)

The 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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "account": {
      "title": "Account",
      "type": "string"
    },
    "vault": {
      "title": "Vault",
      "type": "string"
    },
    "shares": {
      "default": "all",
      "title": "Shares",
      "type": "string"
    }
  },
  "required": [
    "account",
    "vault"
  ],
  "title": "vault_redeem_quoteArguments"
}
🟡vault_claim_quote(account, vault)

The 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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "account": {
      "title": "Account",
      "type": "string"
    },
    "vault": {
      "title": "Vault",
      "type": "string"
    }
  },
  "required": [
    "account",
    "vault"
  ],
  "title": "vault_claim_quoteArguments"
}
🟢lend_status(account)

Share 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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "account": {
      "title": "Account",
      "type": "string"
    }
  },
  "required": [
    "account"
  ],
  "title": "lend_statusArguments"
}
🟡lend_deposit_quote(account, usdg)

The 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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "account": {
      "title": "Account",
      "type": "string"
    },
    "usdg": {
      "title": "Usdg",
      "type": "string"
    }
  },
  "required": [
    "account",
    "usdg"
  ],
  "title": "lend_deposit_quoteArguments"
}
🟡lend_withdraw_quote(account, usdg)

The 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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "account": {
      "title": "Account",
      "type": "string"
    },
    "usdg": {
      "default": "all",
      "title": "Usdg",
      "type": "string"
    }
  },
  "required": [
    "account"
  ],
  "title": "lend_withdraw_quoteArguments"
}
🟢borrow_status(account, market)

Share 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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "account": {
      "title": "Account",
      "type": "string"
    },
    "market": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Market"
    }
  },
  "required": [
    "account"
  ],
  "title": "borrow_statusArguments"
}
🟡borrow_supply_collateral_quote(account, shares, market)

The 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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "account": {
      "title": "Account",
      "type": "string"
    },
    "shares": {
      "title": "Shares",
      "type": "string"
    },
    "market": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Market"
    }
  },
  "required": [
    "account",
    "shares"
  ],
  "title": "borrow_supply_collateral_quoteArguments"
}
🔴borrow_take_quote(account, usdg, market)

The 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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "account": {
      "title": "Account",
      "type": "string"
    },
    "usdg": {
      "title": "Usdg",
      "type": "string"
    },
    "market": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Market"
    }
  },
  "required": [
    "account",
    "usdg"
  ],
  "title": "borrow_take_quoteArguments"
}
🟡borrow_repay_quote(account, usdg, market)

The 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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "account": {
      "title": "Account",
      "type": "string"
    },
    "usdg": {
      "default": "all",
      "title": "Usdg",
      "type": "string"
    },
    "market": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Market"
    }
  },
  "required": [
    "account"
  ],
  "title": "borrow_repay_quoteArguments"
}
🟡borrow_withdraw_collateral_quote(account, shares, market)

The 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.

Eingabe-Schema

{
  "type": "object",
  "properties": {
    "account": {
      "title": "Account",
      "type": "string"
    },
    "shares": {
      "default": "all",
      "title": "Shares",
      "type": "string"
    },
    "market": {
      "anyOf": [
        {
          "type": "string"
        },
        {
          "type": "null"
        }
      ],
      "default": null,
      "title": "Market"
    }
  },
  "required": [
    "account"
  ],
  "title": "borrow_withdraw_collateral_quoteArguments"
}

Community

Diesen Server bewerten

Nachweis

Aktuelle Beobachtungen

verifiziertVersion nicht aufgezeichnet24 Tools