Borro
Stock lending on Robinhood Chain: read markets and prepare lends, loans, shorts and credit lines.
我該用這個嗎
品質與安全性
發現項目(9)
- HIGH
- MEDIUM在 prices 中
- MEDIUM在 bind_builder 中
- LOW在 bear_coins 中
- LOW在 supply 中
- LOW在 withdraw 中
- LOW在 repay 中
- LOW在 buy_with_eth 中
- LOW在 close_long 中
根據工具定義與協定合規性的自動化分析。
上下文成本
這是每次將伺服器的工具載入模型上下文時所消耗的約略 token 數量。數量越高,可用於其他工作的注意力就越少。
安裝
一鍵安裝
將以下內容加入你的 `claude_desktop_config.json` 檔案:
{
"mcpServers": {
"borro": {
"url": "https://borro.markets/mcp"
}
}
}遠端端點
https://borro.markets/mcpstreamable-http它能做什麼
工具清單
工具(47)
🟢markets
Every stock on Borro and the USDG vault: price, what is lent, borrowed and free to short, what lenders earn and what shorters pay a year (one number each, $BORRO included once it has been paid), the USDG borrowing rate against each stock, and the $BORRO Drip to lenders: dollars a day per pool at today's price, and the rate a deposit of a given size would get.
輸入結構描述
{
"type": "object",
"properties": {}
}🟢market(symbol)
One stock's full line from the shelf: rates, sizes, limits, open fee and its contracts.
輸入結構描述
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)"
}
},
"required": [
"symbol"
]
}🟢health(wallet)
For bots that watch for liquidation: every short and USDG loan of a wallet, worst first, with how much of its limit it uses (limit_used, 1 = Morpho can liquidate it now), health (1 / limit_used), the stock price that liquidates it, how far the price is from that in percent, a status (ok, warn from 0.85, danger from 0.95, liquidatable), and the market clock. Also at /health/<wallet>.json.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
}
},
"required": [
"wallet"
]
}🟢position(wallet)
Everything a wallet has on Borro: stock lent, shorts (owed, money held, the price it is closed for you at, and parts: how much of the stock's one short is the wallet's own, a pair's and a basket leg's), USDG loans, USDG lent, open pairs (each with short_now, its own part of the short), gap covers bought and its part of the gap cover pool, options held, written and on order (with what to do next and one yearly number for premiums over what they locked), bear coins it launched, $BORRO to claim, its locker rebates (the share of Borro's fees it gets back for its $BORRO lock, what is owed and what has been paid), and its ETH and USDG.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
}
},
"required": [
"wallet"
]
}🟢trades
Borro-wide recent shorts opened and closed, newest first.
輸入結構描述
{
"type": "object",
"properties": {}
}🟢prices
For each stock token on Borro: the stock's own price (its Chainlink feed while the market is open; Borro's weekend estimate and 95% band while it is shut), the token's executable buy and sell price on chain for $1,000 and $10,000 (what Borro's short desk would pay or get through its own swap route, before Borro's fee), and the gap in percent (gapPct: the token's mid against the stock). Positive: the token trades over the stock (short it on Borro); negative: under it (buy and lend it). Refreshed every 30 seconds; the same as https://borro.markets/prices.json.
輸入結構描述
{
"type": "object",
"properties": {}
}🟢bear_coins
The bear coins directory: every coin launched on Pons from Borro with its own short, its stock, P/L, burns and fees.
輸入結構描述
{
"type": "object",
"properties": {}
}🟢rules
Borro's house rules, limits, what can go wrong, and every contract address with what it does, to verify on chain.
輸入結構描述
{
"type": "object",
"properties": {}
}🟢open_short(wallet, symbol, amount, deposit)
Unsigned transactions to short a stock from the wallet: approve the deposit if needed, then BorroShort.open (borrow the stock, sell it, hold the money plus the deposit). Priced now, with half a percent of slip allowed; simulated from the wallet. The quote's rebate_estimate is what this short puts in the wallet's weekly locker rebate.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"symbol": {
"type": "string",
"description": "A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)"
},
"amount": {
"type": "string",
"description": "Stock to short, in whole units as a decimal string, like \"1.5\""
},
"deposit": {
"type": "string",
"description": "USDG to add to the money held, beyond the sale (optional, default 0), in whole units as a decimal string, like \"1.5\""
}
},
"required": [
"wallet",
"symbol",
"amount"
]
}🟢close_short(wallet, symbol)
Unsigned transactions to close the wallet's short on a stock: buy back everything owed, return it, take out the money held (with a USDG top-up approval if it is under water). A wallet has one short per stock, shared by any pair or basket legs on it: this closes all of it, and closes_parts lists the parts it takes with it. close_pair closes only a pair's own part.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"symbol": {
"type": "string",
"description": "A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)"
}
},
"required": [
"wallet",
"symbol"
]
}🟢supply(wallet, asset, amount, post)
Unsigned transactions to lend a stock to shorters (it earns lending fees) or USDG in the Borro USDG vault (it earns interest). With post: true, a stock is lent and posted in one step so USDG can be borrowed against it.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"asset": {
"type": "string",
"description": "USDG, or a stock symbol"
},
"amount": {
"type": "string",
"description": "Amount to lend, in whole units as a decimal string, like \"1.5\""
},
"post": {
"type": "boolean",
"description": "Stock only: lend and post as collateral in one step"
}
},
"required": [
"wallet",
"asset",
"amount"
]
}🟢withdraw(wallet, asset, amount, all)
Unsigned transaction to take back lent stock or USDG (part, or all with all: true). Stock on loan to shorters comes back once it is returned.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"asset": {
"type": "string",
"description": "USDG, or a stock symbol"
},
"amount": {
"type": "string",
"description": "Amount to take back, in whole units as a decimal string, like \"1.5\""
},
"all": {
"type": "boolean",
"description": "Take back everything"
}
},
"required": [
"wallet",
"asset"
]
}🟢borrow(wallet, symbol, amount)
Unsigned transaction to borrow USDG against stock already lent and posted (supply with post: true first). The quote's rebate_estimate is what this loan puts in the wallet's weekly locker rebate.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"symbol": {
"type": "string",
"description": "A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)"
},
"amount": {
"type": "string",
"description": "USDG to borrow, in whole units as a decimal string, like \"1.5\""
}
},
"required": [
"wallet",
"symbol",
"amount"
]
}🟢repay(wallet, symbol, amount, all)
Unsigned transactions to repay USDG borrowed against a stock (part, or all with all: true).
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"symbol": {
"type": "string",
"description": "A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)"
},
"amount": {
"type": "string",
"description": "USDG to repay, in whole units as a decimal string, like \"1.5\""
},
"all": {
"type": "boolean",
"description": "Repay everything owed"
}
},
"required": [
"wallet",
"symbol"
]
}🟡bind_builder(wallet, code, timestamp, signature)
Credits a bookrunner's code with the wallet's borrowing on Borro (Bookrunners): the bookrunner earns Borro's own fee on the interest the wallet pays, all of it for 12 months, half after; the wallet pays nothing more. Without signature: EIP-712 typed data for the wallet to sign (eth_signTypedData_v4, no transaction, no gas), good for 10 minutes. With signature and that timestamp: submits it, the same as POST https://borro.markets/builders/bind. One code per wallet; the first binding stands.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"code": {
"type": "string",
"description": "The bookrunner's code, as in borro.markets/?ref=<code>"
},
"timestamp": {
"type": "integer",
"description": "With signature: the timestamp from the typed data that was signed"
},
"signature": {
"type": "string",
"description": "The wallet's EIP-712 signature, 0x and 130 hex characters; leave out to get the typed data"
}
},
"required": [
"wallet",
"code"
]
}🟢open_pair(wallet, long, short, long_amount, short_amount, ...)
Unsigned transactions for a pair trade: buy and lend the long stock in your name (it earns lending fees while held), then short the other, approvals first. Priced now; simulated from the wallet in order.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"long": {
"type": "string",
"description": "A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)"
},
"short": {
"type": "string",
"description": "A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)"
},
"long_amount": {
"type": "string",
"description": "Long stock to buy, in whole units as a decimal string, like \"1.5\""
},
"short_amount": {
"type": "string",
"description": "Stock to short, in whole units as a decimal string, like \"1.5\""
},
"deposit": {
"type": "string",
"description": "USDG held against the short beyond the sale (optional), in whole units as a decimal string, like \"1.5\""
}
},
"required": [
"wallet",
"long",
"short",
"long_amount",
"short_amount"
]
}🟢close_pair(wallet, long, short)
Unsigned transactions to close the wallet's newest open pair of these two stocks: the pair's own part of the short closed (a basket leg or a short of its own on the same stock stays open, listed in stays_open), the long's lent stock taken back (what is free now, if part is on loan). If something else already closed part of the pair's short, this closes what is left and the note says so.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"long": {
"type": "string",
"description": "A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)"
},
"short": {
"type": "string",
"description": "A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)"
}
},
"required": [
"wallet",
"long",
"short"
]
}🟢buy_with_eth(wallet, want, amount, slip_bps)
Unsigned transaction swapping the wallet's ETH for USDG or a stock on Uniswap, or through Route (route.fun) for a stock bought exact in when Route guarantees more (no Borro contract, no Borro fee), for the flows that need them.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"want": {
"type": "string",
"description": "USDG, or a stock symbol"
},
"amount": {
"type": "string",
"description": "How much of it to get, in whole units as a decimal string, like \"1.5\""
},
"slip_bps": {
"type": "integer",
"description": "Most the price may move, in hundredths of a percent (default 100, 1%)"
}
},
"required": [
"wallet",
"want",
"amount"
]
}🟢open_long(wallet, symbol, margin, leverage)
Unsigned transactions for a leveraged long on a stock in one open: USDG margin plus a flash-borrowed debt buy the stock, which is lent (it earns lending fees) and posted, and the debt is borrowed against it in the wallet's own name. Approve the margin and authorize LeverRouter on Morpho if needed, then open. Leverage up to 1.80x on SPY, QQQ and NVDA, 1.35x on the rest.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"symbol": {
"type": "string",
"description": "A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)"
},
"margin": {
"type": "string",
"description": "USDG margin from the wallet, in whole units as a decimal string, like \"1.5\""
},
"leverage": {
"type": "number",
"description": "Leverage, more than 1, like 1.5"
}
},
"required": [
"wallet",
"symbol",
"margin",
"leverage"
]
}🟢close_long(wallet, symbol, percent)
Unsigned transaction closing all or part of the wallet's leveraged long on a stock: the stock is sold, the debt repaid, and the rest comes back in USDG.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"symbol": {
"type": "string",
"description": "A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)"
},
"percent": {
"type": "number",
"description": "How much of the position to close, 1 to 100 (default 100)"
}
},
"required": [
"wallet",
"symbol"
]
}🟢farms(symbol, wallet)
Borro's stock farms: a Uniswap v4 USDG/stock pool per stock, run by Borro's own hook, that lends what swaps do not need on Borro. For each farm: its size, what is kept for swaps and what is lent, its swap fee and squeeze fee now, the lending fees and interest its lent part earns, the last day's and week's swap volume and farmers' fees, and Your APR on a $1,000 deposit as one number (fees at the last week's pace, lending fees and interest, and the $BORRO Drip at today's rate with the lent part counted 1.5x). With a wallet, its part of each farm.
輸入結構描述
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "One stock's farm (optional), by its ticker, like NVDA; farms lists the stocks that have one"
},
"wallet": {
"type": "string",
"description": "A wallet whose part of each farm to show (optional)"
}
}
}🟢farm_deposit(wallet, symbol, usdg, stock, slip_bps)
Unsigned transactions to put USDG and a stock into its farm from the wallet: give usdg or stock (or both) and the other follows the farm's ratio (the feed's price for the first deposit, which sets the farm's price). Approvals of the exact amounts first, then the deposit, simulated from the wallet. Shares are accepted down to slip_bps under the quote.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"symbol": {
"type": "string",
"description": "A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)"
},
"usdg": {
"type": "string",
"description": "USDG to put in (optional if stock is given), in whole units as a decimal string, like \"1.5\""
},
"stock": {
"type": "string",
"description": "Stock to put in (optional if usdg is given), in whole units as a decimal string, like \"1.5\""
},
"slip_bps": {
"type": "integer",
"description": "Most the farm may move against the quote, in hundredths of a percent (default 50, 0.5%)"
}
},
"required": [
"wallet",
"symbol"
]
}🟢farm_withdraw(wallet, symbol, percent, slip_bps)
Unsigned transaction to take part or all of the wallet's money out of a farm. Run from the wallet first to show what comes back now, and what comes as the vault's own shares because borrowers have it out (they keep earning and redeem on Supply once it is free). Always works: never paused, no price feed needed.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"symbol": {
"type": "string",
"description": "A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)"
},
"percent": {
"type": "number",
"description": "How much of the wallet's part to take out, 1 to 100 (default 100)"
},
"slip_bps": {
"type": "integer",
"description": "Least accepted under the preview, in hundredths of a percent (default 50, 0.5%)"
}
},
"required": [
"wallet",
"symbol"
]
}🟢weekend(symbol)
While the stock market is shut (Friday 8pm to Sunday 8pm New York, and holidays) the price feeds stop at their last print. For each stock: the paused price, Borro's weekend price and 95% band (low, high), its typical Monday gap and the last closures' gaps, and the gap cover quotes per side and strike. Also the market clock (closed since, reopens at) and the gap cover pool: what is in it, free and set aside, Borro's share, and one yearly number for what the pool earned. Nothing on chain reads the weekend price.
輸入結構描述
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "One stock (optional), by its ticker, like NVDA; with a pool, its quotes are read from the chain"
}
}
}🟢buy_cover(wallet, symbol, side, notional, strike_bps)
Unsigned transactions to buy Monday-gap cover on a stock while the market is shut (until an hour before the reopen): side up pays if the first feed print after the reopen is more than the strike above the last print (cover for a short), down if it is more than the strike below (for a long); it pays the move beyond the strike, times the cover, up to the pool's cap. Approve exactly the premium, then buy with that premium as the most it may take. Simulated from the wallet.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"symbol": {
"type": "string",
"description": "A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)"
},
"side": {
"type": "string",
"enum": [
"up",
"down"
],
"description": "up (pays on a gap up: for a short) or down (on a gap down: for a long)"
},
"notional": {
"type": "string",
"description": "Cover, in USDG: for a short, about what the shares are worth, in whole units as a decimal string, like \"1.5\""
},
"strike_bps": {
"type": "integer",
"description": "How far the stock must move before it pays, in hundredths of a percent: 100, 200, 300 or 500 are quoted (default 200, 2%)"
}
},
"required": [
"wallet",
"symbol",
"side",
"notional"
]
}🟢deposit_cover(wallet, amount)
Unsigned transactions to put USDG into the gap cover pool, which backs every cover and keeps the premiums (less Borro's share) on top of the Steakhouse USDG vault's interest. Approve exactly the amount, then deposit. A big gap pays covers out of the pool.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"amount": {
"type": "string",
"description": "USDG to deposit, in whole units as a decimal string, like \"1.5\""
}
},
"required": [
"wallet",
"amount"
]
}🟢withdraw_cover(wallet, amount, all)
Unsigned transaction to take USDG out of the gap cover pool, an amount or all: true. Capital is locked while covers are live, from the first buy of a closure until Monday's settlement; withdraw during the week. Run from the wallet first to show what comes back.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"amount": {
"type": "string",
"description": "USDG to withdraw, in whole units as a decimal string, like \"1.5\""
},
"all": {
"type": "boolean",
"description": "Withdraw everything this wallet has in the pool (only when it is all free)"
}
},
"required": [
"wallet"
]
}🟢settle_cover(wallet, id)
Unsigned transaction settling a cover with the feed's first round at or after its reopen (found by walking back from the latest round), with what it pays the buyer. Anyone may send it; the payout always goes to the buyer. When that first print came more than two hours after the reopen, or more than 50% from the reference, or never came in seven days, the transaction voids the cover instead (the premium the pool kept goes back).
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The address that will send it (any address; the payout goes to the cover's buyer)"
},
"id": {
"type": "string",
"description": "The cover's number (position lists a wallet's covers)"
}
},
"required": [
"wallet",
"id"
]
}🟢claim_cover(wallet)
Unsigned transaction taking USDG a settled or voided cover could not send to the wallet (it waits in the pool's owed); position shows owed_usdg.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
}
},
"required": [
"wallet"
]
}🟢options(symbol)
One stock's options chain for this Friday and next (expiry Friday 8pm New York): per strike and side the series id, Borro's fair value (Black-Scholes from the stock's own measured volatility, a guide), delta, the best ask and bid (checked on chain), the IV the ask implies, the shares written and the last traded IV; the stock's price, its volatility a year and the last traded IV; and whether the desk is live, paused and its fee. Prices are dollars a share, premiums USDG a share.
輸入結構描述
{
"type": "object",
"properties": {
"symbol": {
"type": "string",
"description": "A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)"
}
},
"required": [
"symbol"
]
}🟢write_option(wallet, symbol, type, expiry, strike, ...)
Unsigned transactions to write options from the wallet: post an ask at a premium (the collateral is locked now; it fills when a buyer takes it), or with order_id sell into that bid now and receive its premium less Borro's share. A call locks one share of the stock's Borro vault per share written: from the stock (lent into its vault in the same transaction, the default) or from vault shares held (bNVDA). A put locks the strike in USDG in the Steakhouse vault: from USDG (the default) or that vault's shares held. Exact approval of the lock, then the call; simulated from the wallet.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"symbol": {
"type": "string",
"description": "A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)"
},
"type": {
"type": "string",
"enum": [
"call",
"put"
],
"description": "call or put"
},
"expiry": {
"type": "string",
"description": "this (the nearest Friday still taking orders, the default), next, or a Friday's date like 2026-10-16"
},
"strike": {
"type": "string",
"description": "The strike in dollars, on the $0.25 tick, like \"250\""
},
"shares": {
"type": "string",
"description": "Shares to write (at least 0.001), in whole units as a decimal string, like \"1.5\""
},
"premium": {
"type": "string",
"description": "Premium you ask, USDG a share (for an ask), in whole units as a decimal string, like \"1.5\""
},
"from": {
"type": "string",
"enum": [
"stock",
"shares",
"usdg"
],
"description": "Where the lock comes from: a call stock (default) or shares; a put usdg (default) or shares"
},
"order_id": {
"type": "string",
"description": "Sell into this bid instead of posting an ask (its series, its premium)"
}
},
"required": [
"wallet",
"symbol",
"shares"
]
}🟢buy_option(wallet, symbol, type, expiry, strike, ...)
Unsigned transactions to buy options from the best ask of a series (or a given ask with order_id), checked on chain: exact approval of the premium, then fillAsk with that premium as the most it may take. A fill takes the whole ask or leaves at least 0.001 of a share. Returns the cost, Borro's share, the break-even and what it pays at expiry.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"symbol": {
"type": "string",
"description": "A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)"
},
"type": {
"type": "string",
"enum": [
"call",
"put"
],
"description": "call or put"
},
"expiry": {
"type": "string",
"description": "this (default), next, or a Friday's date like 2026-10-16"
},
"strike": {
"type": "string",
"description": "The strike in dollars, like \"250\""
},
"shares": {
"type": "string",
"description": "Shares to buy, in whole units as a decimal string, like \"1.5\""
},
"order_id": {
"type": "string",
"description": "Buy from this ask instead of the best one"
},
"max_premium": {
"type": "string",
"description": "The most to pay in all, USDG (optional), in whole units as a decimal string, like \"1.5\""
}
},
"required": [
"wallet",
"symbol",
"shares"
]
}🟢post_bid(wallet, symbol, type, expiry, strike, ...)
Unsigned transactions to post a bid for a series at a premium a share: the premium for all the shares is locked now in USDG (exact approval, then postBid) and goes to the writer who fills it, less Borro's share; the option tokens come to this wallet. cancel_order takes it back while it is open.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"symbol": {
"type": "string",
"description": "A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)"
},
"type": {
"type": "string",
"enum": [
"call",
"put"
],
"description": "call or put"
},
"expiry": {
"type": "string",
"description": "this (default), next, or a Friday's date like 2026-10-16"
},
"strike": {
"type": "string",
"description": "The strike in dollars, like \"250\""
},
"shares": {
"type": "string",
"description": "Shares to bid for, in whole units as a decimal string, like \"1.5\""
},
"premium": {
"type": "string",
"description": "Premium you bid, USDG a share, in whole units as a decimal string, like \"1.5\""
}
},
"required": [
"wallet",
"symbol",
"type",
"strike",
"shares",
"premium"
]
}🟢cancel_order(wallet, order_id)
Unsigned transaction cancelling an ask or a bid: what it still locks goes back to its maker (an ask's collateral, a bid's USDG). Only the maker may, until the series expires; then anyone may.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"order_id": {
"type": "string",
"description": "The order's number (position lists this wallet's open orders)"
}
},
"required": [
"wallet",
"order_id"
]
}🟢settle_series(wallet, series_id, symbol, expiry, strike, ...)
Unsigned transaction settling a series after its Friday 8pm New York expiry with the feed's last round at or before it, found by walking back from the latest round, once the proof holds (the next round printed after expiry, or it is the feed's latest); when the feed printed nothing in the two days before expiry, with its first round after. Gives the settlement price and what it pays a share. Fourteen days after expiry with no round to prove a price it builds void(id) instead. Anyone may send either.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The address that will send it (any address)"
},
"series_id": {
"type": "string",
"description": "The series id (or symbol, expiry, strike and type instead)"
},
"symbol": {
"type": "string",
"description": "A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)"
},
"expiry": {
"type": "string",
"description": "A Friday's date like 2026-10-16"
},
"strike": {
"type": "string",
"description": "The strike in dollars"
},
"type": {
"type": "string",
"enum": [
"call",
"put"
],
"description": "call or put"
}
},
"required": [
"wallet"
]
}🟢claim_option(wallet, series_id, shares, as_shares)
Unsigned transaction burning the wallet's tokens of a settled series and taking what they pay: a call pays the stock's Borro vault shares, a put USDG (or the Steakhouse vault's shares with as_shares, for when the vault is short of free USDG). All the wallet holds unless shares is given.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"series_id": {
"type": "string",
"description": "The series id (position lists them)"
},
"shares": {
"type": "string",
"description": "Shares to claim (optional, default all), in whole units as a decimal string, like \"1.5\""
},
"as_shares": {
"type": "boolean",
"description": "A put: take Steakhouse USDG vault shares instead of USDG"
}
},
"required": [
"wallet",
"series_id"
]
}🟢release_collateral(wallet, series_id)
Unsigned transaction giving a writer back the lock of a settled series less what its written options pay, once: stock vault shares for a call, Steakhouse USDG vault shares for a put.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"series_id": {
"type": "string",
"description": "The series id (position lists them)"
}
},
"required": [
"wallet",
"series_id"
]
}🟢credit_markets
Agent Credit Lines: an agent posts its AI credits (Orbio CREDIT) and borrows USDG against them inside limits its owner sets once: a ceiling, a daily limit, a target LTV and an allowlist. markets: every market lines can open in now, each with its price, one yearly borrow rate (borrow_apr), its LLTV and max target and trigger, its defaults (CREDIT: 18% and 27%, with sales), the lending cap and any write-off. For CREDIT besides, as before: the feed's 2-hour median, its anchor, the last minute's and the pool's price, the line check price, whether the price has started and anything to know (a write-off proposed or in force, a pool with no data), the depth gate, what is lent, borrowed and free, the 90% most, the room under Borro's USDG vault caps, and the contracts. gas_stations: the factory and the station rules ($100 a day by default, $5,000 at most on a line with a station on its allowlist). Before the market is on chain: the pool's price and how lines will work.
輸入結構描述
{
"type": "object",
"properties": {}
}🟢credit_line(account, owner, page)
One agent credit line (account) or the lines a wallet owns (owner: five a call, newest first; page 2 for the next five): its market, credits posted, USDG owed, LTV against its target, trigger and LLTV, a health word, what the agent can still borrow, the daily limit and what went out and is left of it today, the price at which it can be liquidated, its agent, keeper, owner, allowlist and sale settings, the agent's gas station and whether it is allowlisted, USDG it holds, and whether protect would act now. holder: what holding $BORRO gets this line (Hold $BORRO. Borrow for less.): up to half its interest back every Monday, what Borro's keeper makes if it liquidates the line unless it was left short or left bad debt, and where switched on gas on the house; counts (Borro's keeper counted it on the last day it counted), share, via (owner or agent: whichever has the larger share), heldBorro (wallet plus own lock), borroForFull ($BORRO for the full rate at today's price), weekSoFarUsdg, interestBackBps (the part of the line's interest that would come back, up to 5000; share and interestBackBps are estimates if held through a whole UTC day) and gasOnTheHouse (only where switched on, and only for a counted line owing gas.minDebtUsdg, 25 USDG by default, or more whose holder holds at least gas.minShare, half by default, of the $BORRO its lines' full rate needs, within weekly limits); live false until Borro's keeper publishes its count.
輸入結構描述
{
"type": "object",
"properties": {
"account": {
"type": "string",
"description": "A line's address"
},
"owner": {
"type": "string",
"description": "A wallet whose lines to list"
},
"page": {
"type": "integer",
"description": "With owner: which five lines, newest first (default 1)"
}
}
}🟢holder_benefits(wallet, borrow_usdg)
Hold $BORRO. Borrow for less. What a wallet's $BORRO gets it on Agent Credit Lines, with or without lines. Keep $BORRO in the wallet that borrows (its own BorroLock lock counts as held) and its lines get, always: (1) up to half their interest back every Monday, in USDG: the full rate when it holds $BORRO worth a quarter of what its lines owe together, proportionally less with less; (2) liquidation profit back: when Borro's keeper liquidates a line, what it makes comes back, in proportion to the holding, unless the line was left short or left bad debt. And where switched on (rules.gas says whether it is): (3) gas on the house: on a line owing gas.minDebtUsdg (25 USDG by default) or more, while the holder holds at least gas.minShare (half by default) of the $BORRO its lines' full rate needs, Borro tops up the agent's wallet when it runs low on ETH (the owner's, if the agent has not borrowed on the line within 7 days), within weekly limits, if it is a plain wallet (no smart-account code). Send the $BORRO away and it stops (and forfeits that part of the week's unpaid benefits). Nothing to sign, lock or stake. Answers live (false until Borro's keeper publishes its count; until then nothing is counted or paid), counts (what Borro's keeper counted on the last day it counted), share, via, heldBorro, borroForFull ($BORRO for the full rate at today's price) and borro_to_add_for_full, covers_debt_usdg (the most its lines may owe at the full rate), weekSoFarUsdg, interestBackBps, gasOnTheHouse, each line with what it owes and its rate back, each market's Borro-run supply share (interest paid to anyone else's direct supply, or to the wallet's own part of Borro's USDG vault, gets nothing back), the rules and the paid weeks; share and the rates are estimates if held through a whole UTC day. With borrow_usdg: the same for a planned borrow on top. It reads; it builds no transaction.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"borrow_usdg": {
"type": "string",
"description": "Optional: a planned borrow in USDG, to see the $BORRO its full rate needs, in whole units as a decimal string, like \"1.5\""
}
},
"required": [
"wallet"
]
}🟢credit_open(wallet, account, market, agent, credits, ...)
Unsigned transactions. Without account: open a line owned by the signing wallet for an agent (never the wallet itself), in a market credit_markets lists ("CREDIT", the default), post its credits and optionally borrow USDG at once (to the wallet unless to names an allowlisted address); exact credit approval to the factory first. The owner's limits: ceiling (USDG, default the most the target allows today), daily_limit (USDG out in any 24 hours, borrows and the agent's withdrawals together, or "none"; default the ceiling, or $100 with a gas station; at most $5,000 with one), target_ltv (a fraction under 1 like 0.18, or a percent with its sign like "18%"; the market's default, 0.18 for CREDIT, at most the market's max trigger), trigger_ltv for protect (by the market's rule; CREDIT: the target plus 7 points, at least 0.27 and at most 0.3), allow (addresses borrowed USDG may go to, 16 at most), gas_station (true: put the agent's gas station on the allowlist), bills (true: bill pay, the agent's own wallet on the allowlist, for x402 bills through credit_bill; the daily limit then defaults to $100), keeper ("borro", the default, "none" or an address), sell_bps and slip_bps for protect's sales (CREDIT defaults 2500 and 300; 0 in a market with no pool). With account: post more credits (anyone) and/or borrow (the line's agent or owner) to an allowed address. A wallet holding $BORRO borrows for less once Holder Credit counts it (holder_benefits). Refuses locally what the line would refuse (over the daily limit, the ceiling or the target, during a write-off, past what the market has free, past 90% used, past what the depth gate allows, before CREDIT's price starts); simulated from the wallet. Check each transaction's to: the factory, a line the factory confirms (isAccount), or the credit for an exact approval.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"account": {
"type": "string",
"description": "An existing line: post more and/or borrow from it (leave out to open a new line)"
},
"market": {
"type": "string",
"description": "New line: which market, by its symbol in credit_markets (default CREDIT)"
},
"agent": {
"type": "string",
"description": "New line: the agent's address, the wallet that will borrow from it (not the owner's)"
},
"credits": {
"type": "string",
"description": "Credits to post, in whole units as a decimal string, like \"1.5\""
},
"borrow": {
"type": "string",
"description": "USDG to borrow now (optional), in whole units as a decimal string, like \"1.5\""
},
"to": {
"type": "string",
"description": "Where borrowed USDG goes: the owner or an allowlisted address (default the wallet, or the owner)"
},
"ceiling": {
"type": "string",
"description": "New line: the most USDG the line may owe (optional), in whole units as a decimal string, like \"1.5\""
},
"daily_limit": {
"type": "string",
"description": "New line: the most USDG out in any 24 hours, like \"100\", or \"none\" (default the ceiling; $100 with a gas station, at most $5,000)"
},
"target_ltv": {
"anyOf": [
{
"type": "number"
},
{
"type": "string"
}
],
"description": "New line: target LTV, a fraction under 1 like 0.18 or a percent with its sign like \"18%\" (the market's default: 0.18 for CREDIT)"
},
"trigger_ltv": {
"anyOf": [
{
"type": "number"
},
{
"type": "string"
}
],
"description": "New line: LTV above which the keeper may protect it (default by the market's rule)"
},
"allow": {
"type": "array",
"items": {
"type": "string"
},
"description": "New line: addresses borrowed USDG may go to (16 at most)"
},
"gas_station": {
"type": "boolean",
"description": "New line: put the agent's gas station on the allowlist, so the agent can borrow its own gas (credit_gas)"
},
"bills": {
"type": "boolean",
"description": "New line: bill pay, the agent's own wallet on the allowlist, so it can borrow what it is short of an x402 bill (credit_bill); the line then needs a daily limit ($100 unless given)"
},
"keeper": {
"type": "string",
"description": "New line: \"borro\" (Borro's keeper, the default), \"none\", or an address"
},
"sell_bps": {
"type": "integer",
"description": "New line: most of the credits one protect sale may sell, in hundredths of a percent (0 to 2500; CREDIT default 2500; 0 in a market with no pool)"
},
"slip_bps": {
"type": "integer",
"description": "New line: most a protect sale may fill under the feed's price, in hundredths of a percent (0 to 1000, default 300)"
}
},
"required": [
"wallet"
]
}🟢credit_pay(wallet, account, to, amount)
One unsigned borrow from a line straight to a payee on its allowlist (or its owner): the line's agent or owner signs it, the USDG goes from Morpho to the payee, and the line owes it until repaid. Checked as the line checks it: the allowlist, a write-off, what is left of the daily limit today, the ceiling, the target LTV at today's price, the market's 90% and depth gate; simulated from the wallet. Check the transaction's to: a line the factory confirms (isAccount).
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"account": {
"type": "string",
"description": "The line's address"
},
"to": {
"type": "string",
"description": "The payee: an address on the line's allowlist, or its owner"
},
"amount": {
"type": "string",
"description": "USDG to pay, in whole units as a decimal string, like \"1.5\""
}
},
"required": [
"wallet",
"account",
"to",
"amount"
]
}🟢credit_gas(wallet, account, amount)
Unsigned transactions that turn a line's credit into ETH in its agent's own wallet: make the agent's gas station if it has no code yet (anyone may; the station is the GasStationFactory's predict of the agent's wallet, never an address given), borrow amount USDG from the line to the station (the agent or the owner; the station must be on the allowlist), then pump(minOut, maxIn) by its full signature, with maxIn everything the station will hold and minOut a tenth of a percent under the pool's own fill for that size (never under the station's Chainlink floor). No amount: pump what the station already holds (anyone may). If ETH's price feed has been stale for 4 days, release() instead, sending the station's USDG to the agent's wallet as it is. Simulated from the wallet.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"account": {
"type": "string",
"description": "The line's address"
},
"amount": {
"type": "string",
"description": "USDG to borrow to the agent's gas station (optional; without it, pump what the station holds), in whole units as a decimal string, like \"1.5\""
}
},
"required": [
"wallet",
"account"
]
}🟢credit_bill(wallet, account, payment_required, max_usdg)
Pay a merchant's x402 bill (HTTP 402 Payment Required) in USDG on Robinhood Chain from an agent credit line. Give the 402's payment_required (its PAYMENT-REQUIRED header value, or its JSON body); the bill is its exact-scheme USDG option on eip155:4663, refused in words if it has none or asks more than max_usdg. The wallet is the payer and must be the line's agent or owner: if it holds less USDG than the bill, one unsigned borrow of just what it is short, from the line to the wallet itself (the wallet must be on the line's allowlist: bill pay, credit_guardrails bills: true; checked as the line checks it and simulated). Returns the EIP-3009 authorization and its typed_data to sign (eth_signTypedData_v4) and the steps: send the borrow, sign, call credit_bill_header, send the request again with its header before valid_until.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The payer's address (0x...): the line's agent, or its owner"
},
"account": {
"type": "string",
"description": "The line's address"
},
"payment_required": {
"anyOf": [
{
"type": "string"
},
{
"type": "object"
}
],
"description": "The merchant's 402: its PAYMENT-REQUIRED header value (base64), or its JSON body"
},
"max_usdg": {
"type": "string",
"description": "The most to pay for this one bill (optional; refused above it), in whole units as a decimal string, like \"1.5\""
}
},
"required": [
"wallet",
"account",
"payment_required"
]
}🟢credit_bill_header(payment_required, authorization, signature)
After credit_bill and the wallet's signature: the header the merchant reads (PAYMENT-SIGNATURE, or X-PAYMENT for x402 version 1), base64 JSON with the authorization and signature. Reads no chain and sends nothing: checks the authorization against the bill (the merchant's payTo, exactly its amount, not run out) and recovers a 65-byte signature to its payer. Send the same request again with header.name set to header.value.
輸入結構描述
{
"type": "object",
"properties": {
"payment_required": {
"anyOf": [
{
"type": "string"
},
{
"type": "object"
}
],
"description": "The same payment_required given to credit_bill"
},
"authorization": {
"anyOf": [
{
"type": "object"
},
{
"type": "string"
}
],
"description": "The authorization credit_bill returned, as it returned it"
},
"signature": {
"type": "string",
"description": "The wallet's signature of credit_bill's typed_data (0x hex)"
}
},
"required": [
"payment_required",
"authorization",
"signature"
]
}🟢credit_repay(wallet, account, amount, close, unwind, ...)
Unsigned transactions repaying a line's USDG debt from the wallet (anyone may): an amount, or amount "all"; exact USDG approval to the line first (all: the debt plus a hundredth of a percent for interest until it lands; repay takes only what is owed). With close: true (a JSON boolean; the owner only): repay everything and take every credit and any USDG left back to the wallet. With unwind: true (a JSON boolean; the owner only; a line whose market has a pool): no USDG needed, the line sells its own CREDIT in its pool into the debt (sellAndRepay: by default enough to repay it all, at a minimum of the whole debt, then closes the line; sell and min_usdg to choose). Repaying, closing and an unwind at the whole debt work before CREDIT's price starts and during a write-off too. Check each transaction's to: a line the factory confirms (isAccount), or USDG for an exact approval.
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"account": {
"type": "string",
"description": "The line's address"
},
"amount": {
"type": "string",
"description": "USDG to repay, or \"all\", in whole units as a decimal string, like \"1.5\""
},
"close": {
"type": "boolean",
"description": "The owner: repay everything and take every credit back"
},
"unwind": {
"type": "boolean",
"description": "The owner: sell the line's CREDIT into its debt, no USDG needed"
},
"sell": {
"type": "string",
"description": "With unwind: CREDIT to sell, or \"all\" (default: enough for the whole debt), in whole units as a decimal string, like \"1.5\""
},
"min_usdg": {
"type": "string",
"description": "With unwind: the least USDG the sale must bring (default: the whole debt when selling all or the default amount, else 97% of the pool's price), in whole units as a decimal string, like \"1.5\""
},
"then_close": {
"type": "boolean",
"description": "With unwind: close the line after (default true when the sale covers the debt)"
}
},
"required": [
"wallet",
"account"
]
}🟢credit_guardrails(wallet, account, agent, revoke_agent, keeper, ...)
One unsigned configure() transaction for the line's owner, starting from the line's current settings: agent (or revoke_agent: true, a JSON boolean, at once; never the owner's own wallet), keeper ("borro", "none" or an address), ceiling (USDG), daily_limit (USDG, or "none"), target_ltv and trigger_ltv (at most the line's max trigger, 30% for CREDIT; a new target over the line's trigger moves the trigger by the market's rule), sell_bps (0 in a market with no pool), slip_bps, allow (add addresses), deny (take them off), gas_station (true adds the agent's gas station, false takes it off), bills (true: bill pay, the agent's own wallet on the allowlist so it can borrow what it is short of an x402 bill, credit_bill; false takes it off; such a line needs a daily limit, $100 unless given). When the agent changes, the old agent's gas station and own wallet come off the allowlist in the same transaction and the new agent's go on in their place. A line with a gas station on its allowlist keeps a daily limit of at most $5,000 ($100 unless given). Checked as the line checks it; shows before and after. Ownership: transfer_to (the owner offers the line), or accept: true (the wallet it was offered to takes it with acceptOwnership, then names Borro's keeper again with setKeeper: two transactions sent one after the other; accepting clears the keeper, so until the second is sent the line has no keeper and no auto-repay; keeper: "none" leaves it off). Check each transaction's to: a line the factory confirms (isAccount).
輸入結構描述
{
"type": "object",
"properties": {
"wallet": {
"type": "string",
"description": "The wallet's address (0x...); the transactions are built for it to sign"
},
"account": {
"type": "string",
"description": "The line's address"
},
"agent": {
"type": "string",
"description": "A new agent address"
},
"revoke_agent": {
"type": "boolean",
"description": "Revoke the agent at once"
},
"keeper": {
"type": "string",
"description": "\"borro\", \"none\" or an address"
},
"ceiling": {
"type": "string",
"description": "The most USDG the line may owe, in whole units as a decimal string, like \"1.5\""
},
"daily_limit": {
"type": "string",
"description": "The most USDG out in any 24 hours, like \"100\", or \"none\""
},
"target_ltv": {
"anyOf": [
{
"type": "number"
},
{
"type": "string"
}
],
"description": "Target LTV, a fraction under 1 like 0.18 or a percent with its sign like \"18%\""
},
"trigger_ltv": {
"anyOf": [
{
"type": "number"
},
{
"type": "string"
}
],
"description": "Protect trigger LTV, at or above the target, like 0.27 or \"27%\""
},
"sell_bps": {
"type": "integer",
"description": "0 to 2500 (0 in a market with no pool)"
},
"slip_bps": {
"type": "integer",
"description": "0 to 1000"
},
"allow": {
"type": "array",
"items": {
"type": "string"
},
"description": "Addresses to add to the allowlist"
},
"deny": {
"type": "array",
"items": {
"type": "string"
},
"description": "Addresses to take off it"
},
"gas_station": {
"type": "boolean",
"description": "true: put the agent's gas station on the allowlist; false: take it off"
},
"bills": {
"type": "boolean",
"description": "true: bill pay, the agent's own wallet on the allowlist (credit_bill); false: take it off"
},
"transfer_to": {
"type": "string",
"description": "The owner: offer the line to this address (it becomes theirs when they accept)"
},
"accept": {
"type": "boolean",
"description": "The wallet the line is offered to: accept it, then name Borro's keeper again"
}
},
"required": [
"wallet",
"account"
]
}社群
證據