Borro Open app

Borro for agents

A stock loan desk your agent can run.

Point any MCP agent at one endpoint. The wallet signs; the server holds no keys.

  • ...Markets
  • ...Free to borrow
  • ...Lent on Borro
EndpointMCP 2025-06-18
https://borro.markets/mcp

POST · Streamable HTTP · stateless · hosted. Nothing to install, no key, no sign-in.

Scope

It prepares everything. It signs nothing.

What the server does for an agent, and what it never will.

What it does05
  • Reads every market, rate and wallet position on Borro.
  • Prepares 25 kinds of transaction, approvals first, in exact amounts.
  • Builds each transaction with the code the app itself runs.
  • Simulates every step from the wallet and says why one would fail.
  • States the price a short or a leveraged long is closed for you at.
What it doesn't05
  • Hold a key, or ask for one.
  • Sign or send a transaction.
  • Keep a session, a standing order or an autopilot.
  • Hold funds: nothing of the wallet's ever passes through it.
  • Speak for Robinhood: it is Borro's own server.

Quickstart

Connect your agent in one step.

Every client points at the same endpoint. Nothing to install.

Clients04

Claude Code

One command in the terminal
Shell
claude mcp add --transport http borro https://borro.markets/mcp

Claude Desktop

Settings, Connectors, Add custom connector, then paste the address
URL
https://borro.markets/mcp

Any MCP client

One entry in its JSON config
JSON
{ "mcpServers": { "borro": { "type": "http", "url": "https://borro.markets/mcp" } } }

By hand

POST JSON-RPC 2.0, no key and no session header
Shell
curl -s https://borro.markets/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

Models

Your agent brings the model.

Borro's server runs none. If your agent needs one, Raeto, a Borro partner on Robinhood Chain, has two ways in.

RaetoPartner

Raeto API

400+ models through one OpenAI-compatible endpoint, paid from a Raeto balance or per request in USDG on Robinhood Chain
URL
https://api.raeto.cc/v1

Raeto routing

Sends simple requests to a cheaper model on your own provider key. A key takes one click, no sign-up
URL
https://raeto.cc/routing

Raeto's developer docsRaeto runs its own service; Borro does not run its models.

Worked example

From one prompt to a signed short.

Read, prepare, sign, read back. The key stays with the wallet.

Short 1.5 NVDAmarkets → open_short → sign → position
You     Short 1.5 NVDA from my wallet with 200 USDG down.

Agent   → markets {}
        ← stocks[NVDA]: price_usd, free to short, what shorters pay a year

Agent   → open_short { "wallet": "0x1111…1111", "symbol": "NVDA",
                       "amount": "1.5", "deposit": "200" }
        ← quote: sale_usdg, deposit_at_least_usdg, closed_for_you_at_price
        ← transactions:
            1  approve   USDG to BorroShort, exactly 200
            2  call      BorroShort.open: borrow 1.5 NVDA, sell it, hold the money
        ← simulation: eth_simulateV1, ok

Wallet  signs and sends 1, waits for it to land, then 2.

Agent   → position { "wallet": "0x1111…1111" }
        ← stocks[NVDA].short: owed_stock 1.5, held_usdg, closed_for_you_at_price

Tools

35 tools, one for every move on Borro.

Preparereturns unsigned transactions you sign

Nine read the chain. Twenty-six prepare transactions for the wallet to sign.

Markets and wallets

6 read

Every stock and the USDG vault: price, sizes, rates and the Drip.

No arguments

marketRead

One stock's full line: rates, sizes, limits, open fee, contracts.

symbolstringrequired

Everything a wallet has on Borro, from shorts to $BORRO to claim.

walletstringrequired
tradesRead

Recent shorts opened and closed across Borro, newest first.

No arguments

Every bear coin launched on Pons from Borro, with its short.

No arguments

rulesRead

House rules, limits, what can go wrong, every contract address.

No arguments

Lend and borrow

6 prepare
supplyPrepare

Lend a stock or USDG; with post, lend and post stock in one step.

walletstringrequired
assetstringrequired
amountstringrequired
postboolean
withdrawPrepare

