Prepare: put a hold on a Borro position
hold_openUnsigned transactions putting part of the wallet's Borro position on hold for one payee, up to a cap in USDG and until an expiry, while the shares keep earning (the vault's interest or lending fees, and the $BORRO Drip). vault: "USDG" (the default: usdg, the cap unless given, goes into bUSDG and the hold is those shares, openWithUsdg) or a stock's ticker (shares of its Borro vault the wallet holds, "all" or an amount; worth more than the cap at the vault's cover). mode: "metered" (the default: x402 requests paid with vouchers, hold_pay) or "charge" (the payee charges up to the cap). With payment_required (a merchant's 402 offering the borro-hold scheme) the payee, the vaults it takes, the least cap and life are the merchant's. expiry_seconds: up to 90 days (default the merchant's, else a day). The payer cannot take the shares back before the expiry and a 4-day grace after it, in which the payee may still collect; the payee or its operator can release them any time, and after the grace anyone can reclaim them for the payer. The terms the payer accepts (the stock's desk, the most slippage on its sales, the most fee) come from the vault's listing and the fee now, and max_slip_bps or max_fee_bps tighten them; they are fixed for the hold's life. An exact approval to BorroHolds comes before it when one is missing; simulated from the wallet. Returns the hold's id.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"wallet": "<wallet>"
},
"name": "hold_open"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| cap | No | The most USDG the payee can ever be paid from the hold, in whole units as a decimal string, like "1.5" | |
| mode | No | metered (default) or charge | |
| salt | No | 32 bytes of 0x hex for the hold's id (default: fresh) | |
| usdg | No | USDG hold: the USDG to put in (default: the cap and 0.000002 for the vault's rounding), in whole units as a decimal string, like "1.5" | |
| payee | No | Who the hold pays (or give payment_required) | |
| vault | No | "USDG" (default) or a stock's ticker, like NVDA | |
| shares | No | Stock (or bUSDG) hold: the vault shares to hold, like "0.5", or "all" | |
| wallet | Yes | The wallet's address (0x...); the transactions are built for it to sign | |
| operator | No | Charge mode: an address that may charge and release for the payee | |
| max_fee_bps | No | The most fee the payer accepts, in basis points (default: BorroHolds' fee now) | |
| max_slip_bps | No | The most slippage the payer accepts on a stock hold's sales, in basis points (default: the listing's now) | |
| expiry_seconds | No | How long the hold lasts, in seconds (60 to 7776000) | |
| payment_required | No | A merchant's 402 PaymentRequired (its PAYMENT-REQUIRED header value or JSON body) offering borro-hold |