addrbookFor publishers
← The evidence ledger

Evidence row 738459

Observed , by probe.mcp/1.

Kind
mcp.tools
About
endpoint e28cf317-2d47-47d9-8ea5-bf21aaa2a5b4
Recorded
Previous row
None: the first of its kind about this subject
Body SHA-256
3a46d0675e2c16baa1668b006d9c63278e2cdd67b930896addc0f7c94ade7d93
Leaf
0x012685be6900e765ffdcbda3073f62e24c015a1a7daf04537d7bf22fd9e83a90

What was observed

{
  "count": 24,
  "tools": [
    {
      "description": "Cancel one resting order on an exchange. Use to withdraw an unfilled limit order or a take-profit. A held position's stop-loss cannot be cancelled (move it with a new stop or close the position): this keeps every position protected. Not for closing positions (use close_perp_position_reduce_only). Inputs: order_id (from get_my_open_orders), symbol, venue. Works while trading is halted. Next: get_my_open_orders.",
      "inputSchema": {
        "properties": {
          "order_id": {
            "description": "From get_my_open_orders",
            "maxLength": 64,
            "minLength": 1,
            "title": "Order Id",
            "type": "string"
          },
          "symbol": {
            "description": "Base coin, e.g. BTC",
            "maxLength": 20,
            "minLength": 1,
            "title": "Symbol",
            "type": "string"
          },
          "venue": {
            "default": "hyperliquid",
            "description": "Venue: sandbox, hyperliquid, okx, bybit or binance. Omitted: the agent's only venue, else hyperliquid, else your only connected venue, else sandbox",
            "title": "Venue",
            "type": "string"
          }
        },
        "required": [
          "order_id",
          "symbol"
        ],
        "title": "cancel_open_orderArguments",
        "type": "object"
      },
      "name": "cancel_open_order"
    },
    {
      "description": "Close all or part of a perpetual futures position with a reduce-only market order, so it can never open or flip a position. Use to take profit, cut a loss or reduce exposure; it is also the only way to undo a filled order. Third-party apps can close only positions they opened. Not for cancelling resting orders (use cancel_open_order). Inputs: symbol, venue, close_pct (1-100, default 100). Works while trading is halted. Next: get_my_open_positions.",
      "inputSchema": {
        "properties": {
          "close_pct": {
            "default": 100,
            "description": "Percent of the position to close, 1-100",
            "exclusiveMinimum": 0,
            "maximum": 100,
            "title": "Close Pct",
            "type": "number"
          },
          "symbol": {
            "description": "Base coin, e.g. BTC",
            "maxLength": 20,
            "minLength": 1,
            "title": "Symbol",
            "type": "string"
          },
          "venue": {
            "default": "hyperliquid",
            "description": "Venue: sandbox, hyperliquid, okx, bybit or binance. Omitted: the agent's only venue, else hyperliquid, else your only connected venue, else sandbox",
            "title": "Venue",
            "type": "string"
          }
        },
        "required": [
          "symbol"
        ],
        "title": "close_perp_position_reduce_onlyArguments",
        "type": "object"
      },
      "name": "close_perp_position_reduce_only"
    },
    {
      "description": "Current perpetual futures funding rate for one coin on every exchange TradeHub supports, per interval and annualised, with the age of each reading. Use when choosing where to hold a long or a short, or to check a funding spread. Not a forecast: rates change every interval. Input: symbol (base coin). Rates are fractions; positive means longs pay shorts. Sorted by annualised rate, highest first; TradeHub takes no rebates from any exchange. Next: get_perp_contract_rules(venue, symbol) or size_position_by_risk.",
      "inputSchema": {
        "properties": {
          "symbol": {
            "description": "Base coin, e.g. BTC",
            "maxLength": 20,
            "minLength": 1,
            "title": "Symbol",
            "type": "string"
          }
        },
        "required": [
          "symbol"
        ],
        "title": "compare_funding_rates_across_venuesArguments",
        "type": "object"
      },
      "name": "compare_funding_rates_across_venues"
    },
    {
      "description": "Use to choose where to trade one perpetual futures coin: bid, ask, spread, trading fee (your account's rate if the exchange reports it, else the published one) and measured execution over 7 days, per exchange (with an account, also the sandbox). With side (and size_base or notional_usd): ranked by price plus taker fee plus a cost for poor execution; hold_hours adds funding, exit fee. With an account it shows which venues you may use and can afford; best_venue is the cheapest. Not for one venue's depth (use get_order_book). No rebates. Next: preview_perp_order with that venue, or venue \"best\".",
      "inputSchema": {
        "properties": {
          "hold_hours": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "maximum": 2160,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Optional, with side: how long you expect to hold, in hours; adds funding at today's rate and the exit fee, and ranks by that total cost",
            "title": "Hold Hours"
          },
          "leverage": {
            "default": 5,
            "description": "For the margin needed, e.g. 5",
            "maximum": 125,
            "minimum": 1,
            "title": "Leverage",
            "type": "integer"
          },
          "notional_usd": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Or the size in USD",
            "title": "Notional Usd"
          },
          "side": {
            "anyOf": [
              {
                "enum": [
                  "buy",
                  "sell"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Optional: rank by the all-in price for this side (the price you would take plus the venue's taker fee)",
            "title": "Side"
          },
          "size_base": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Optional, with side: size in the base coin, to see each venue's cost in USD and whether your free margin there covers it",
            "title": "Size Base"
          },
          "symbol": {
            "description": "Base coin, e.g. BTC",
            "maxLength": 20,
            "minLength": 1,
            "title": "Symbol",
            "type": "string"
          }
        },
        "required": [
          "symbol"
        ],
        "title": "compare_perp_quotes_across_venuesArguments",
        "type": "object"
      },
      "name": "compare_perp_quotes_across_venues"
    },
    {
      "description": "Execute a preview from preview_perp_order: re-checked at a fresh price, then sent to the exchange with its stop-loss placed there. Use only after a successful preview. Not for new or changed orders (preview again). If a person must approve (propose level, or no trade:execute scope) it waits; wait_seconds (0-30) holds the call open for the decision. Inputs: preview_id, client_order_id (idempotency key: repeating it returns the first result). A fill cannot be undone; the remedy is close_perp_position_reduce_only. Next: get_order_request_status(request_id) while pending.",
      "inputSchema": {
        "properties": {
          "client_order_id": {
            "description": "Your idempotency key, unique per agent; repeating it returns the first result instead of a second order",
            "maxLength": 64,
            "minLength": 1,
            "title": "Client Order Id",
            "type": "string"
          },
          "preview_id": {
            "description": "From preview_perp_order, within 30 seconds",
            "maxLength": 64,
            "minLength": 1,
            "title": "Preview Id",
            "type": "string"
          },
          "wait_seconds": {
            "default": 0,
            "description": "If the order needs a person's approval, wait up to this long for the decision before returning",
            "maximum": 30,
            "minimum": 0,
            "title": "Wait Seconds",
            "type": "integer"
          }
        },
        "required": [
          "preview_id",
          "client_order_id"
        ],
        "title": "execute_previewed_orderArguments",
        "type": "object"
      },
      "name": "execute_previewed_order"
    },
    {
      "description": "Equity, free margin, used margin and open profit or loss on every exchange account the user connected (Hyperliquid, Bybit, Binance, OKX, sandbox), and the total. Use to report balances or to compare free margin across exchanges. Not needed before opening: size_position_by_risk reads equity itself. Not for positions (use get_my_open_positions). No inputs. Amounts in USD (USDC / USDT count as USD). Next: get_my_open_positions.",
      "inputSchema": {
        "properties": {},
        "title": "get_my_account_balancesArguments",
        "type": "object"
      },
      "name": "get_my_account_balances"
    },
    {
      "description": "How this agent has done: trades opened and closed, wins, realised profit or loss in USD, and its most common refusals with what to do differently, over the last N days. Use at the start of a session or after a run of rejections, to avoid repeating mistakes. Not for the trades themselves (use get_my_trade_history). Input: days (1-90). Only this agent's own record; a person sees all agents together. Next: get_my_trading_permissions.",
      "inputSchema": {
        "properties": {
          "days": {
            "default": 30,
            "description": "Look-back window in days",
            "maximum": 90,
            "minimum": 1,
            "title": "Days",
            "type": "integer"
          }
        },
        "title": "get_my_agent_performanceArguments",
        "type": "object"
      },
      "name": "get_my_agent_performance"
    },
    {
      "description": "Resting orders on the user's exchange accounts, including protective stop-loss and take-profit orders (is_trigger = true), and trigger entries TradeHub holds (type TRIGGER_ENTRY, order_id req_…). Use to find an order_id to cancel or to confirm a stop is in place. Not for filled trades (use get_my_trade_history). Inputs: optional venue and symbol filters. Sizes in the base coin, prices in USD. Next: cancel_open_order(order_id).",
      "inputSchema": {
        "properties": {
          "symbol": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Only this base coin",
            "title": "Symbol"
          },
          "venue": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Only this venue",
            "title": "Venue"
          }
        },
        "title": "get_my_open_ordersArguments",
        "type": "object"
      },
      "name": "get_my_open_orders"
    },
    {
      "description": "Every open perpetual futures position on every connected exchange account: side, size, entry, mark, open profit or loss, leverage, and the liquidation price with how far away it is. Use before closing, adjusting a stop or reporting exposure. Not for resting orders or stops (use get_my_open_orders). No inputs. Sizes in the base coin, prices in USD. Next: close_perp_position_reduce_only or get_my_open_orders.",
      "inputSchema": {
        "properties": {},
        "title": "get_my_open_positionsArguments",
        "type": "object"
      },
      "name": "get_my_open_positions"
    },
    {
      "description": "The person's global risk limits (per-trade risk, daily / weekly / monthly loss, drawdown, leverage, open positions) and how much of each is used, across all exchanges, plus limit increases waiting to take effect. Use when a trade was rejected by a user-level limit or before planning several trades. Not for this agent's own permissions (use get_my_trading_permissions). No inputs. Fractions of equity and USD; real money and the sandbox are counted separately. Next: size_position_by_risk.",
      "inputSchema": {
        "properties": {},
        "title": "get_my_risk_limits_usageArguments",
        "type": "object"
      },
      "name": "get_my_risk_limits_usage"
    },
    {
      "description": "Recent trades opened through TradeHub with entry, stop, take-profit, leverage and realised profit or loss. Third-party apps see only the trades they opened; the user's own keys see all. Use for reviews and reports. Not for live positions (use get_my_open_positions). Input: limit (1-200). Sizes in the base coin, money in USD. Next: get_my_open_positions.",
      "inputSchema": {
        "properties": {
          "limit": {
            "default": 50,
            "description": "Most recent N trades",
            "maximum": 200,
            "minimum": 1,
            "title": "Limit",
            "type": "integer"
          }
        },
        "title": "get_my_trade_historyArguments",
        "type": "object"
      },
      "name": "get_my_trade_history"
    },
    {
      "description": "What this agent may do right now on TradeHub: autonomy level (read, propose = every order needs a person's approval, preauth = executes within limits), allowed venues, symbols and actions, per-trade and daily limits, today's usage, connected venues and whether trading is halted. Use first in every session and after any rejection that mentions your mandate. Not for account balances (use get_my_account_balances). No inputs. Limits are fractions of equity or USD. Only a person can widen them, on the Web, and widening waits 24 hours. Next: size_position_by_risk or get_my_open_positions.",
      "inputSchema": {
        "properties": {},
        "title": "get_my_trading_permissionsArguments",
        "type": "object"
      },
      "name": "get_my_trading_permissions"
    },
    {
      "description": "Order book levels for one perpetual futures contract on one exchange, best first, as [price, size]. Use to judge liquidity before a large market order. Not for the best price across exchanges (use compare_perp_quotes_across_venues). Inputs: symbol, venue (without an account: hyperliquid only), depth (1-50 levels). Prices in USD per coin, sizes in the base coin. Next: preview_perp_order.",
      "inputSchema": {
        "properties": {
          "depth": {
            "default": 20,
            "description": "Levels per side",
            "maximum": 50,
            "minimum": 1,
            "title": "Depth",
            "type": "integer"
          },
          "symbol": {
            "description": "Base coin, e.g. BTC",
            "maxLength": 20,
            "minLength": 1,
            "title": "Symbol",
            "type": "string"
          },
          "venue": {
            "default": "hyperliquid",
            "description": "Venue: sandbox, hyperliquid, okx, bybit or binance. Omitted: the agent's only venue, else hyperliquid, else your only connected venue, else sandbox",
            "title": "Venue",
            "type": "string"
          }
        },
        "required": [
          "symbol"
        ],
        "title": "get_order_bookArguments",
        "type": "object"
      },
      "name": "get_order_book"
    },
    {
      "description": "The current state of an order request made with execute_previewed_order: pending_approval, executed, rejected, failed, expired or declined, with fill price and stop order id once executed. Use to follow an order that was waiting for a person's approval. Not for listing orders (use get_my_open_orders). Input: request_id. Next: get_my_open_positions once executed.",
      "inputSchema": {
        "properties": {
          "request_id": {
            "description": "From execute_previewed_order",
            "maxLength": 64,
            "minLength": 1,
            "title": "Request Id",
            "type": "string"
          }
        },
        "required": [
          "request_id"
        ],
        "title": "get_order_request_statusArguments",
        "type": "object"
      },
      "name": "get_order_request_status"
    },
    {
      "description": "Rules and current funding for one perpetual futures contract on one exchange: mark price, size step, minimum size, price tick, maximum leverage, funding rate per interval and annualised. Use when a limit price or leverage must fit the venue; not needed for market orders (sizing and preview round for you). Not for comparing exchanges (use compare_perp_quotes_across_venues or compare_funding_rates_across_venues). Inputs: symbol (base coin, e.g. BTC), venue (without an account: hyperliquid only). Prices in USD per coin, sizes in the base coin, rates as fractions. Next: size_position_by_risk.",
      "inputSchema": {
        "properties": {
          "symbol": {
            "description": "Base coin, e.g. BTC",
            "maxLength": 20,
            "minLength": 1,
            "title": "Symbol",
            "type": "string"
          },
          "venue": {
            "default": "hyperliquid",
            "description": "Venue: sandbox, hyperliquid, okx, bybit or binance. Omitted: the agent's only venue, else hyperliquid, else your only connected venue, else sandbox",
            "title": "Venue",
            "type": "string"
          }
        },
        "required": [
          "symbol"
        ],
        "title": "get_perp_contract_rulesArguments",
        "type": "object"
      },
      "name": "get_perp_contract_rules"
    },
    {
      "description": "Price history for one coin as candles: open, high, low, close and volume per interval (1m, 5m, 15m, 1h, 4h, 1d), up to 500, oldest first, from Hyperliquid's public market, the same prices the sandbox trades at. Use to look back at price action, find recent highs and lows for a stop, or judge the trend. Not for the live best price (use compare_perp_quotes_across_venues) or ready-made indicators (use get_technical_indicators_15m). Inputs: symbol (base coin), interval (default 1h), limit (default 100). Prices in USD per coin, volume in the base coin, times UTC. Next: size_position_by_risk.",
      "inputSchema": {
        "properties": {
          "interval": {
            "default": "1h",
            "description": "Candle length",
            "enum": [
              "1m",
              "5m",
              "15m",
              "1h",
              "4h",
              "1d"
            ],
            "title": "Interval",
            "type": "string"
          },
          "limit": {
            "default": 100,
            "description": "How many candles, newest last (1-500)",
            "maximum": 500,
            "minimum": 1,
            "title": "Limit",
            "type": "integer"
          },
          "symbol": {
            "description": "Base coin, e.g. BTC",
            "maxLength": 20,
            "minLength": 1,
            "title": "Symbol",
            "type": "string"
          }
        },
        "required": [
          "symbol"
        ],
        "title": "get_price_candlesArguments",
        "type": "object"
      },
      "name": "get_price_candles"
    },
    {
      "description": "RSI, MACD, Bollinger %B, ATR, EMA trend and volume rank on Hyperliquid's 15-minute candles for one coin, plus the current funding rate. Use as inputs to your own decision; it is not a trading recommendation. ATR is useful for placing a stop. Not for live quotes (use compare_perp_quotes_across_venues). Input: symbol (base coin). Prices in USD per coin. Next: size_position_by_risk.",
      "inputSchema": {
        "properties": {
          "symbol": {
            "description": "Base coin, e.g. BTC",
            "maxLength": 20,
            "minLength": 1,
            "title": "Symbol",
            "type": "string"
          }
        },
        "required": [
          "symbol"
        ],
        "title": "get_technical_indicators_15mArguments",
        "type": "object"
      },
      "name": "get_technical_indicators_15m"
    },
    {
      "description": "Whether each exchange is reachable right now: TradeHub's public price feed per exchange, and, with an account, each connected exchange account's latency, last error and rate-limit headroom. Use after a VENUE_UNAVAILABLE error or before trading on an exchange that misbehaved. Not for prices (use compare_perp_quotes_across_venues). No inputs. Next: retry the failed call, or use another venue.",
      "inputSchema": {
        "properties": {},
        "title": "get_venue_healthArguments",
        "type": "object"
      },
      "name": "get_venue_health"
    },
    {
      "description": "Check a perpetual futures order with its stop-loss (optional take-profit) against this agent's permissions, the person's limits and the price band, sending nothing. Use before every new position, also one that waits for a price (trigger_price). Not for closing (use close_perp_position_reduce_only). size_base (base coin): from size_position_by_risk; the stop: stop_loss (USD) or stop_pct. Returns preview_id (valid 30 s), notional, risk, margin, likely fill and every check; a rejection names the failing check and, when a fix is certain, suggested_args. Next: execute_previewed_order(preview_id).",
      "inputSchema": {
        "anyOf": [
          {
            "required": [
              "stop_loss"
            ]
          },
          {
            "required": [
              "stop_pct"
            ]
          }
        ],
        "properties": {
          "hold_hours": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "maximum": 2160,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Optional: how long you expect to hold, in hours, to see funding and the round trip's cost (and, with venue \"best\", to choose by them)",
            "title": "Hold Hours"
          },
          "leverage": {
            "default": 5,
            "description": "Leverage, e.g. 5",
            "maximum": 125,
            "minimum": 1,
            "title": "Leverage",
            "type": "integer"
          },
          "order_type": {
            "default": "market",
            "enum": [
              "market",
              "limit"
            ],
            "title": "Order Type",
            "type": "string"
          },
          "price": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Limit price, USD per coin (limit orders only)",
            "title": "Price"
          },
          "reason": {
            "anyOf": [
              {
                "maxLength": 500,
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Optional: why, in your words (up to 500 characters). The person sees it on the approval card and in history; other agents never do",
            "title": "Reason"
          },
          "side": {
            "description": "buy = open or add to a long, sell = open or add to a short",
            "enum": [
              "buy",
              "sell"
            ],
            "title": "Side",
            "type": "string"
          },
          "size_base": {
            "description": "Size in the base coin (BTC, not USD); rounded down to the venue step. Get it from size_position_by_risk",
            "exclusiveMinimum": 0,
            "title": "Size Base",
            "type": "number"
          },
          "stop_loss": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Required stop-loss, USD per coin: below entry for buys, above for sells. Or give stop_pct",
            "title": "Stop Loss"
          },
          "stop_pct": {
            "anyOf": [
              {
                "exclusiveMaximum": 1,
                "exclusiveMinimum": 0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Or the stop as a distance from the entry (trigger price, limit price or mark), 0.02 = 2%",
            "title": "Stop Pct"
          },
          "symbol": {
            "description": "Base coin, e.g. BTC",
            "maxLength": 20,
            "minLength": 1,
            "title": "Symbol",
            "type": "string"
          },
          "take_profit": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Optional take-profit, USD per coin",
            "title": "Take Profit"
          },
          "trigger_price": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Optional: hold the order and open it at market only when the mark reaches this price (a breakout or a pullback), re-checked then; market orders only. Risk is computed from this price",
            "title": "Trigger Price"
          },
          "trigger_valid_hours": {
            "anyOf": [
              {
                "maximum": 168,
                "minimum": 1,
                "type": "integer"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "With trigger_price: hours it waits before lapsing, 1-168 (default 24)",
            "title": "Trigger Valid Hours"
          },
          "venue": {
            "default": "hyperliquid",
            "description": "Venue: sandbox, hyperliquid, okx, bybit or binance. Omitted: the agent's only venue, else hyperliquid, else your only connected venue, else sandbox; or \"best\": the cheapest all-in venue (price plus fee) you may use and have the margin for",
            "title": "Venue",
            "type": "string"
          }
        },
        "required": [
          "symbol",
          "side",
          "size_base"
        ],
        "title": "preview_perp_orderArguments",
        "type": "object"
      },
      "name": "preview_perp_order"
    },
    {
      "description": "Make a held position's stop-loss move by itself, only ever toward the price: trailing (it follows the best price at trail_pct behind it) or breakeven (it moves to the entry once the price reaches activate_at). TradeHub checks about every 5 seconds; each move follows tighten_stop_loss's rules and is audited. Use to lock in profit on a winning position. One rule per position: a new one replaces it, kind=none removes it, it ends when the position closes. Not for a one-off move (use tighten_stop_loss). Next: get_my_open_positions shows the rule.",
      "inputSchema": {
        "properties": {
          "activate_at": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Price, USD per coin, from which the rule acts; required for breakeven (beyond the entry on the profit side), optional for trailing",
            "title": "Activate At"
          },
          "kind": {
            "description": "trailing: the stop follows the best price at trail_pct behind it; breakeven: the stop moves to the entry once the price reaches activate_at; none: remove the rule",
            "enum": [
              "trailing",
              "breakeven",
              "none"
            ],
            "title": "Kind",
            "type": "string"
          },
          "symbol": {
            "description": "Base coin, e.g. BTC",
            "maxLength": 20,
            "minLength": 1,
            "title": "Symbol",
            "type": "string"
          },
          "trail_pct": {
            "anyOf": [
              {
                "maximum": 0.2,
                "minimum": 0.001,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "trailing only: distance behind the best price as a fraction, 0.001-0.2 (0.02 = 2%)",
            "title": "Trail Pct"
          },
          "venue": {
            "default": "hyperliquid",
            "description": "Venue: sandbox, hyperliquid, okx, bybit or binance. Omitted: the agent's only venue, else hyperliquid, else your only connected venue, else sandbox",
            "title": "Venue",
            "type": "string"
          }
        },
        "required": [
          "symbol",
          "kind"
        ],
        "title": "set_stop_loss_ruleArguments",
        "type": "object"
      },
      "name": "set_stop_loss_rule"
    },
    {
      "description": "Replace a held position's take-profits: one level or several (e.g. 50% at 98000, the rest at 101000), each a reduce-only trigger on the exchange, so it can only shrink the position. Use after entry, or to move or remove them ([] removes all). Not for the stop-loss (use tighten_stop_loss) or for closing now (use close_perp_position_reduce_only). Inputs: symbol, levels [{price, close_pct}], venue. New orders are placed before the old ones go. Works while trading is halted. Next: get_my_open_orders.",
      "inputSchema": {
        "properties": {
          "levels": {
            "description": "Up to 4 levels, percentages adding up to at most 100; [] removes every take-profit",
            "items": {
              "properties": {
                "close_pct": {
                  "description": "Percent of the position this level closes, e.g. 50",
                  "exclusiveMinimum": 0,
                  "maximum": 100,
                  "title": "Close Pct",
                  "type": "number"
                },
                "price": {
                  "description": "Trigger price, USD per coin: above the mark for a long, below for a short",
                  "exclusiveMinimum": 0,
                  "title": "Price",
                  "type": "number"
                }
              },
              "required": [
                "price",
                "close_pct"
              ],
              "title": "TakeProfitLevel",
              "type": "object"
            },
            "maxItems": 4,
            "title": "Levels",
            "type": "array"
          },
          "symbol": {
            "description": "Base coin, e.g. BTC",
            "maxLength": 20,
            "minLength": 1,
            "title": "Symbol",
            "type": "string"
          },
          "venue": {
            "default": "hyperliquid",
            "description": "Venue: sandbox, hyperliquid, okx, bybit or binance. Omitted: the agent's only venue, else hyperliquid, else your only connected venue, else sandbox",
            "title": "Venue",
            "type": "string"
          }
        },
        "required": [
          "symbol",
          "levels"
        ],
        "title": "set_take_profit_levelsArguments",
        "type": "object"
      },
      "name": "set_take_profit_levels"
    },
    {
      "description": "Turns \"risk 1% of equity, stop 2% below\" into a size in the base coin, rounded down to the venue step and capped by every limit (this agent's, the person's and TradeHub's). Reads equity, mark and contract rules itself: no need for get_my_account_balances or get_perp_contract_rules first. Use before every preview_perp_order. Not an order: nothing is sent. Inputs: symbol, stop_loss (USD) or stop_pct with side, risk_pct or risk_usd (default: the most allowed), venue, entry_price (default: mark), leverage. Next: preview_perp_order with the returned size_base, stop_loss and leverage.",
      "inputSchema": {
        "properties": {
          "entry_price": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Planned entry, USD per coin; omitted: the mark",
            "title": "Entry Price"
          },
          "leverage": {
            "default": 5,
            "description": "Leverage for the margin estimate, e.g. 5",
            "maximum": 125,
            "minimum": 1,
            "title": "Leverage",
            "type": "integer"
          },
          "notional_usd": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Or the position's value in USD (\"buy $200 worth\"), instead of risk_pct / risk_usd; still capped by the risk limits",
            "title": "Notional Usd"
          },
          "risk_pct": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "maximum": 1,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Loss at stop as a fraction of equity (0.01 = 1%); omitted with risk_usd also omitted: the largest your limits allow",
            "title": "Risk Pct"
          },
          "risk_usd": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Loss at stop in USD (instead of risk_pct)",
            "title": "Risk Usd"
          },
          "side": {
            "anyOf": [
              {
                "enum": [
                  "buy",
                  "sell"
                ],
                "type": "string"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "buy = long, sell = short; needed with stop_pct",
            "title": "Side"
          },
          "stop_loss": {
            "anyOf": [
              {
                "exclusiveMinimum": 0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Stop-loss price, USD per coin; below entry for a long, above for a short. Or give stop_pct and side instead",
            "title": "Stop Loss"
          },
          "stop_pct": {
            "anyOf": [
              {
                "exclusiveMaximum": 1,
                "exclusiveMinimum": 0,
                "type": "number"
              },
              {
                "type": "null"
              }
            ],
            "default": null,
            "description": "Stop distance from entry as a fraction (0.02 = 2%), instead of stop_loss; needs side",
            "title": "Stop Pct"
          },
          "symbol": {
            "description": "Base coin, e.g. BTC",
            "maxLength": 20,
            "minLength": 1,
            "title": "Symbol",
            "type": "string"
          },
          "venue": {
            "default": "hyperliquid",
            "description": "Venue: sandbox, hyperliquid, okx, bybit or binance. Omitted: the agent's only venue, else hyperliquid, else your only connected venue, else sandbox",
            "title": "Venue",
            "type": "string"
          }
        },
        "required": [
          "symbol"
        ],
        "title": "size_position_by_riskArguments",
        "type": "object"
      },
      "name": "size_position_by_risk"
    },
    {
      "description": "Emergency stop for the whole account: cancel every resting order, close every position on every exchange with reduce-only orders, and block new positions. Use only when the person asks to stop everything or something is clearly wrong. Only a person can resume, on the Web with a verification code; third-party apps never get this permission. Not for closing one position (use close_perp_position_reduce_only). Input: reason. Next: get_my_open_positions to confirm nothing is left.",
      "inputSchema": {
        "properties": {
          "reason": {
            "default": "kill switch",
            "description": "Why, for the user and the audit log",
            "maxLength": 200,
            "title": "Reason",
            "type": "string"
          }
        },
        "title": "stop_all_trading_nowArguments",
        "type": "object"
      },
      "name": "stop_all_trading_now"
    },
    {
      "description": "Move a held position's stop-loss closer to the current price, e.g. to breakeven or to lock in profit: the new stop is placed first, then the old one is cancelled, so the position is never unprotected. Use when the user asks to raise a long's stop or lower a short's. Not for widening a stop (never allowed while the position is open) or for closing (use close_perp_position_reduce_only). Inputs: symbol, stop_loss (USD per coin), venue. Works while trading is halted. Next: get_my_open_orders to see the new stop.",
      "inputSchema": {
        "properties": {
          "stop_loss": {
            "description": "New stop price, USD per coin: closer to the price than the current stop (higher for a long, lower for a short), still on the loss side of the mark",
            "exclusiveMinimum": 0,
            "title": "Stop Loss",
            "type": "number"
          },
          "symbol": {
            "description": "Base coin, e.g. BTC",
            "maxLength": 20,
            "minLength": 1,
            "title": "Symbol",
            "type": "string"
          },
          "venue": {
            "default": "hyperliquid",
            "description": "Venue: sandbox, hyperliquid, okx, bybit or binance. Omitted: the agent's only venue, else hyperliquid, else your only connected venue, else sandbox",
            "title": "Venue",
            "type": "string"
          }
        },
        "required": [
          "symbol",
          "stop_loss"
        ],
        "title": "tighten_stop_lossArguments",
        "type": "object"
      },
      "name": "tighten_stop_loss"
    }
  ]
}

What the leaf hashes

{"body":"3a46d0675e2c16baa1668b006d9c63278e2cdd67b930896addc0f7c94ade7d93","id":738459,"kind":"mcp.tools","method":"probe.mcp/1","observed_us":1793160763233587,"prev":null,"subject":"e28cf317-2d47-47d9-8ea5-bf21aaa2a5b4","subject_kind":"endpoint"}

Proof

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

  1. 0x012633b7a0bea7a63410bb2d7b7515637ba12f1b0a65c3bd91c41a00efde5240
  2. 0x12f5c101d91ff1531262c7d644871b50fb55fc352c2c3673b76b1134b1a672e5
  3. 0x7208f26b2aa64569efc558bf4d478685a6d121141e30ae3ea8dff538237ec1e7
  4. 0xfb6af655b884756bf9596d9ecd8d596607235e93d0ed76b3d83d6d8a02370e56
  5. 0x5fb12d4603a28b6a599adf788308ac285bf74ebd251ab42adb44349d31de06ac
  6. 0xbed80da884b5e5ac034758c5bfc4a725e2976c987adee481f22a295fab13c4d8
  7. 0x30abaaa3d6bd1c43596653e9568db946f2f8c95e092c21871d9d9c05f80f856a
  8. 0x716fd42496ccc6df60e9b32ff66f00dd4cbd0d1255239c227a161e629948e5b6
  9. 0x33d952de25c28d8273f891f42d06cab735cf33f19e3adf96e19d30cc76d81c3f
  10. 0x759fcd9412d3bce5b8cb336fca97c18c4713f76a19bafa3f5d0e3c0fec192f78
  11. 0x095c5dad4865523049f3ceea0ebfae08d38046a208f4f65d2a5afbeef3cc7622
  12. 0x46c4f11dad4d08ffd9d9e212b2e53f5c771a64e50b5177dba922f2ce7bf8633a
  13. 0x2748717dc805010a80117b9368e06da73797779c05701bb29fa2d6d90fbc4b98
  14. 0xf3fd571846115a5778f2f20ec53a7e9b272de5f8737a627379966b3745ad5e29
  15. 0x2d4bed6c1c0f427d29eba935cdedcc76c72935d41919903a3b217a8ffca38438
  16. 0x35e8995c30094446ec790423171382fccb377081b921295b0ae3840cc2c4f52c
  17. 0xf078ea7d84d98dbeffed23d8e67b36751e60464ffd4cfdc005e0aa6f8cb9b459
  18. 0xe027395fafb7fc41921c42ca0542524ea22204cbd5908b70b27f3d5fb26f5d0f
Day root
0x2c19037464cc4c493624565f01775d6446fc78eaa118fc6865bfe2bfca9ff78e
Chained
0xd1d7dee8322ceff8f4c8d83aa1fe4a4466825c2af1c97dbde3d35db61234f7be
Published
On Arc Testnet, block 69584042: 0x8bae2b1d097834c8b458513862d70d29ee807e98dc2e863b27250131c15b35ae

How to check it · This row as JSON