Take back lent stock or USDG, part or all.

walletstringrequired
assetstringrequired
amountstring
allboolean
borrowPrepare

Borrow USDG against stock already lent and posted.

walletstringrequired
symbolstringrequired
amountstringrequired
repayPrepare

Repay USDG borrowed against a stock, part or all.

walletstringrequired
symbolstringrequired
amountstring
allboolean

Credit a bookrunner's code with the wallet's borrowing: one signature, no gas.

walletstringrequired
codestringrequired
timestampinteger
signaturestring

Swap the wallet's ETH for USDG or a stock on Uniswap.

walletstringrequired
wantstringrequired
amountstringrequired
slip_bpsinteger

Shorts and pairs

4 prepare
open_shortPrepare

Borrow the stock, sell it and hold the money, in one open.

walletstringrequired
symbolstringrequired
amountstringrequired
depositstring

Buy back what is owed, return it, take out the money held.

walletstringrequired
symbolstringrequired
open_pairPrepare

Buy and lend the long stock, then short the other.

walletstringrequired
longstringrequired
shortstringrequired
long_amountstringrequired
short_amountstringrequired
depositstring
close_pairPrepare

Close the newest pair of these two stocks, both legs.

walletstringrequired
longstringrequired
shortstringrequired

Leverage

2 prepare
open_longPrepare

A leveraged long in one open, up to 1.80x on SPY, QQQ and NVDA.

walletstringrequired
symbolstringrequired
marginstringrequired
leveragenumberrequired
close_longPrepare

Sell the stock, repay the debt, take the rest in USDG.

walletstringrequired
symbolstringrequired
percentnumber

Farms

1 read · 2 prepare
farmsRead

Each stock farm's size, fees and lent part; a wallet's share.

symbolstring
walletstring

Put USDG and a stock into its farm at the farm's ratio.

walletstringrequired
symbolstringrequired
usdgstring
stockstring
slip_bpsinteger

Take part or all out of a farm. Never paused.

walletstringrequired
symbolstringrequired
percentnumber
slip_bpsinteger

Weekend

1 read · 5 prepare

While the market is shut: paused prices, Borro's band, quotes.

symbolstring
buy_coverPrepare

Monday-gap cover on a stock while the market is shut.

walletstringrequired
symbolstringrequired
sideup | downrequired
notionalstringrequired
strike_bpsinteger

Put USDG into the pool that backs every gap cover.

walletstringrequired
amountstringrequired

Take USDG out of the gap cover pool once no cover is live.

walletstringrequired
amountstring
allboolean

Settle a cover on the first print after the reopen, or void it.

walletstringrequired
idstringrequired

Take a payout a settled or voided cover could not send.

walletstringrequired

Options

1 read · 7 prepare

One stock's chain for this Friday and next, checked on chain.

symbolstringrequired

Post an ask, or sell into a bid. Fully collateralized.

walletstringrequired
symbolstringrequired
typecall | put
expirystring
strikestring
sharesstringrequired
premiumstring
fromstock | shares | usdg
order_idstring
buy_optionPrepare

Buy from the best ask, with the premium as the most it takes.

walletstringrequired
symbolstringrequired
typecall | put
expirystring
strikestring
sharesstringrequired
order_idstring
max_premiumstring
post_bidPrepare

Bid for a series; the premium waits locked in USDG.

walletstringrequired
symbolstringrequired
typecall | putrequired
expirystring
strikestringrequired
sharesstringrequired
premiumstringrequired

Cancel an ask or a bid; its lock goes back to its maker.

walletstringrequired
order_idstringrequired

Settle an expired series on the feed's last print.

walletstringrequired
series_idstring
symbolstring
expirystring
strikestring
typecall | put

Burn a settled series' tokens and take what they pay.

walletstringrequired
series_idstringrequired
sharesstring
as_sharesboolean

Give a writer back a settled series' lock, less what it pays.

walletstringrequired
series_idstringrequired

Only on Borro

Short a stock, pair it, cover the weekend, lend it out.

The desks Borro runs on Robinhood Chain, each a tool call away.

