Alpaca Trading API integration for Model Context Protocol (MCP)
Hedgehood Options is installed from its publisher's own source and answers where it runs, so this marketplace is not in the path of a single call. There is no address here to send one to, and a panel that pretended otherwise would be showing you an answer we made up. Install it and call it from your own client — the Installation tab has the entry for each one.
What it does
Stock options market for AI agents on Robinhood Chain: RFQ quotes, buy/close, P&L, x402 deposits.
Quickstart
# 1 — add it to Claude Code
claude mcp add --scope user --env 'HEDGEHOOD_SESSION_KEY_FILE=${HEDGEHOOD_SESSION_KEY_FILE}' --transport stdio hedgehood-options-mcp '--' npx -y @hedgehood-io/mcp
# 2 — ask your agent for something these tools do
# list_markets, list_instruments, get_mark and 34 more
It needs HEDGEHOOD_SESSION_KEY_FILE: this reads it from your environment, so export it first. Remote: no sign-in · Package: API key.
Hedgehood Options costs nothing on mcprush: there is no plan to choose here, no cap to set and nothing mcprush can bill you for.
Collected from a public index. Nobody has claimed this account, so nothing here was written by its author — claim it if it is yours.
Where are you running it?
Every route below installs the same thing and ends at the same approval screen. This one can run either way — at an address its publisher runs, or as a process under your own user, with your files and your network — and this marketplace is in the path of neither.
This is a public server: you run it yourself and this marketplace is not in the path. You need Node.js — the current LTS (24) is the safe choice; npx comes with it. Claude Code registers it in one command; --scope user makes it available in every project. Claude Code reads HEDGEHOOD_SESSION_KEY_FILE (Path to a file holding the agent's session private key (0x + 64 hex, chmod 600). The key can trade and cancel for the account but never withdraw) from your environment each time it starts the server, so the value stays out of its config: export it in your shell profile (macOS, Linux), or run setx HEDGEHOOD_SESSION_KEY_FILE … and open a new terminal (Windows). The '--' is in quotes so that PowerShell passes it on.
claude mcp add --scope user --env 'HEDGEHOOD_SESSION_KEY_FILE=${HEDGEHOOD_SESSION_KEY_FILE}' --transport stdio hedgehood-options-mcp '--' npx -y @hedgehood-io/mcpReconnect, or start a new session, and the tools appear in the model’s tool list.
Its publisher also runs it at https://mcp.hedgehood.io/mcp: nothing to start on your machine, and this marketplace is not in the path.
claude mcp add --scope user --transport http hedgehood-options-mcp https://mcp.hedgehood.io/mcpIt reaches a system of yours, so it needs your own credential rather than the publisher’s: HEDGEHOOD_SESSION_KEY_FILE — Path to a file holding the agent's session private key (0x + 64 hex, chmod 600). The key can trade and cancel for the account but never withdraw.. You set it in your own client’s config, on your machine — this marketplace never holds it.
One config entry your client uses to start the process locally. A local server runs with your file system and your network, which is why it is priced without metering.
37 tools, with what each one reads, writes and reaches shown before you agree — the same list on every route above. Read the tool surface.
Tool surface
What the model actually sees. Descriptions are diffed on every release — see version history.
Read from its source code. A server that builds its tool list when it starts can list more tools than this.
The option markets this server trades: underlying, chain, contract addresses, open expiries (with the uiMultiplier each snapshotted and its listed per-share strikes) and taker fee. Anchor and caps are per token. Read-only.
No parameter schema on file.
Calls and puts of one expiry (or all open expiries): instrument names and ids, listed per-share strikes (and the per-token raw strike in the id when the expiry's uiMultiplier is not 1), whether trading is open, and whether the backend quotes them. Read-only.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| expiry | string | no | Unix seconds of the expiry; omit for every open expiry |
| market | string | no | Market: underlying ticker (GOOGL) or market address. Default: the instrument name's ticker, else HEDGEHOOD_UNDERLYING |
The desk's indicative bid / ask / mid per share (USDG), delta, iv and whether it is executable right now; not a firm price. Use get_quote for one.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| market | string | no | Market: underlying ticker (GOOGL) or market address. Default: the instrument name's ticker, else HEDGEHOOD_UNDERLYING |
Asks the maker for a firm, signed quote addressed to your account, verifies the signature, taker and expiry locally, and returns price, fee, time left and a digest to pass to fill_quote. Any market of the chain: market, or the instrument name's ticker. Quotes decay and expire in seconds.…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| market | string | no | Market: underlying ticker (GOOGL) or market address. Default: the instrument name's ticker, else HEDGEHOOD_UNDERLYING |
| side | string | yes | buy = you buy the option (pay premium); sell = you write it (receive premium, post collateral) |
| quantity | string | yes | Shares, e.g. "1" or "0.5" |
Takes a quote from get_quote for your account via fillOrderAs, in the quote's market. From a SESSION KEY: always balance mode (premium, fee and collateral settle from that market's deposited balance; no approvals); when that balance is short the fill is refused with the shortfall, the markets…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| digest | string | no | Digest returned by get_quote |
| order | object | no | Alternatively the order JSON from get_quote |
| signature | string | no | — |
| quantity | string | no | Shares to fill; default: the quoted quantity |
| signer | string | no | Who signs: the session key (default when configured; balance mode only) or the owner key (the account itself: wallet mode by default) |
| fromBalance | boolean | no | Account's own key: true settles inside this market's deposited balance; default false = WALLET mode (premium, fee and any collateral pulled from the wallet, no deposit needed; approves the market firs |
| autoDeposit | boolean | no | Account's own key, balance mode: deposit the market balance's shortfall first (approve + deposit + fill) |
| approve | string | no | When an approval is needed: exact (default, just what this fill can pull) or max (unlimited) |
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
Funds your market balance through the x402 deposit gateway: signs an EIP-3009 USDG transfer from the paying key's wallet (owner key if set, else session key) and the gateway calls market.deposit(account, amount). dryRun (default true) fetches the 402 and shows what would be signed. Requires…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| amount | string | yes | USDG, e.g. "25" |
| market | string | no | Market: underlying ticker (GOOGL) or market address. Default: the instrument name's ticker, else HEDGEHOOD_UNDERLYING |
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
Your ACTIVE book in one market (market, default HEDGEHOOD_UNDERLYING; get_account shows every market at once): market balance (collateral, locked requirement, free), wallet USDG, every open position by instrument with average entry price, the desk's mark, unrealized P&L and time to expiry (when…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| market | string | no | Market: underlying ticker (GOOGL) or market address. Default: the instrument name's ticker, else HEDGEHOOD_UNDERLYING |
Exits an open position before expiry, in any market (market, or the instrument name's ticker). Positions net out on chain and the maker quotes both sides, so this reads your signed position in the instrument, asks for a firm quote on the OPPOSITE side (a long is sold to the bid, a short is…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| market | string | no | Market: underlying ticker (GOOGL) or market address. Default: the instrument name's ticker, else HEDGEHOOD_UNDERLYING |
| quantity | string | no | Shares to close; default and maximum: the whole position |
| signer | string | no | Who signs: the session key (default when configured; balance mode only) or the owner key (the account itself: wallet mode by default) |
| fromBalance | boolean | no | Account's own key: true settles inside this market's deposited balance; default false = WALLET mode (premium, fee and any collateral pulled from the wallet, no deposit needed; approves the market firs |
| autoDeposit | boolean | no | Account's own key, balance mode: deposit the market balance's shortfall first (approve + deposit + fill) |
| approve | string | no | When an approval is needed: exact (default, just what this fill can pull) or max (unlimited) |
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
Read-only account-wide option portfolio from the indexer: realized/unrealized P&L, fees, active positions and signed ASCII bars. Returns the same display as hedgehood dashboard, plus structured raw data. Show the display verbatim in a fenced text block. Bars compare current positions, not…
No parameter schema on file.
Your P&L from the indexer: every open position with cost basis, average entry price, the desk's mark (bid / mid / ask per share) and unrealized P&L, then realized (settled) P&L, unrealized total, fees paid and total, all in USDG. Amounts ending in Raw are signed USDG with 6 decimals (quantityRaw:…
No parameter schema on file.
Your PAST activity from the indexer, newest first: fills (side, quantity, price per share, premium, fee, counterparty, tx), settlements (settlement price, payout) and redeems (expiry, amount). Open positions are positions; totals are get_pnl. Read-only.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| limit | integer | no | At most this many events |
| since | no | Only events at or after this time: unix seconds or an ISO-8601 date/time |
Books your settled position of one expiry into your market balance (redeemFor(account, expiry); permissionless, the keeper usually does it). dryRun default true. Requires confirm: true.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| expiry | string | yes | — |
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
One view of your account in EVERY option market of the chain (each market keeps its own balance, positions and session keys): wallet USDG; per market the collateral, locked requirement, free balance, the wallet's allowance to that market, open positions and the configured key's session; totals;…
No parameter schema on file.
Credits the account's balance in one market from the owner wallet: approve (only when the allowance is short; exact amount by default, approve: max for unlimited), then deposit(account, amount). Balances are per market: a session key can only fill from the balance of the market it trades. dryRun…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| market | string | no | Market: underlying ticker (GOOGL) or market address. Default: the instrument name's ticker, else HEDGEHOOD_UNDERLYING |
| amount | string | yes | USDG, e.g. "25" |
| approve | string | no | When an approval is needed: exact (default, just what this fill can pull) or max (unlimited) |
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
Moves free collateral from a market (market, default HEDGEHOOD_UNDERLYING) to a wallet; all: true withdraws every market's free balance, one transaction per market. Only the account owner can withdraw; a session key cannot. dryRun default true. Requires confirm: true.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| amount | string | no | USDG; omit with all: true |
| market | string | no | Market: underlying ticker (GOOGL) or market address. Default: the instrument name's ticker, else HEDGEHOOD_UNDERLYING |
| all | boolean | no | Every market's free balance back to the wallet |
| to | string | no | Recipient; default: the owner address |
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
Moves free balance from one market to another: withdraw(amount) from from to the owner wallet, approve to when its allowance is short, deposit(account, amount) into to. Use it when a session key's market lacks balance that another market holds free (get_account shows where). Owner key only.…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| from | string | yes | Market to take free balance from (ticker or address) |
| to | string | yes | Market to fund |
| amount | string | yes | USDG |
| approve | string | no | When an approval is needed: exact (default, just what this fill can pull) or max (unlimited) |
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
authorizeSession(key, expiresAt, scope, maxShortRisk, maxSpend) from the owner: lets the session key trade for the account (never withdraw). maxSpend (required) is the cumulative premium + fees the key may make the account pay over the session beyond the worst case of the shorts it buys back ("0"…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| key | string | no | Session key address; default: the configured session key |
| days | integer | no | — |
| maxSpend | string | no | Required unless revoke: cumulative USDG of premium + fees the key may spend for the account over the session beyond buying back shorts, e.g. "100"; "0" = buy to close only; "unlimited" = no cap |
| maxShortRisk | string | no | Cumulative USDG worst case of the shorts the key may open (each sell leg: ceil(opened short x maxPayout / 1e18)); "0" (default) = cannot sell to open; "unlimited" = no cap |
| maxRequirement | string | no | Removed (hedgehood-options #58): use maxShortRisk |
| cancel | boolean | no | Also grant SCOPE_CANCEL |
| revoke | boolean | no | true: revokeSession(key) instead |
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
Indexer leaderboard per account or per ERC-8004 agent id: fills, premium paid/received, fees, settled PnL, volume (USDG raw). Read-only.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| by | string | no | — |
| order | string | no | — |
| limit | integer | no | — |
Your account as the indexer sees it: positions reconciled from fills (with cost basis), your leaderboard row and ERC-8004 agent id, recent raw fills. For marked P&L use get_pnl; for a readable timeline use get_history. Read-only.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| includeSettled | boolean | no | — |
The ERC-8004 record (owner, agentURI) of an agent id and the accounts seen trading under it. Read-only.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| agentId | string | yes | — |
TESTNET only: draws test USD (TestUSD hUSD-test, no value) from its public faucet into the sending wallet (owner key if set, else the session key; deposit(account, amount) is permissionless, so either can then fund the account). faucet() mints 1,000 once per 24 h per address; the answer says when…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
Registers an ERC-8004 agent id for the owner on the chain's Identity Registry (the ERC-8004 reference deployment: 0x8004A169… on mainnet, 0x8004A818… on testnet) with a registration file naming this trading account. Optional; the market does not require it. Owner key. dryRun default true. Requires…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| name | string | yes | — |
| description | string | no | — |
| agentURI | string | no | Hosted registration file; default: an inline data: URI |
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
Expiry, strike and kind of an instrument id, with its backend name. The id packs the per-token strike; strike is the listed per-share strike under the expiry's snapshotted uiMultiplier (read from the market when the expiry is open, else 1, or pass uiMultiplier). Read-only.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| instrumentId | string | yes | — |
| uiMultiplier | string | no | The expiry's uiMultiplier (1e18 = 1.0); default: read from the market |
Hedgehood's Stock Yield vaults (v2 EpochFund) on this chain: for each fund its share symbol, strategy, stock, deposit gate, cap and cap used, total shares, NAV per share in USDG, the epoch (index, state open|frozen|locked|settling, next freeze and next settlement times), the last settled epoch's…
No parameter schema on file.
Your position in the Stock Yield vaults: shares held (and not yet credited), a queued deposit or redemption with its epoch and whether it can still be cancelled, assets waiting to be claimed, wallet balances, and the suggested next action. One fund with vault, else every fund you touched or can…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| vault | string | no | Fund address, share symbol (hhNVDA-CC, NVDA-CC) or stock ticker when it names one fund (GOOGL) |
Queues a deposit of USDG (and/or the fund's stock) from the owner wallet into a vault for your account: ERC-20 approve(s) to the fund when the allowance is short, then requestDeposit(stock, usdg, receiver).
| Parameter | Type | Required | Notes |
|---|---|---|---|
| vault | string | yes | Fund address, share symbol (hhNVDA-CC, NVDA-CC) or stock ticker when it names one fund (GOOGL) |
| usdg | string | no | USDG to deposit, e.g. "100" |
| stock | string | no | Stock tokens to deposit instead of / besides USDG, e.g. "0.5" (18 decimals) |
| receiver | string | no | Account credited with the shares; default: your account |
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
Queues a redemption of shares (an amount or "all") for your account: requestRedeem(shares, account). The shares move to escrow now and are paid in kind (stock + USDG, pro rata) at the cohort's freeze, which comes after the current weekly option expires; then call vault_claim.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| vault | string | yes | Fund address, share symbol (hhNVDA-CC, NVDA-CC) or stock ticker when it names one fund (GOOGL) |
| shares | string | yes | Shares to redeem, e.g. "2.5", or "all" |
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
Pays your redeemed (or refunded) stock and USDG out of a vault: claim(account, to). Only possible once the cohort of your redemption has frozen; vault_status shows what is claimable. Owner key. dryRun (default true) simulates only. Requires confirm: true.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| vault | string | yes | Fund address, share symbol (hhNVDA-CC, NVDA-CC) or stock ticker when it names one fund (GOOGL) |
| to | string | no | Recipient; default: the owner address |
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
Cancels your queued deposit (returned to to, default the owner wallet) or queued redemption (shares back to your balance) in a vault, possible until that cohort's cutoff (vault_status: cancellable). Owner key. dryRun (default true) simulates only. Requires confirm: true.
| Parameter | Type | Required | Notes |
|---|---|---|---|
| vault | string | yes | Fund address, share symbol (hhNVDA-CC, NVDA-CC) or stock ticker when it names one fund (GOOGL) |
| which | string | yes | — |
| to | string | no | deposit only: where the returned assets go; default: the owner address |
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
Hedgehood's USDG lending vault: size, idle vs supplied, the curator's cap and room left, what can be withdrawn right now, utilization and the current supply rate (borrow rate x utilization, after the 10% performance fee), the Blue market it supplies and the collateral oracle's state, plus your…
No parameter schema on file.
Deposits USDG from the owner wallet into the hhUSDG lending vault for your account: ERC-20 approve when the allowance is short, then deposit(assets, onBehalf). Instant; the USDG is supplied to the Blue market and earns the supply rate from that block; withdraw any time there is unborrowed…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| usdg | string | yes | USDG to lend, e.g. "100" |
| receiver | string | no | Account credited with the hhUSDG shares; default: your account |
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
Withdraws USDG from the hhUSDG lending vault to the owner wallet: withdraw(assets, receiver, account) for an amount, redeem(all shares) for "all". Instant while the vault has liquidity (idle USDG + the market's unborrowed USDG); when borrowers hold the rest, only that much can leave until they…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| usdg | string | yes | USDG to withdraw, e.g. "50", or "all" |
| receiver | string | no | Recipient; default: the owner address |
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
The Blue market where Stock Yield fund shares are collateral for USDG (default: the market the lending vault supplies; marketId for another): LLTV, the collateral oracle's price and state (live | held | unavailable), borrow rate, utilization, supplied / borrowed / available; and your position:…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| marketId | string | no | Blue market id; default: the market the lending vault currently supplies (read from the vault, so a migration needs no change) |
Moves Stock Yield fund shares (hhNVDA-CC) from the owner wallet into the Blue market as collateral for your account: ERC-20 approve to Blue when short, then supplyCollateral(market, shares, account). The shares must already be in the wallet: shares the fund owes you are claimed first with…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| shares | string | yes | Fund shares to pledge, e.g. "10", or "all" (the wallet balance) |
| marketId | string | no | Blue market id; default: the market the lending vault currently supplies (read from the vault, so a migration needs no change) |
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
Borrows USDG from the Blue market against your pledged fund shares: borrow(market, usdg, account, receiver). Refused when the collateral oracle has no usable price, when the market lacks liquidity, or when the health factor after the loan would be below 1; WARNS when the LTV after would exceed …%…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| usdg | string | yes | USDG to borrow, e.g. "500" |
| receiver | string | no | Recipient of the USDG; default: the owner address |
| marketId | string | no | Blue market id; default: the market the lending vault currently supplies (read from the vault, so a migration needs no change) |
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
Repays your USDG debt on the Blue market from the owner wallet: ERC-20 approve to Blue when short, then repay by assets for an amount or by borrow shares for "all" (so the debt that keeps accruing until the block is cleared exactly; the approval carries a small margin). Works while the oracle is…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| usdg | string | yes | USDG to repay, e.g. "100", or "all" |
| marketId | string | no | Blue market id; default: the market the lending vault currently supplies (read from the vault, so a migration needs no change) |
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
Takes pledged fund shares back out of the Blue market to the owner wallet: withdrawCollateral(market, shares, account, receiver). With debt open the health factor after must stay at or above 1 (and the oracle must answer); "all" requires the debt to be repaid first. Afterwards the shares can be…
| Parameter | Type | Required | Notes |
|---|---|---|---|
| shares | string | yes | Collateral shares to withdraw, e.g. "5", or "all" |
| receiver | string | no | Recipient; default: the owner address |
| marketId | string | no | Blue market id; default: the market the lending vault currently supplies (read from the vault, so a migration needs no change) |
| confirm | boolean | no | Must be true to act. Without it the tool only explains what it would do. |
| dryRun | boolean | no | true (default): simulate and return the unsigned transaction, send nothing. false: sign and broadcast. |
- Every tool, no call limit
- No card, and mcprush charges nothing for it
- Source published under MIT
- Runs on your machine — nothing of it reaches our gateway
- Nothing to cap, because mcprush bills nothing
What counts against your monthly calls
| Tool | Unit | Calls used | Out of the allowance |
|---|
Nothing here is billable: mcprush charges nothing to install Hedgehood Options or to call it, at any volume.
Two independent axes, because powerful and malicious are different questions. The grade is threat only. The capability level is blast radius, and it is never a penalty on the grade — it is priced as one subtract-only term in the score, where you can see it.
| Term | Level | What it prices | Points |
|---|---|---|---|
| capability-exposure | minimal | capability blast radius (minimal) — client exposure if the model is manipulated | −0 |
| verification-discount | repo | publisher verification (public source) — no provenance, but the source is public and inspectable | −1 |
| coverage-honesty | source | inspection depth (source) — how much of the target the scan could see | −0 |
What the scan could actually read
A grade is only as meaningful as its coverage, so the scanner publishes its own depth before it publishes its result.
Tools were statically extracted from the published source (37 recovered), not enumerated from a running server. Tool-poisoning, Unicode-smuggling, capability and toxic-flow analysis ran on this inferred surface, but a mis-parsed registration could be missed or mis-attributed, so tool-derived findings are capped below “confirmed”. To grade the real runtime surface, scan the running server: --command "npx -y <package>".
Capability — what it could do if the model were manipulated
Tags derived from each tool’s schema and the implementation, not from what the tool calls itself. minimal is the level these add up to.
| Tool | Capability tags | Why the tag was assigned |
|---|---|---|
| list_markets | no tags | |
| list_instruments | no tags | |
| get_mark | no tags | |
| get_quote | no tags | |
| fill_quote | no tags | |
| deposit_x402 | no tags | |
| positions | no tags | |
| close_position | no tags | |
| get_dashboard | untrusted-input | untrusted-input: declares openWorldHint: true (interacts with entities outside the server) |
| get_pnl | no tags | |
| get_history | no tags | |
| redeem | no tags | |
| get_account | no tags | |
| deposit | no tags | |
| withdraw | no tags | |
| rebalance | no tags | |
| authorize_session | no tags | |
| leaderboard | no tags | |
| my_record | no tags | |
| get_agent_record | no tags | |
| faucet | no tags | |
| register_agent | no tags | |
| decode_instrument | no tags | |
| list_vaults | no tags | |
| vault_status | no tags | |
| vault_deposit | no tags | |
| vault_redeem | no tags | |
| vault_claim | no tags | |
| vault_cancel | no tags | |
| lend_status | no tags | |
| lend_deposit | no tags | |
| lend_withdraw | no tags | |
| borrow_status | no tags | |
| borrow_supply_collateral | no tags | |
| borrow_take | no tags | |
| borrow_repay | no tags | |
| borrow_withdraw_collateral | no tags |
Toxic-flow graph
The lethal trifecta, checked as a graph rather than as a checklist: untrusted input, a sensitive source and an external sink have to meet before there is a path worth worrying about.
The public result for this release does not print the flow graph, so there is nothing to show here. That is not the same as "no paths were found": what the scan did read is above, under coverage.
Supply chain and provenance
This is the first scan of this surface here, so there is nothing yet to compare it against.
Every result on this tab comes from one deterministic pass over the published package — offline, rule by rule, and auditable line by line above. Same methodology version, same bytes, same score.
Release history
Always latest — the install command names no version, so it installs the newest release when it runs; the current release on file is 0.5.1. Pin a release below and the command asks for exactly that one.
No release note was published with this version.
No release note was published with this version.
No release note was published with this version.
- The version this listing was on when mcprush began following its releases. The registry was not asked when it shipped, so this row carries no date.
One review per account, from a signed-in account that does not publish this listing. Nothing else is asked — you can say what you think before you install it. Publishers can reply once per review, and a review can be edited or deleted by whoever wrote it.
Any signed-in account that does not publish Hedgehood Options can review it, once — before installing it or after. A review from an account that has installed it is marked as one.
Nobody has reviewed this listing. The rating on the card is the mean of the reviews written here and nothing else, so there is no rating until somebody writes the first — which takes a signed-in account that does not publish it, and nothing else.