Borro
REMOTE · BORRO.MARKETS
Stock lending on Robinhood Chain: read markets and prepare lends, loans, shorts and credit lines.
Available components
Last scanned (5 hours ago)
Scores higher than 56% of remote servers
Reachable. Last reached 5 Nov 2026.
Category Finance and Payments
How this component scores in each security and reliability category. Every signal is checked automatically against the live server, and we only credit what we can confirm. How we score → Why this is hard to score →
Endpoint Security77
- The endpoint's TLS certificate is valid, in date, and uses a strong key. View diagnostics → Pass
- No authorisation is required to call this server. Every tool declares its destructiveHint and none is destructive, so open access doesn't expose one. See how to fix → View diagnostics → Partial
- HTTPS is enforced; there's no plaintext access path. View diagnostics → Pass
- HSTS check failed: the Strict-Transport-Security header is absent. See how to fix → View diagnostics → Fail
- DNSSEC is configured correctly; the domain's records validate against the full chain to the root. View diagnostics → Pass
Transport & Reachability100
- Verified streamable-http transport via a live MCP handshake. View diagnostics → Pass
Schema Quality & AI Usability54
- AI-judged instruction clarity (good).Pass
- Context-footprint check failed: tool/resource definitions use about 21924 tokens (~257/item across 85 items; 85 tools + 0 resources), over budget; trim descriptions and params. See how to fix → Fail
- Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management30
- Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
- 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
- 100% of tool parameters carry a description.Pass
Tool Safety75
- No prompt-injection markers were found in the server instructions, tool names or descriptions we captured.Pass
- 0 of 9 tool(s) whose name or description implies an irreversible operation declare an MCP destructiveHint annotation; "withdraw" implies "withdraw" and declares readOnlyHint instead, contradicting what its own name says it does. See how to fix → Fail
- An AI judge read all 86 captured unit(s) of tool text and found none that tries to manipulate the model reading it.Pass
Capabilities60
- Spec-recency check failed: implements MCP spec 2025-06-18; the latest is 2026-07-28. See how to fix → Fail
Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.
- 5 Nov 26 +1
- New tool “gaix_repay” functional
- New tool “gaix_short_close” functional
- New tool “gaix_short_close_in_kind” functional
- New tool “gaix_borrow” functional
- New tool “gaix_lend” functional
- New tool “gaix_market” functional
- New tool “gaix_short_deposit” functional
- New tool “gaix_short_open” functional
- New tool “gaix_short_quote” functional
- New tool “gaix_withdraw” functional
- 3 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 20 to 23. That category is still filling its 30-day observation window: 6 days of observed history at the previous scan, 7 at this one. The score rises as the window fills, whether or not the server changes.
- 2 Nov 26 +1
- DNSSEC: fail → pass ▲ security
- 1 Nov 26 +1
No change was recorded against any check on this day. Stability & Change Management went from 13 to 17. That category is still filling its 30-day observation window: 4 days of observed history at the previous scan, 5 at this one. The score rises as the window fills, whether or not the server changes.
- 31 Oct 26 0
- Tool “account_open” rewrote its description, which is the text the model reads security
- Tool “keeper_jobs” rewrote its description, which is the text the model reads security
- Schema quality: 17590 → 20260 ▼ functional
- New tool “bailout” functional
- New tool “bailout_cancel” functional
- New tool “bailout_claim” functional
- New tool “bailout_foreclose” functional
- New tool “bailout_offer” functional
- New tool “bailout_repay” functional
- New tool “bailouts” functional
- “account_open” added an optional parameter “account” cosmetic
- “account_open” added an optional parameter “agent_bailout_max_usdg” cosmetic
- 30 Oct 26 +1
- New tool “payto” functional
- New tool “payto_open” functional
- New tool “payto_sweep” functional
- New tool “payto_withdraw” functional
- 29 Oct 26 0
- Schema quality: 225 → 265 ▼ functional
- New tool “account_open” functional
- New tool “account_status” functional
- New tool “account_trade” functional
- New tool “account_withdraw” functional
- New tool “counterparty_check” functional
- New tool “keeper_jobs” functional
- New tool “liquidate” functional
- New tool “trigger_cancel” functional
- New tool “trigger_fire” functional
- New tool “trigger_list” functional
- New tool “trigger_set” functional
- 28 Oct 26 0
- Schema quality: 10160 → 11947 ▼ functional
- Stability: unverified → 0.03 ▲ functional
- New tool “hold_collect” functional
- New tool “hold_end” functional
- New tool “hold_header” functional
- New tool “hold_open” functional
- New tool “hold_pay” functional
- New tool “hold_status” functional
Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.
Captured 5 Nov 2026 · Probed https://borro.markets/mcp
TLS valid
Negotiated TLS 1.3 with TLS_AES_128_GCM_SHA256 .
| Subject | Issuer | Valid from | Valid until | Key | Signature | Serial |
|---|---|---|---|---|---|---|
| CN=borro.markets | CN=WE1,O=Google Trust Services,C=US | 1 Oct 2026 | 30 Dec 2026 | ECDSA 256 | ECDSA-SHA256 | 1870f439bdc2664913e3d23eeb08680c |
| SANs: borro.markets, www.borro.markets, *.www.borro.markets | ||||||
| CN=WE1,O=Google Trust Services,C=US (CA) | CN=GTS Root R4,O=Google Trust Services LLC,C=US | 13 Dec 2023 | 20 Feb 2029 | ECDSA 256 | ECDSA-SHA384 | 7ff31977972c224a76155d13b6d685e3 |
| CN=GTS Root R4,O=Google Trust Services LLC,C=US (CA) | CN=GlobalSign Root CA,OU=Root CA,O=GlobalSign nv-sa,C=BE | 15 Nov 2023 | 28 Jan 2028 | ECDSA 384 | SHA256-RSA | 7fe530bf331343bedd821610493d8a1b |
Background: What to check on a remote MCP endpoint →
DNSSEC secure
Validation of borro.markets. — Secure
| Zone | DS | Keys | Algorithms | Outcome |
|---|---|---|---|---|
| . | trust_anchor | 20326, 38696 | 8, 8 | Verified |
| markets. | present | 58144, 64757 | 8, 8 | Verified |
| borro.markets. | present | 2371 | 13 | Verified |
| borro.markets. | Verified address RRset verified with the apex keys |
Authentication No authorisation required
The endpoint answered without asking for a token. Anyone who knows the URL can reach it.
| Result | No authorisation required |
|---|---|
| HTTP status | 200 |
| Header | Value |
|---|---|
| content-security-policy | default-src 'self'; script-src 'self'; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com; font-src https://fonts.gstatic.com; img-src 'self' data: https://ipfs.filebase.io https://gateway.pinata.cloud; connect-src 'self' https://yields.llama.fi https://api.hyperliquid.xyz; frame-ancestors 'none'; base-uri 'none'; form-action 'self' |
| x-content-type-options | nosniff |
| x-frame-options | DENY |
| referrer-policy | strict-origin-when-cross-origin |
Background: How OAuth 2.1 works in the 2026 MCP spec →
Transports 2 probes
| Transport | URL | Outcome | Status | Location |
|---|---|---|---|---|
| streamable-http | https://borro.markets/mcp | Verified | 200 | |
| http (plaintext) | http://borro.markets/mcp | HTTPS enforced | 301 | https://borro.markets/mcp |
The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability. A tool's description is untrusted text the model reads on every call, which is what makes this list a security surface and not just an inventory: how tool poisoning works →
account_open Prepare: open a trade account ~951
Unsigned transaction opening the wallet's version 2 trade account (a TradeAccountV2, one per owner, made by TradeAccountFactoryV2): a trade account with Bailouts, where the owner may post standing offers that pay rescuers to save a position instead of letting it be liquidated (bailout_offer). An agent may be named: an optional second key, never the wallet itself, that can open and close positions within its slippage of the stock's feed, set triggers and cancel the ones it set, post offers within the owner's cap, and send money out to the owner alone. Positions opened inside the account can carry triggers (stop-loss, take-profit, liquidation guard) that anyone can execute for a tip once the price feed confirms them; positions opened from the wallet cannot (close them and open them again inside). Whenever no bailout is owed the owner can take everything out at any time and nobody, Borro included, can stop that; while one is owed, the owner's way out is to pay it (bailout_repay), which lifts the lien at once. A version 1 account the wallet holds stays as it is and keeps working; the other trade tools take either. With a version 2 account open already: agent names a new agent (the old agent's triggers and offers are cancelled with it), revoke_agent: true revokes it at once; account names which of the wallet's accounts to change (default its version 2 one). The owner's settings, on a new account or an open one: the agent's limits (agent_slip_bps, agent_max_tip_bps, agent_max_margin_usdg, agent_daily_loss_usdg, agent_restricted; the agent opens nothing, takes no deposit out, sets no trigger and posts no offer until it has a daily loss budget, and closes whatever the budget; it tips nothing until it has a max tip), agent_bailout_max_usdg (the most an agent's offer may put at stake, 0 by default: none) and max_slip_bps, how far a stop's or a guard's fire bound may widen past its slip (while an offer is live or a bailout is owed it may come down and never up). Simulated fro…
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | Which of the wallet's trade accounts to change (default its version 2 account; give its version 1 account to change that one) |
| agent | string | – | The agent's address (optional): a second key that may trade the account and set triggers, never the wallet itself |
| agent_bailout_max_usdg | string | – | Version 2: the most an offer the agent posts may put at stake (max_usdg), or "none" (default none: the agent posts no offers), in whole units as a decimal string, like "1.5" |
| agent_daily_loss_usdg | string | – | The most the agent's fills (and the fires of the triggers it set) may cost against the feed in all each UTC day, renewed at 00:00 UTC (default 0: no agent opens, deposit withdrawals or triggers; its… |
| agent_max_margin_usdg | string | – | The most equity one position may hold after the agent's trade, or "none" (default none), in whole units as a decimal string, like "1.5" |
| agent_max_tip_bps | integer | – | The most tip the agent's triggers may pay executors (a share of the closed notional at the feed, capped (tip_bps, at most 50 basis points, and never more than the USDG the close returns)), in hundred… |
| agent_restricted | boolean | – | true: the agent opens on the desks the owner allows (setAgentMay) alone |
| agent_slip_bps | integer | – | The most the agent's trades and triggers may price from the feed, in hundredths of a percent (100 to 300, default 100) |
| max_slip_bps | integer | – | How far a stop's or a guard's fire bound may widen past its slip over time, in hundredths of a percent (0: no further, up to 1000) |
| revoke_agent | boolean | – | With an account open: revoke its agent at once |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
account_status A trade account ~264
A trade account (account, or the wallet's own): its owner, its agent and the agent's limits (with today's loss against its daily loss budget and what that still lets the agent do: opens, deposit withdrawals and trigger-sets while it has room; closes and top-ups always), the USDG and stock it holds, its shorts and leveraged longs with their LTV (Morpho's own), how much of their limit each uses and the price that liquidates it, which positions have no trigger, every live trigger with its distance from the price now, who can do what, and the market clock. Triggers do not fire while the stock market is shut or the feed has not printed within 25 hours; a price crossed while it is shut (a weekend, a holiday) fires once the market opens again, at the price the feed prints then, within the trigger's slip, and after a gap that price can be well past the trigger's.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | A trade account's address (default: the wallet's own, as its owner; an agent gives its owner's account) |
| wallet | string | – | The account's owner (when account is not given), or a wallet to say whether it is the owner or the agent |
No output schema declared.
No examples provided.
account_trade Prepare: trade through the trade account ~588
Unsigned transactions to open or close a short or a leveraged long through the trade account: the same trades as open_short, close_short, open_long and close_long, with the account as the trader. action open_short (symbol, amount, deposit), close_short (symbol: all of the account's short on it), open_long (symbol, margin, leverage) or close_long (symbol, percent). The account pays from its own USDG; when it holds too little, a USDG transfer from the wallet to the account comes before the trade (from the agent's wallet with fund_from_wallet: true alone, since the agent's own USDG then becomes the owner's and can go out to the owner alone, never back to the agent). What a close returns stays in the account as USDG (account_withdraw takes it out). The wallet must be the account's owner or its agent; the agent's trades must price within its slippage of the stock's feed (refused in words when the pool is further off). The agent's opens need room in the daily loss budget the owner set: refused in words when it is 0 or today's loss has reached it (until 00:00 UTC), and by the account when the open's own shortfall against the feed would pass it. Its closes run whatever the budget (any share, within its slip), counted into today's loss, past the budget by at most their own shortfall. The answer says how much of the budget is left.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | A trade account's address (default: the wallet's own, as its owner; an agent gives its owner's account) |
| action | string | yes | open_short, close_short, open_long or close_long |
| amount | string | – | open_short: stock to short, in whole units as a decimal string, like "1.5" |
| deposit | string | – | open_short: USDG held beyond the sale (optional), in whole units as a decimal string, like "1.5" |
| fund_from_wallet | boolean | – | The agent signing: true to send its own USDG into the owner's account when the account holds too little (it becomes the owner's; it can go out to the owner alone) |
| leverage | number | – | open_long: leverage, more than 1, like 1.5 |
| margin | string | – | open_long: USDG margin, in whole units as a decimal string, like "1.5" |
| percent | number | – | close_long: how much to close, 1 to 100 (default 100) |
| symbol | string | yes | A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one) |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
account_withdraw Prepare: take money out of the trade account ~222
Unsigned transaction taking money out of the trade account: USDG (the default), a stock by its ticker or any token by its address, an amount or all: true. The owner can send it to any address (default the owner) at any time, whatever the account holds open; the agent can send it to the owner alone. Simulated from the wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | A trade account's address (default: the wallet's own, as its owner; an agent gives its owner's account) |
| all | boolean | – | Everything the account holds of it |
| amount | string | – | How much to take out, in whole units as a decimal string, like "1.5" |
| to | string | – | Where it goes (default the owner; the agent may send to the owner alone) |
| token | string | – | USDG (default), a stock's ticker, or a token's address |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
bailout Prepare: rescue a position (take a Bailouts offer) ~398
For rescuers: unsigned transactions taking an offer on a version 2 trade account, from the wallet's own USDG: an exact USDG approval to the account of what its lens says to approve (what the rescue takes if the account's bUSDG cannot be redeemed, plus 100 bps, for interest, the price and the vault before it lands), then bailout(offer_id, amount). The account works out what it takes when it lands: what brings the LTV to the offer's to_ltv plus 50 bps of it, less its own idle money, at most max_usdg; if the idle money alone does it, nothing is taken. Refused in words when the offer cannot be taken now (under its LTV, expired, a bailout owed already, over its max, the long's debt floor) or the wallet holds too little. The answer gives what you are owed (the principal, your part of the fee within a day and at maturity, Borro's cut of the fee, 1000 bps of it), the position's equity against the claim, and when you may foreclose. Rescues run at any hour. A rescue is the rescuer's own USDG lent against the rescued position plus money that arrives in the account while it is owed: if the position is liquidated anyway the rescuer can lose it. Borro's keeper never rescues. Simulated from the wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | The version 2 trade account's address |
| max_usdg | string | – | The most the rescue may take from the wallet (default: the lens's approve), in whole USDG as a decimal string, like "250" |
| offer_id | string | yes | The offer's number (bailouts shows each one's) |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
bailout_cancel Prepare: cancel a Bailouts offer ~122
Unsigned transaction cancelling a live offer on the version 2 trade account before anyone takes it: the owner cancels any, the agent the ones it posted. Simulated from the wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | A version 2 trade account's address (default: the wallet's own, as its owner; an agent gives its owner's account) |
| offer_id | string | yes | The offer's number (bailouts shows each one's) |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
bailout_claim Prepare: claim a payment a trade account keeps ~266
Unsigned transactions taking what a version 2 trade account keeps for the wallet: a bailout payment the wallet could not take when it was made (USDG had the wallet frozen, or the token refused the transfer), kept in the token it was paid in: USDG, bUSDG shares, a short's held money as BorroShort's vault shares, or a stock vault's shares from a long's in-kind settlement. One claim for each token the account keeps something of (token: one of them), to the wallet or to `to`. Refused in words when the account keeps nothing for it; while USDG has the wallet frozen the claim waits too (PayeeFrozen). Simulated from the wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | The version 2 trade account's address |
| to | string | – | Where it goes (default the wallet; neither the wallet nor to may be frozen by USDG) |
| token | string | – | USDG, bUSDG, held (BorroShort's vault shares), a stock's symbol (its vault's shares) or a token's address (default: every token kept for the wallet) |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
bailout_foreclose Prepare: foreclose on a rescued position ~257
For the rescuer, after maturity: an unsigned transaction foreclosing on the rescued position of a version 2 trade account (never the owner's other positions). The account's idle money pays ahead of the close; then it closes no more of the position than covers what is owed plus 50 bps (percent: less, if asked), bounded at the feed within 50 bps at maturity, widening to the offer's own bound over 35 minutes of trading time; what it returns pays the rescuer ahead of Borro's cut and the rest stays the owner's. The market must be open and the feed fresh. Refused in words before maturity, while the market is shut or the feed stale, when nothing is owed, or from any wallet but the rescuer's. Send with a gas limit of 4,000,000. Simulated from the wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | The version 2 trade account's address |
| percent | number | – | The most of the rescued position to close, more than 0 to 100 (default 100: what covers what is owed) |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
bailout_offer Prepare: post a Bailouts offer ~635
Unsigned transaction posting a standing offer on a position in the version 2 trade account: once its LTV (Morpho's own, at the market's oracle) reaches at_ltv, anyone may put in what brings it back to to_ltv, up to max_usdg; the account's own idle money goes in ahead of the rescuer, who is owed back ahead of the owner plus fee_bps of what it put in (1 to 2000), earned over term_days (1 to 30, default 7), and may foreclose on that position alone after the term. at_ltv under the position's LLTV, to_ltv under at_ltv; expiry_days (default 30) is when it lapses untaken. No money moves when it is posted. At most 4 live offers an account, one per position. While one is live, max_slip_bps and the agent's slip may come down and never up. From the agent: within the owner's cap (agent_bailout_max_usdg) and at least 10.0 USDG, on positions it may trade, at_ltv at least 200 bps over the position's LTV now, 2 times its fee on max_usdg counted into today's loss budget when posted. Refused in words when the position is not held, a bailout is owed, the position carries an offer, the bounds are off, or the agent's limits refuse it; warns when it is takeable at once or when max_usdg is short of what a rescue at at_ltv would take. Simulated from the wallet (the owner or the agent).
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | A version 2 trade account's address (default: the wallet's own, as its owner; an agent gives its owner's account) |
| at_ltv | – | yes | The LTV a rescue opens at: a fraction under 1, like 0.7 (a percent with its sign is taken too) |
| expiry_days | number | – | Days until the offer lapses if no one takes it (default 30, at most 365) |
| fee_bps | integer | yes | The rescuer's fee on what it puts in, earned over the term, in hundredths of a percent (1 to 2000) |
| max_usdg | string | yes | The most a rescuer may put in, in whole USDG as a decimal string, like "250" |
| side | string | yes | short (the account's short on the stock) or long (its leveraged long) |
| symbol | string | yes | A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one) |
| term_days | number | – | Days the owner has to repay before the rescuer may foreclose (1 to 30, default 7) |
| to_ltv | – | yes | The LTV a rescue must bring it back to, under at_ltv |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
bailout_repay Prepare: pay a bailout back ~295
Unsigned transactions paying the bailout owed on a version 2 trade account: from the wallet (the owner, usually; anyone may), an exact USDG approval to the account and payBailout, the rescuer ahead of Borro's cut, with an hour of the fee's growth allowed so it still pays it all when it lands (amount pays part); paid in full, the lien lifts at once. With from_account: true, repayBailout instead (anyone): it pays from what sits in the account, its free USDG and the bUSDG it takes, and once the rescued position has no debt left it hands that position's collateral to the rescuer as it is, up to what is owed, and ends the lien. Refused in words when nothing is owed. Simulated from the wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | A version 2 trade account's address (default: the wallet's own, as its owner; an agent gives its owner's account) |
| amount | string | – | How much to pay from the wallet (default: everything owed), in whole USDG as a decimal string, like "250" |
| from_account | boolean | – | true: settle from what sits in the account (repayBailout) instead of the wallet |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
bailouts Bailouts: offers and what is owed ~330
Bailouts on a version 2 trade account (account, or the wallet's own): each live offer with its terms (at_ltv, to_ltv, max_usdg, fee_bps, term, expiry, foreclosure bound) and what a rescue takes now by the account's own lens (needed, and needed if the account's bUSDG cannot be redeemed when it lands; what to approve; what the account's free USDG and bUSDG put in ahead of the rescuer; the position's equity against the claim; past its LLTV or under water; an offer the account's bUSDG helps cover reads takeable; takeable or why not), and the bailout owed if any (the rescuer, the principal, what is owed now with the fee earned so far, maturity, whether the rescuer may foreclose now and within what bound). With wallet, also what the account keeps for that wallet to claim. With neither account nor wallet: the offers a rescuer can take across the newest 50 version 2 accounts, the takeable ones ahead, each with its prepare call (Borro's keeper lists every takeable offer at /jobs.json). A rescue is the rescuer's own USDG lent against the rescued position plus money that arrives in the account while it is owed: if the position is liquidated anyway the rescuer can lose it.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | A version 2 trade account (optional) |
| wallet | string | – | The account's owner (when account is not given), or a wallet whose claims to show |
No output schema declared.
No examples provided.
bear_coins Bear coins ~38
The bear coins directory: every coin launched on Pons from Borro with its own short, its stock, P/L, burns and fees.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
bind_builder Prepare: credit a bookrunner for borrowing ~226
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.
| Name | Type | Req | Description |
|---|---|---|---|
| code | string | yes | The bookrunner's code, as in borro.markets/?ref=<code> |
| signature | string | – | The wallet's EIP-712 signature, 0x and 130 hex characters; leave out to get the typed data |
| timestamp | integer | – | With signature: the timestamp from the typed data that was signed |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
borrow Prepare: borrow USDG ~124
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | USDG to borrow, in whole units as a decimal string, like "1.5" |
| symbol | string | yes | A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one) |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
buy_cover Prepare: buy gap cover ~281
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.
| Name | Type | Req | Description |
|---|---|---|---|
| notional | string | yes | Cover, in USDG: for a short, about what the shares are worth, in whole units as a decimal string, like "1.5" |
| side | string | yes | up (pays on a gap up: for a short) or down (on a gap down: for a long) |
| strike_bps | integer | – | How far the stock must move before it pays, in hundredths of a percent: 100, 200, 300 or 500 are quoted (default 200, 2%) |
| symbol | string | yes | A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one) |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
buy_option Prepare: buy a call or a put ~267
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.
| Name | Type | Req | Description |
|---|---|---|---|
| expiry | string | – | this (default), next, or a Friday's date like 2026-10-16 |
| max_premium | string | – | The most to pay in all, USDG (optional), in whole units as a decimal string, like "1.5" |
| order_id | string | – | Buy from this ask instead of the best one |
| shares | string | yes | Shares to buy, in whole units as a decimal string, like "1.5" |
| strike | string | – | The strike in dollars, like "250" |
| symbol | string | yes | A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one) |
| type | string | – | call or put |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
buy_with_eth Prepare: pay with ETH ~155
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | How much of it to get, in whole units as a decimal string, like "1.5" |
| slip_bps | integer | – | Most the price may move, in hundredths of a percent (default 100, 1%) |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
| want | string | yes | USDG, or a stock symbol |
No output schema declared.
No examples provided.
cancel_order Prepare: cancel an order ~97
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.
| Name | Type | Req | Description |
|---|---|---|---|
| order_id | string | yes | The order's number (position lists this wallet's open orders) |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
claim_cover Prepare: claim a waiting payout ~65
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.
| Name | Type | Req | Description |
|---|---|---|---|
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
claim_option Prepare: claim a settled option ~165
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.
| Name | Type | Req | Description |
|---|---|---|---|
| as_shares | boolean | – | A put: take Steakhouse USDG vault shares instead of USDG |
| series_id | string | yes | The series id (position lists them) |
| shares | string | – | Shares to claim (optional, default all), in whole units as a decimal string, like "1.5" |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
close_long Prepare: close a leveraged long ~119
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.
| Name | Type | Req | Description |
|---|---|---|---|
| percent | number | – | How much of the position to close, 1 to 100 (default 100) |
| symbol | string | yes | A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one) |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
close_pair Prepare: close a pair ~175
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.
| Name | Type | Req | Description |
|---|---|---|---|
| long | string | yes | A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one) |
| short | string | yes | A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one) |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
close_short Prepare: close a short ~144
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.
| Name | Type | Req | Description |
|---|---|---|---|
| symbol | string | yes | A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one) |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
counterparty_check Check a counterparty's repayment record ~314
Another lender's repayment record of an agent or a wallet: Priors' record on Robinhood Chain (loans repaid and their USDG, loans open, any default, its Priors Score v2 and rung), read live from Priors' check API and given in Borro's own words. agent: an ERC-8004 agent id; address: a wallet (an agent's, a payee's, an x402 payTo), which finds the agents it owns or pays for (at most 3 shown, best rung ahead); exactly one. It is Priors' record, not Borro's, and Borro does not vouch for it: check_on_chain says how to read Priors' score from the ERC-8004 registry yourself. verdict: no record, no repayments yet, repaid or defaulted. proven is true when a listed agent has a published Priors Score v2 at rung 2 or more (proven: three or more backed repayments over 14 days or more, none late), no default and is not frozen; anything missing counts as not proven. credit_open, credit_line, credit_guardrails, credit_pay, credit_bill, hold_open and account_open show the same record as agent_record or payee_record when Priors answers within 2.5 seconds.
| Name | Type | Req | Description |
|---|---|---|---|
| address | string | – | A wallet: 0x and 40 hex characters |
| agent | string | – | An ERC-8004 agent id, like "462" |
No output schema declared.
No examples provided.
credit_bill Prepare: pay an x402 bill from an agent credit line ~309
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | The line's address |
| max_usdg | string | – | The most to pay for this one bill (optional; refused above it), in whole units as a decimal string, like "1.5" |
| payment_required | – | yes | The merchant's 402: its PAYMENT-REQUIRED header value (base64), or its JSON body |
| wallet | string | yes | The payer's address (0x...): the line's agent, or its owner |
No output schema declared.
No examples provided.
credit_bill_header The x402 payment header for a signed bill ~154
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.
| Name | Type | Req | Description |
|---|---|---|---|
| authorization | – | yes | The authorization credit_bill returned, as it returned it |
| payment_required | – | yes | The same payment_required given to credit_bill |
| signature | string | yes | The wallet's signature of credit_bill's typed_data (0x hex) |
No output schema declared.
No examples provided.
credit_gas Prepare: gas for an agent, from its line ~267
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | The line's address |
| amount | string | – | 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" |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
credit_guardrails Prepare: change an agent credit line's limits ~731
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).
| Name | Type | Req | Description |
|---|---|---|---|
| accept | boolean | – | The wallet the line is offered to: accept it, then name Borro's keeper again |
| account | string | yes | The line's address |
| agent | string | – | A new agent address |
| allow | array | – | Addresses to add to the allowlist |
| bills | boolean | – | true: bill pay, the agent's own wallet on the allowlist (credit_bill); false: take it off |
| ceiling | string | – | The most USDG the line may owe, in whole units as a decimal string, like "1.5" |
| daily_limit | string | – | The most USDG out in any 24 hours, like "100", or "none" |
| deny | array | – | Addresses to take off it |
| gas_station | boolean | – | true: put the agent's gas station on the allowlist; false: take it off |
| keeper | string | – | "borro", "none" or an address |
| revoke_agent | boolean | – | Revoke the agent at once |
| sell_bps | integer | – | 0 to 2500 (0 in a market with no pool) |
| slip_bps | integer | – | 0 to 1000 |
| target_ltv | – | – | Target LTV, a fraction under 1 like 0.18 or a percent with its sign like "18%" |
| transfer_to | string | – | The owner: offer the line to this address (it becomes theirs when they accept) |
| trigger_ltv | – | – | Protect trigger LTV, at or above the target, like 0.27 or "27%" |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
credit_line Agent credit: a line ~407
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | A line's address |
| owner | string | – | A wallet whose lines to list |
| page | integer | – | With owner: which five lines, newest first (default 1) |
No output schema declared.
No examples provided.
credit_markets Agent credit: the markets ~252
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.
Input schema present but exposes no named parameters.
No output schema declared.
No examples provided.
credit_open Prepare: open an agent credit line, post or borrow ~1,017
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | – | An existing line: post more and/or borrow from it (leave out to open a new line) |
| agent | string | – | New line: the agent's address, the wallet that will borrow from it (not the owner's) |
| allow | array | – | New line: addresses borrowed USDG may go to (16 at most) |
| bills | boolean | – | 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) |
| borrow | string | – | USDG to borrow now (optional), in whole units as a decimal string, like "1.5" |
| ceiling | string | – | New line: the most USDG the line may owe (optional), in whole units as a decimal string, like "1.5" |
| credits | string | – | Credits to post, in whole units as a decimal string, like "1.5" |
| daily_limit | string | – | 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) |
| gas_station | boolean | – | New line: put the agent's gas station on the allowlist, so the agent can borrow its own gas (credit_gas) |
| keeper | string | – | New line: "borro" (Borro's keeper, the default), "none", or an address |
| market | string | – | New line: which market, by its symbol in credit_markets (default CREDIT) |
| sell_bps | integer | – | 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 | integer | – | New line: most a protect sale may fill under the feed's price, in hundredths of a percent (0 to 1000, default 300) |
| target_ltv | – | – | 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) |
| to | string | – | Where borrowed USDG goes: the owner or an allowlisted address (default the wallet, or the owner) |
| trigger_ltv | – | – | New line: LTV above which the keeper may protect it (default by the market's rule) |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
credit_pay Prepare: pay from an agent credit line ~206
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).
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | The line's address |
| amount | string | yes | USDG to pay, in whole units as a decimal string, like "1.5" |
| to | string | yes | The payee: an address on the line's allowlist, or its owner |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
credit_repay Prepare: repay an agent credit line ~443
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.
| Name | Type | Req | Description |
|---|---|---|---|
| account | string | yes | The line's address |
| amount | string | – | USDG to repay, or "all", in whole units as a decimal string, like "1.5" |
| close | boolean | – | The owner: repay everything and take every credit back |
| min_usdg | string | – | 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" |
| sell | string | – | With unwind: CREDIT to sell, or "all" (default: enough for the whole debt), in whole units as a decimal string, like "1.5" |
| then_close | boolean | – | With unwind: close the line after (default true when the sale covers the debt) |
| unwind | boolean | – | The owner: sell the line's CREDIT into its debt, no USDG needed |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
deposit_cover Prepare: fund the gap cover pool ~116
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.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | USDG to deposit, in whole units as a decimal string, like "1.5" |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
farm_deposit Prepare: put money into a farm ~238
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.
| Name | Type | Req | Description |
|---|---|---|---|
| slip_bps | integer | – | Most the farm may move against the quote, in hundredths of a percent (default 50, 0.5%) |
| stock | string | – | Stock to put in (optional if usdg is given), in whole units as a decimal string, like "1.5" |
| symbol | string | yes | A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one) |
| usdg | string | – | USDG to put in (optional if stock is given), in whole units as a decimal string, like "1.5" |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
farm_withdraw Prepare: take money out of a farm ~185
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.
| Name | Type | Req | Description |
|---|---|---|---|
| percent | number | – | How much of the wallet's part to take out, 1 to 100 (default 100) |
| slip_bps | integer | – | Least accepted under the preview, in hundredths of a percent (default 50, 0.5%) |
| symbol | string | yes | A stock on Borro by its ticker, like NVDA or AAPL (markets lists every one) |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
farms Stock farms ~196
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.
| Name | Type | Req | Description |
|---|---|---|---|
| symbol | string | – | One stock's farm (optional), by its ticker, like NVDA; farms lists the stocks that have one |
| wallet | string | – | A wallet whose part of each farm to show (optional) |
No output schema declared.
No examples provided.
gaix_borrow Prepare: post gAIX and borrow USDG ~177
Unsigned transactions to post gAIX as collateral and borrow USDG against it, from the wallet: approve gAIX to Morpho for exactly what is posted (when needed), post it, borrow. post and amount can each be given alone (post more to an open loan; borrow more against what is posted). Borrowing pauses every weekend and whenever a basket price is out of date (posting does not), and stops at three quarters of the limit. Simulated from the wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | – | USDG to borrow, as a decimal string, like "250" |
| post | string | – | gAIX to post, in whole shares as a decimal string, like "10" |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
gaix_lend Prepare: lend gAIX to the shorts ~106
Unsigned transactions to lend gAIX from the wallet into bgAIX, the vault that lends it to gAIX shorts: approve the gAIX (when needed), deposit. What it earns moves with use. Simulated from the wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | gAIX to lend, as a decimal string, like "10" |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
gaix_market gAIX loans: the market and a wallet's loan ~199
Borrowing USDG against Goldstein's gAIX (a tokenized index fund of AI and tech stock tokens): the price Borro lends at (what a share redeems for at Chainlink's stock prices, less the fund's redemption fee), whether borrowing is paused (every weekend, and whenever a basket price is out of date; repaying always works), the limit (LLTV) and the new-loan limit (three quarters of it), what a borrower pays a year from now on, what is free to borrow, and the fund's own NAV as context. With wallet: that wallet's loan (gAIX posted, what it is worth, what is owed, how much of the limit is used, what it can still borrow, the price at which it can be liquidated) and its gAIX and USDG.
| Name | Type | Req | Description |
|---|---|---|---|
| wallet | string | – | Optional: a wallet whose loan to read (0x...) |
No output schema declared.
No examples provided.
gaix_repay Prepare: repay a gAIX loan and take gAIX back ~187
Unsigned transactions to repay a gAIX loan from the wallet (part, or all: true to clear it exactly) and, if asked, take gAIX back to the wallet (take_back: shares, or "all"). Repaying always works, weekends included; taking gAIX back while a loan stays open pauses every weekend and whenever a basket price is out of date, and keeps the loan under three quarters of its limit. Simulated from the wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| all | boolean | – | true repays everything owed |
| amount | string | – | USDG to repay, as a decimal string, like "100" |
| take_back | string | – | gAIX to take back, in shares as a decimal string, or "all" |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
gaix_short_close Prepare: close a gAIX short through the pool ~167
Unsigned transactions to close a gAIX short through Goldstein's pool (amount: gAIX to buy back, or all: true): the gAIX is bought with the USDG held, any shortfall from the wallet, and what is left comes back. Goes through while the hook takes at most 4%; over that, or for a sliver of debt, use gaix_short_close_in_kind. While the desk is paused a close is whole. Simulated from the wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| all | boolean | – | true closes or takes out everything |
| amount | string | – | gAIX to buy back, as a decimal string |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
gaix_short_close_in_kind Prepare: close a gAIX short in kind ~137
Unsigned transactions to close a gAIX short with gAIX the wallet brings (amount, or all: true): approve the gAIX, repay, take out the USDG it frees. No trade and no hook; a whole close reads no price, so it works on weekends and whatever the hook charges. Simulated from the wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| all | boolean | – | true closes or takes out everything |
| amount | string | – | gAIX to repay, as a decimal string |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
gaix_short_deposit Prepare: add or take back USDG on a gAIX short ~139
Unsigned transactions to add USDG to the money held against a gAIX short (add) or take some back (take: USDG, or "all"). With a short open, what stays held keeps it under three quarters of its limit, and taking back waits while the desk is paused. Simulated from the wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| add | string | – | USDG to add, as a decimal string |
| take | string | – | USDG to take back, as a decimal string, or "all" |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
gaix_short_open Prepare: short gAIX ~206
Unsigned transactions to open (or add to) a gAIX short from the wallet: approve the USDG deposit (when needed), then open, which borrows the gAIX and sells it through Goldstein's pool, the sale money joining the deposit. Goes through when the hook takes at most 2% and the sale brings at least 95% of gAIX's price; stops at the desk's room and at three quarters of the limit; waits while the desk is paused. The open needs a gas limit of at least 12,000,000 (its transaction carries gas). Simulated from the wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | yes | gAIX to short, as a decimal string, like "5" |
| deposit | string | – | USDG to deposit with it, as a decimal string, like "200" |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
gaix_short_quote gAIX shorts: the desk, quotes and a wallet's short ~238
Shorting Goldstein's gAIX (a tokenized index fund of AI and tech stock tokens) with USDG, and lending gAIX to the shorts: whether the desk is open or paused (every weekend), gAIX's price, the limit and the room left for new shorts (book ceiling, a tenth of supply, gAIX lent), the rates for shorts and lenders, the bounds on the pool hook's charge. With sell or buy: what selling or buying that much gAIX through Goldstein's pool brings or costs, and the hook's charge. With wallet: its short (gAIX owed, USDG held, limit used, the price at which it can be closed for it), its gAIX in bgAIX and its balances.
| Name | Type | Req | Description |
|---|---|---|---|
| buy | string | – | Optional: gAIX to quote a purchase of (a close), like "5" |
| sell | string | – | Optional: gAIX to quote a sale of (an open), like "5" |
| wallet | string | – | Optional: a wallet whose short and lending to read (0x...) |
No output schema declared.
No examples provided.
gaix_withdraw Prepare: take gAIX out of bgAIX ~108
Unsigned transactions to take gAIX out of bgAIX back to the wallet (amount, or all: true), as much as is not lent out to shorts right now. Simulated from the wallet.
| Name | Type | Req | Description |
|---|---|---|---|
| all | boolean | – | true closes or takes out everything |
| amount | string | – | gAIX to take out, as a decimal string |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
health Health and liquidation prices ~135
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.
| Name | Type | Req | Description |
|---|---|---|---|
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
hold_collect Prepare: collect from a hold ~405
One unsigned transaction paying a hold's payee. Metered: settle with the latest voucher (cumulative and signature, or by default the last one Borro's facilitator accepted); until the expiry anyone may send it, in the 4-day grace after it the payee or its operator, and the USDG goes to the payee. Charge: charge an amount (default all the cap has left), the payee or its operator, until the grace ends. A stock hold sells stock along its desk's route, while the market is open. When the vault can pay out part of it, it pays that much and the rest can be collected later; in_shares true (the payee or its operator) pays the vault's shares instead, which needs no liquidity (a stock hold's at its feed with BorroHolds' constant pad of 0.5% (PAD_BPS, 50 bps), while the market is open: shares worth the amount divided by one plus the pad, the whole amount counted as paid; the payee bears the pad whenever it collects a stock hold in kind). Simulated from the wallet, with what the payee gets after the hold's fee.
| Name | Type | Req | Description |
|---|---|---|---|
| amount | string | – | Charge mode: USDG to charge, in whole units as a decimal string, like "1.5" |
| cumulative | string | – | Metered: the voucher's cumulative, in USDG's smallest units |
| hold | string | yes | The hold's id |
| in_shares | boolean | – | Pay the payee the vault's shares worth the amount (a stock hold's divided by one plus the constant 0.5% (PAD_BPS, 50 bps) pad; the payee or its operator) |
| signature | string | – | Metered: the voucher's signature |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
hold_end Prepare: end a hold ~113
One unsigned transaction ending a hold: release (its payee or operator, any time) or, after the expiry and the payee's 4-day grace, reclaim (anyone). Either way every share left goes back to the payer. Until then the payer cannot end it. Warns when releasing would give up accepted vouchers nobody has collected.
| Name | Type | Req | Description |
|---|---|---|---|
| hold | string | yes | The hold's id |
| wallet | string | yes | The wallet's address (0x...); the transactions are built for it to sign |
No output schema declared.
No examples provided.
How do I install the Borro MCP server?
Borro is a hosted endpoint at https://borro.markets/mcp, so there is nothing to install locally. Ready-made configuration for Claude, Cursor, VS Code, Codex and 5 more is on this page, copied from each client's own documentation.
remote · borro.markets
claude mcp add --transport http markets-borro-borro 'https://borro.markets/mcp'
What is the Borro MCP server?
Borro is an MCP server listed in the public MCP registry as markets.borro/borro. Stock lending on Robinhood Chain: read markets and prepare lends, loans, shorts and credit lines. This page covers its hosted endpoint (https://borro.markets/mcp).
Is the Borro MCP server safe to use?
Borro scores 70 out of 100 on VerifyMCP. That is a record of what we were able to check automatically, not an endorsement. The category breakdown on this page shows every signal behind the number, including the ones we could not confirm.
What tools does the Borro MCP server expose?
Borro exposes 85 tools: markets, market, health, position, trades, and 80 more. Their descriptions and schemas cost roughly 21,861 tokens of context every time the server is loaded.
Does the Borro MCP server require authentication?
No. We connected to Borro without credentials and it answered, so anything it exposes is reachable by anyone who knows the address.
Is the Borro MCP server still maintained?
Borro is still listed as active in the MCP registry. We last reached this channel on 5 November 2026. Those dates come from our own scans of the registry and the channel itself, not from anything the publisher announced.