Short a stockopen_short
1 transactionborrows, sells and holdsBorroShort.open does all three; an approval first if one is missing.
Pairsopen_pair
Long and shortin one prepared flowThe long is bought and lent in the wallet's name, so it earns rent while held.
The Weekend deskweekend · buy_cover
95% bandwhile the feeds pauseBorro's weekend price and band, and cover that pays past the strike on a Monday gap.
Lend stocksupply · borrow
Rentfrom the shorters who borrow itLend a stock token to its vault, or post it and borrow USDG against it.

Automation

Recipes an agent can run today.

Your agent watches and decides. The wallet signs every step.

RecipeTools
  • Watch and shortRead the markets on a schedule; open a short when the price or rent crosses your line.markets→open_short
  • Defend a shortWatch the price a short is closed for you at, and close it before the stock gets there.position→close_short
  • Cover the weekendWhile the market is shut, up to an hour before the reopen, buy gap cover up on a short.weekend→buy_cover
  • Lend what sits idleLend stock the wallet holds, and take it back when it is needed.position→supply·withdraw

Every prepare tool returns transactions the wallet signs itself. No session, no standing order, no key on the server: nothing happens without the wallet.

For agent operators

Bring deposits, share Borro's fee.

An agent credits your code by depositing through BorroBuilders, and a wallet's borrowing with one signature.

Fee shareFirst 12 months
100%of Borro's feeOn the deposits your code brings, paid monthly in USDG.
Fee shareAfter that
50%for as long as they stayCounted per deposit; withdrawals come off the oldest first.
Bookrunner DripYear one
20M$BORRO among bookrunnersSplit by the deposits each brings. See the economics.

The one deposit call, workedRent floats with demand. No income is promised.

Safety

The server prepares. The wallet decides.

What the server never does, and what can still go wrong.

  • KeysNever held, never asked for.
  • SendingThe server signs and sends nothing. The wallet's owner sends each step.
  • ApprovalsExact amounts, and only the ones missing.
  • SimulationEvery step runs from the wallet first, with the reason it would fail.
  • QuotesPriced at the call. A step that fails on slippage needs a fresh call.
  • Market capsSized from each stock's pool depth. The caps file
  • Shorting limit77% of what is held for SPY and QQQ, 62.5% for single stocks.
  • LiquidationPast the limit a short is closed for you, and part of the money held is kept.
  • AuditBorro's own contracts are reviewed and tested, not yet audited by an outside firm.
  • $BORROIt has no promised value and can be worth nothing.

Reference

Every tool, every argument, one example each.

01Connect

DetailSpec
Endpointhttps://borro.markets/mcp
TransportStreamable HTTP, stateless. POST a message or a batch; the answer comes back as JSON.
Sign-inNone. No API key, no session, no server-sent stream.
Protocol2025-06-18, or 2025-03-26 and 2024-11-05 when the client asks for them
Methodsinitialize, tools/list, tools/call, ping
Batches1 to 10 messages
BodyUp to 64 KB
GETA short plain-text description; asking for text/event-stream gets a 405
BrowsersCORS is open to any origin.
Request
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "initialize",
  "params": { "protocolVersion": "2025-06-18" }
}
Answer
{
  "jsonrpc": "2.0",
  "id": 1,
  "result": {
    "protocolVersion": "2025-06-18",
    "capabilities": { "tools": { "listChanged": false } },
    "serverInfo": { "name": "borro", "title": "Borro", "version": "1.0.0" },
    "instructions": "Borro on Robinhood Chain: read markets and positions, and prepare unsigned transactions for a wallet to sign. Amounts are decimal strings in whole units (\"1.5\" NVDA, \"100\" USDG). Send prepared transactions in order and call the tool again if a quote has moved."
  }
}

02Calling a tool

FieldWhat it holds
result.contentOne text item: the answer as JSON text.
result.structuredContentThe same answer as an object.
result.isErrorTrue when the tool could not answer; the text says why.
transactionsA prepare tool's steps, in order, approvals first: each with to, data, value and chainId.
simulationEvery step run from the wallet as one block, with the reason a step would fail.
Request
{
  "jsonrpc": "2.0",
  "id": 2,
  "method": "tools/call",
  "params": {
    "name": "open_short",
    "arguments": { "wallet": "0x1111111111111111111111111111111111111111", "symbol": "NVDA", "amount": "1.5", "deposit": "200" }
  }
}
structuredContent, shape
{
  "action": "open_short",
  "chainId": 4663,
  "from": "0x1111111111111111111111111111111111111111",
  "quote": { "sale_usdg": "…", "open_fee": …, "after_fee_usdg": "…", "least_accepted_usdg": "…",
             "deposit_at_least_usdg": …, "closed_for_you_at_price": …, "expires_at": "…", "weekend_rule": null },
  "transactions": [
    { "step": 1, "kind": "approve",
      "description": "Approve 0xd2D686cEdf225c5C9815187A08812783904E62Eb to take exactly what this needs",
      "to": "0x5fc5360D0400a0Fd4f2af552ADD042D716F1d168", "data": "0x095ea7b3…", "value": "0", "chainId": 4663 },
    { "step": 2, "kind": "call",
      "description": "Short 1.5 NVDA: borrow it, sell it, hold the money",
      "to": "0xd2D686cEdf225c5C9815187A08812783904E62Eb", "data": "0x…", "value": "0", "chainId": 4663 }
  ],
  "simulation": { "method": "eth_simulateV1", "ok": true, "steps": [{ "step": 1, "ok": true }, { "step": 2, "ok": true }] },
  "how_to_send": "Sign and send each transaction from the wallet, in order, waiting for each to land. Nothing has been sent. Quotes move: if a step fails on slippage, call this tool again for fresh numbers."
}

03Errors and limits

Errors

CodeWhen
-32700The body is not JSON. HTTP 400.
-32600Not a JSON-RPC 2.0 request, a batch outside 1 to 10, a body over 64 KB, or a method other than POST.
-32601A method the server does not have.
-32602A tool name the server does not have.
isError: trueThe tool could not do it, and the text says why. The RPC's address is never in it.
202, no bodyA notification, a message without an id: nothing to answer.

Allowance

UnitsTools
250 every 10 secondsEach visitor's budget, shared with the site's own reads.
2rules
3trades, bear_coins
5markets, market, weekend
10farms, options, bind_builder, claim_cover, cancel_order, claim_option, release_collateral
15Every other prepare tool.
20settle_cover, settle_series
30position
Over the budgetisError: true, "Too many requests from this address right now; wait about 10 seconds."

Inputs

InputRule
AmountsDecimal strings in whole units: "1.5" NVDA, "100" USDG
Wallet0x and 40 hex characters, all lowercase or correctly checksummed.
StocksBy ticker, like NVDA. The markets tool lists every one.
Expirythis, next, a Friday's date like 2026-10-16, or the unix time of its close
Deadlines20 minutes past the chain's latest block.
ExamplesBelow, 0x1111…1111 stands for the wallet the agent acts for.

04Markets and wallets

marketsRead

  • TitleThe shelf
  • Allowance5 units
  • ReturnsThe answer as JSON

No arguments.

Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "markets", "arguments": {} } }

marketRead

  • TitleOne stock
  • Allowance5 units
  • ReturnsThe answer as JSON
ArgumentDescription
symbolstringrequiredA stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "market", "arguments": {
    "symbol": "NVDA"
  } } }

positionRead

  • TitleA wallet on Borro
  • Allowance30 units
  • ReturnsThe answer as JSON
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "position", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111"
  } } }

tradesRead

  • TitleRecent trades
  • Allowance3 units
  • ReturnsThe answer as JSON

No arguments.

Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "trades", "arguments": {} } }

bear_coinsRead

  • TitleBear coins
  • Allowance3 units
  • ReturnsThe answer as JSON

No arguments.

Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "bear_coins", "arguments": {} } }

rulesRead

  • TitleRules and contracts
  • Allowance2 units
  • ReturnsThe answer as JSON

No arguments.

Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "rules", "arguments": {} } }

05Lend and borrow

supplyPrepare

  • TitlePrepare: lend
  • Allowance15 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
assetstringrequiredUSDG, or a stock symbol
amountstringrequiredAmount to lend, in whole units as a decimal string, like "1.5"
postbooleanoptionalStock only: lend and post as collateral in one step
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "supply", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "asset": "NVDA",
    "amount": "1.5"
  } } }

withdrawPrepare

  • TitlePrepare: take back what is lent
  • Allowance15 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
assetstringrequiredUSDG, or a stock symbol
amountstringoptionalAmount to take back, in whole units as a decimal string, like "1.5"
allbooleanoptionalTake back everything
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "withdraw", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "asset": "USDG",
    "all": true
  } } }

borrowPrepare

  • TitlePrepare: borrow USDG
  • Allowance15 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
symbolstringrequiredA stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)
amountstringrequiredUSDG to borrow, in whole units as a decimal string, like "1.5"
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "borrow", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "symbol": "NVDA",
    "amount": "50"
  } } }

repayPrepare

  • TitlePrepare: repay USDG
  • Allowance15 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
symbolstringrequiredA stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)
amountstringoptionalUSDG to repay, in whole units as a decimal string, like "1.5"
allbooleanoptionalRepay everything owed
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "repay", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "symbol": "NVDA",
    "all": true
  } } }

bind_builderPrepare

  • TitlePrepare: credit a bookrunner for borrowing
  • Allowance10 units
  • ReturnsTyped data to sign, then the binding
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
codestringrequiredThe bookrunner's code, as in borro.markets/?ref=<code>
timestampintegeroptionalWith signature: the timestamp from the typed data that was signed
signaturestringoptionalThe wallet's EIP-712 signature, 0x and 130 hex characters; leave out to get the typed data
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "bind_builder", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "code": "route"
  } } }

buy_with_ethPrepare

  • TitlePrepare: pay with ETH
  • Allowance15 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
wantstringrequiredUSDG, or a stock symbol
amountstringrequiredHow much of it to get, in whole units as a decimal string, like "1.5"
slip_bpsintegeroptionalMost the price may move, in hundredths of a percent (default 100, 1%)
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "buy_with_eth", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "want": "USDG",
    "amount": "100",
    "slip_bps": 100
  } } }

06Shorts and pairs

open_shortPrepare

  • TitlePrepare: open a short
  • Allowance15 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
symbolstringrequiredA stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)
amountstringrequiredStock to short, in whole units as a decimal string, like "1.5"
depositstringoptionalUSDG to add to the money held, beyond the sale (optional, default 0), in whole units as a decimal string, like "1.5"
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "open_short", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "symbol": "NVDA",
    "amount": "1.5",
    "deposit": "200"
  } } }

close_shortPrepare

  • TitlePrepare: close a short
  • Allowance15 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
symbolstringrequiredA stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "close_short", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "symbol": "NVDA"
  } } }

open_pairPrepare

  • TitlePrepare: open a pair
  • Allowance15 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
longstringrequiredA stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)
shortstringrequiredA stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)
long_amountstringrequiredLong stock to buy, in whole units as a decimal string, like "1.5"
short_amountstringrequiredStock to short, in whole units as a decimal string, like "1.5"
depositstringoptionalUSDG held against the short beyond the sale (optional), in whole units as a decimal string, like "1.5"
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "open_pair", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "long": "NVDA",
    "short": "TSLA",
    "long_amount": "1",
    "short_amount": "0.5",
    "deposit": "150"
  } } }

close_pairPrepare

  • TitlePrepare: close a pair
  • Allowance15 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
longstringrequiredA stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)
shortstringrequiredA stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "close_pair", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "long": "NVDA",
    "short": "TSLA"
  } } }

07Leverage

open_longPrepare

  • TitlePrepare: leveraged long
  • Allowance15 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
symbolstringrequiredA stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)
marginstringrequiredUSDG margin from the wallet, in whole units as a decimal string, like "1.5"
leveragenumberrequiredLeverage, more than 1, like 1.5
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "open_long", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "symbol": "NVDA",
    "margin": "100",
    "leverage": 1.5
  } } }

close_longPrepare

  • TitlePrepare: close a leveraged long
  • Allowance15 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
symbolstringrequiredA stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)
percentnumberoptionalHow much of the position to close, 1 to 100 (default 100)
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "close_long", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "symbol": "NVDA",
    "percent": 50
  } } }

08Farms

farmsRead

  • TitleStock farms
  • Allowance10 units
  • ReturnsThe answer as JSON
ArgumentDescription
symbolstringoptionalOne stock's farm (optional), by its ticker, like NVDA; farms lists the stocks that have one
walletstringoptionalA wallet whose part of each farm to show (optional)
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "farms", "arguments": {
    "symbol": "NVDA",
    "wallet": "0x1111111111111111111111111111111111111111"
  } } }

farm_depositPrepare

  • TitlePrepare: put money into a farm
  • Allowance15 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
symbolstringrequiredA stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)
usdgstringoptionalUSDG to put in (optional if stock is given), in whole units as a decimal string, like "1.5"
stockstringoptionalStock to put in (optional if usdg is given), in whole units as a decimal string, like "1.5"
slip_bpsintegeroptionalMost the farm may move against the quote, in hundredths of a percent (default 50, 0.5%)
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "farm_deposit", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "symbol": "NVDA",
    "usdg": "100",
    "slip_bps": 50
  } } }

farm_withdrawPrepare

  • TitlePrepare: take money out of a farm
  • Allowance15 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
symbolstringrequiredA stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)
percentnumberoptionalHow much of the wallet's part to take out, 1 to 100 (default 100)
slip_bpsintegeroptionalLeast accepted under the preview, in hundredths of a percent (default 50, 0.5%)
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "farm_withdraw", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "symbol": "NVDA",
    "percent": 100
  } } }

09Weekend

weekendRead

  • TitleThe Weekend Desk
  • Allowance5 units
  • ReturnsThe answer as JSON
ArgumentDescription
symbolstringoptionalOne stock (optional), by its ticker, like NVDA; with a pool, its quotes are read from the chain
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "weekend", "arguments": {
    "symbol": "NVDA"
  } } }

buy_coverPrepare

  • TitlePrepare: buy gap cover
  • Allowance15 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
symbolstringrequiredA stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)
sideup | downrequiredup (pays on a gap up: for a short) or down (on a gap down: for a long)
notionalstringrequiredCover, in USDG: for a short, about what the shares are worth, in whole units as a decimal string, like "1.5"
strike_bpsintegeroptionalHow far the stock must move before it pays, in hundredths of a percent: 100, 200, 300 or 500 are quoted (default 200, 2%)
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "buy_cover", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "symbol": "NVDA",
    "side": "up",
    "notional": "500",
    "strike_bps": 200
  } } }

deposit_coverPrepare

  • TitlePrepare: fund the gap cover pool
  • Allowance15 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
amountstringrequiredUSDG to deposit, in whole units as a decimal string, like "1.5"
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "deposit_cover", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "amount": "100"
  } } }

withdraw_coverPrepare

  • TitlePrepare: withdraw from the gap cover pool
  • Allowance15 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
amountstringoptionalUSDG to withdraw, in whole units as a decimal string, like "1.5"
allbooleanoptionalWithdraw everything this wallet has in the pool (only when it is all free)
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "withdraw_cover", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "all": true
  } } }

settle_coverPrepare

  • TitlePrepare: settle gap cover
  • Allowance20 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe address that will send it (any address; the payout goes to the cover's buyer)
idstringrequiredThe cover's number (position lists a wallet's covers)
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "settle_cover", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "id": "7"
  } } }

claim_coverPrepare

  • TitlePrepare: claim a waiting payout
  • Allowance10 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "claim_cover", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111"
  } } }

10Options

optionsRead

  • TitleThe Options Desk
  • Allowance10 units
  • ReturnsThe answer as JSON
ArgumentDescription
symbolstringrequiredA stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "options", "arguments": {
    "symbol": "NVDA"
  } } }

write_optionPrepare

  • TitlePrepare: write a call or a put
  • Allowance15 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
symbolstringrequiredA stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)
typecall | putoptionalcall or put
expirystringoptionalthis (the nearest Friday still taking orders, the default), next, or a Friday's date like 2026-10-16
strikestringoptionalThe strike in dollars, on the $0.25 tick, like "250"
sharesstringrequiredShares to write (at least 0.001), in whole units as a decimal string, like "1.5"
premiumstringoptionalPremium you ask, USDG a share (for an ask), in whole units as a decimal string, like "1.5"
fromstock | shares | usdgoptionalWhere the lock comes from: a call stock (default) or shares; a put usdg (default) or shares
order_idstringoptionalSell into this bid instead of posting an ask (its series, its premium)
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "write_option", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "symbol": "NVDA",
    "type": "call",
    "expiry": "this",
    "strike": "220",
    "shares": "1",
    "premium": "2.5"
  } } }

buy_optionPrepare

  • TitlePrepare: buy a call or a put
  • Allowance15 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
symbolstringrequiredA stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)
typecall | putoptionalcall or put
expirystringoptionalthis (default), next, or a Friday's date like 2026-10-16
strikestringoptionalThe strike in dollars, like "250"
sharesstringrequiredShares to buy, in whole units as a decimal string, like "1.5"
order_idstringoptionalBuy from this ask instead of the best one
max_premiumstringoptionalThe most to pay in all, USDG (optional), in whole units as a decimal string, like "1.5"
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "buy_option", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "symbol": "NVDA",
    "type": "call",
    "expiry": "this",
    "strike": "220",
    "shares": "1",
    "max_premium": "5"
  } } }

post_bidPrepare

  • TitlePrepare: bid for options
  • Allowance15 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
symbolstringrequiredA stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)
typecall | putrequiredcall or put
expirystringoptionalthis (default), next, or a Friday's date like 2026-10-16
strikestringrequiredThe strike in dollars, like "250"
sharesstringrequiredShares to bid for, in whole units as a decimal string, like "1.5"
premiumstringrequiredPremium you bid, USDG a share, in whole units as a decimal string, like "1.5"
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "post_bid", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "symbol": "NVDA",
    "type": "put",
    "expiry": "next",
    "strike": "210",
    "shares": "1",
    "premium": "1.5"
  } } }

cancel_orderPrepare

  • TitlePrepare: cancel an order
  • Allowance10 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
order_idstringrequiredThe order's number (position lists this wallet's open orders)
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "cancel_order", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "order_id": "12"
  } } }

settle_seriesPrepare

  • TitlePrepare: settle an expired series
  • Allowance20 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe address that will send it (any address)
series_idstringoptionalThe series id (or symbol, expiry, strike and type instead)
symbolstringoptionalA stock on Borro by its ticker, like NVDA or AAPL (markets lists every one)
expirystringoptionalA Friday's date like 2026-10-16
strikestringoptionalThe strike in dollars
typecall | putoptionalcall or put
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "settle_series", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "symbol": "NVDA",
    "expiry": "2026-10-16",
    "strike": "220",
    "type": "call"
  } } }

claim_optionPrepare

  • TitlePrepare: claim a settled option
  • Allowance10 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
series_idstringrequiredThe series id (position lists them)
sharesstringoptionalShares to claim (optional, default all), in whole units as a decimal string, like "1.5"
as_sharesbooleanoptionalA put: take Steakhouse USDG vault shares instead of USDG
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "claim_option", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "series_id": "0xcca74e6d15c7b29e48b7f9ae4e7131d80aa617bd27fe2353831aa4bc3305c4d5"
  } } }

release_collateralPrepare

  • TitlePrepare: take back a writer's lock
  • Allowance10 units
  • ReturnsUnsigned transactions and a simulation
ArgumentDescription
walletstringrequiredThe wallet's address (0x...); the transactions are built for it to sign
series_idstringrequiredThe series id (position lists them)
Request
{ "jsonrpc": "2.0", "id": 1, "method": "tools/call",
  "params": { "name": "release_collateral", "arguments": {
    "wallet": "0x1111111111111111111111111111111111111111",
    "series_id": "0xcca74e6d15c7b29e48b7f9ae4e7131d80aa617bd27fe2353831aa4bc3305c4d5"
  } } }

Get in touch

Building an agent on Borro? Tell us what it needs.

team@borro.markets