agentgates.aiVerified
Confidential computers for AI swarms: sealed VMs (Intel TDX) by the hour, USDC over x402.
Finance & CryptoPayments & trading
- Passed: Handshake
- Passed: Tools listed
- Passed: Updated recently
Median latency 514 ms · Last checked
Explore
Evidence for your next connection.
Independent measurements of remote MCP servers. Every observation has a timestamp.
Read-only probesMCP server · Payments & trading
Stock lending on Robinhood Chain: read markets and prepare lends, loans, shorts and credit lines.
1 failed · 8 not measured
Median of successful probes over 7 days
Share of countable probes over 30 days, including daily rollups. Auth challenges are excluded.
Tool definitions returned by this server
Independent monitoring
Responded
The server completed its last measured handshake. This is an observation, not a guarantee.
Last checked| Test area | Passed | Failed | Unmeasured |
|---|---|---|---|
ConnectionCan a client connect and discover tools? | 5 | 0 | 0 |
Reliability & speedDoes it respond consistently and quickly? | 0 | 0 | 4 |
Access & authenticationWhat is required to use this server? | 1 | 0 | 2 |
Tool qualityAre the tool definitions usable by an agent? | 4 | 0 | 0 |
Publisher identityCan the publisher be traced to its source? | 3 | 1 | 2 |
Unmeasured means there is not enough evidence to decide. How these checks work
Start using Borro
Choose your client, copy the configuration, then enable the server in your client’s MCP settings.
Run this command in your terminal, then restart Claude Code.
Claude Code
claude mcp add --transport http borro https://borro.markets/mcpCapabilities
Showing 100 of 102 tools.
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 from the wallet.
DiscoveredA 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.
DiscoveredUnsigned 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.
DiscoveredUnsigned 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.
DiscoveredFor 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.
DiscoveredUnsigned 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.
DiscoveredUnsigned 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.
DiscoveredFor 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.
DiscoveredUnsigned 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).
DiscoveredUnsigned 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.
DiscoveredBailouts 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.
DiscoveredThe bear coins directory: every coin launched on Pons from Borro with its own short, its stock, P/L, burns and fees.
DiscoveredCredits 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.
DiscoveredUnsigned 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.
DiscoveredUnsigned 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.
DiscoveredUnsigned 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.
DiscoveredUnsigned 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.
DiscoveredUnsigned 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.
DiscoveredUnsigned 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.
DiscoveredUnsigned 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.
DiscoveredUnsigned 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.
DiscoveredUnsigned 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.
DiscoveredUnsigned 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.
DiscoveredAnother 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.
DiscoveredPay 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.
DiscoveredAfter 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.
DiscoveredUnsigned 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.
DiscoveredOne 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).
DiscoveredOne 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.
DiscoveredAgent 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. Policy credit: an agent that has claimed a policy in the registry opens with the policy's earned daily default for its rung (newborn 100, proven 250, established 500 USDG; rung 0 at most 250, rung 1 at most 500, rung 2 at most 1,000) when that is more than the station rule's; the policy tool reads a policy's record.
DiscoveredUnsigned 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. Policy credit: when the agent has claimed a policy in the registry and the line has a gas station or bill pay, its default daily limit is the policy's earned default for the claim's rung (the policy tool shows it) whenever that is more, capped by the ceiling, and daily_limit_note names the policy, its tier and the rung.
DiscoveredOne 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).
DiscoveredUnsigned 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.
DiscoveredA wallet's Zero Dark balances (USDG and each market's stock): in Zero Dark, pending until the next batch, available for orders, and in the wallet. Orders draw on this balance at each batch; no order locks funds of its own.
DiscoveredAn unsigned transaction to cancel an order by its commitment, from the owner or one of its session keys. It counts from the next batch (one already being proven keeps it). Simulated from the wallet.
DiscoveredUnsigned transactions to deposit USDG or a market's stock into the wallet's Zero Dark balance (or, with for, into another account's: anyone may fund an account, a session key included): approve exactly the amount when needed, then deposit. Simulated from the wallet.
DiscoveredA wallet's Zero Dark fills, all public on chain at settlement: market, batch, side, size, price, notional, fee, the Bookrunner's share and the transaction.
DiscoveredZero Dark, Borro's dark pool for stock tokens on Robinhood Chain: whether it is open, the sessions and the next batch (a call auction per market once a minute in US regular hours, at the reference midpoint), each market's reference price and where it comes from, its book size (never depth), lot size and caps, the fee, and what is hidden and what is not.
DiscoveredOrders are sealed on the agent's own side, where it holds its key: this tool never takes an order's terms. Without receipt: the order kit (Zero Dark's address, the matcher's sealing key and receipt signer read from the chain, the market's lot size and caps, the next auction and the last auctions for IOC and DAY, the encoding and the Zero Dark kit's command; builder turns a Bookrunner code into the bytes32 an order carries). With receipt (the matcher's EIP-712 intake receipt the kit got from /darkroom/order) and wallet (the owner, or its session key): the receipt checked against the chain's matcherSigner, then the unsigned commit transaction, simulated from that wallet. Commit a receipt for an order you sealed yourself: a receipt binds a commitment, not terms you can see, so a receipt someone else hands you commits whatever order they sealed.
DiscoveredA wallet's Zero Dark orders as the chain has them: commitment, market, the session key that committed it, when, filled lots and status (live, cancelled, filled, done). An order's terms are not on chain until any part of it fills, or a stale removal is tried on it (whether it succeeds or fails); then the whole opening is in that transaction. Until then the agent that placed an order keeps them.
DiscoveredRegister a session key for an agent, with caps: USDG notional per order and per UTC day (counted at each batch's price), the markets it may trade (symbols, comma separated, or all) and an expiry. The key consents by signing: without key_sig this returns the EIP-712 typed data for the session key to sign (its expiry fixed); call again with key_sig and that expiry, or with the Zero Dark kit's whole registration, for the owner's unsigned transaction, simulated from the wallet. The key can commit and cancel within its caps; it can never withdraw or change keys.
DiscoveredUnsigned transactions for the owner's wallet to revoke one session key (agent_id) or every live one (all: true, the kill switch). Effective at once for commits and cancels; the keys' orders stop filling from the next batch. Simulated from the wallet.
DiscoveredZero Dark's venue tape, 15 minutes behind, with sizes in buckets and no accounts, and weekly per-market volume two weeks after each week. Exact fills are on chain at settlement.
DiscoveredAn unsigned transaction to withdraw USDG or a stock from the wallet's own Zero Dark balance to the wallet. The owner's own call: session keys cannot withdraw. Inside a 30 second settlement window an account with orders in a book waits until the window ends. Every order in a book needs its market's smallest fill held in that stock or in USDG: withdraw below that and anyone can sweep the account's orders placed more than 10 minutes ago, the newest before the older ones, in the book the sweeper picks. Simulated from the wallet.
DiscoveredUnsigned 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.
DiscoveredUnsigned 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.
DiscoveredUnsigned 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.
DiscoveredBorro'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.
DiscoveredUnsigned 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.
DiscoveredUnsigned 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.
DiscoveredBorrowing 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.
DiscoveredUnsigned 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.
DiscoveredUnsigned 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.
DiscoveredUnsigned 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.
DiscoveredUnsigned 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.
DiscoveredUnsigned 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.
DiscoveredShorting 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.
DiscoveredUnsigned 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.
DiscoveredFor 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.
DiscoveredOne 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.
DiscoveredOne 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.
DiscoveredAfter hold_pay and the payer's signature: the header the merchant reads (PAYMENT-SIGNATURE, or X-PAYMENT for x402 version 1), base64 JSON with the voucher { hold, cumulative, signature }. Reads no chain and sends nothing; recovers a 65-byte signature to the hold's payer. Send the same request again with header.name set to header.value.
DiscoveredUnsigned transactions putting part of the wallet's Borro position on hold for one payee, up to a cap in USDG and until an expiry, while the shares keep earning (the vault's interest or lending fees, and the $BORRO Drip). vault: "USDG" (the default: usdg, the cap unless given, goes into bUSDG and the hold is those shares, openWithUsdg) or a stock's ticker (shares of its Borro vault the wallet holds, "all" or an amount; worth more than the cap at the vault's cover). mode: "metered" (the default: x402 requests paid with vouchers, hold_pay) or "charge" (the payee charges up to the cap). With payment_required (a merchant's 402 offering the borro-hold scheme) the payee, the vaults it takes, the least cap and life are the merchant's. expiry_seconds: up to 90 days (default the merchant's, else a day). The payer cannot take the shares back before the expiry and a 4-day grace after it, in which the payee may still collect; the payee or its operator can release them any time, and after the grace anyone can reclaim them for the payer. The terms the payer accepts (the stock's desk, the most slippage on its sales, the most fee) come from the vault's listing and the fee now, and max_slip_bps or max_fee_bps tighten them; they are fixed for the hold's life. An exact approval to BorroHolds comes before it when one is missing; simulated from the wallet. Returns the hold's id.
DiscoveredThe voucher for one x402 request (HTTP 402 offering the borro-hold scheme): the typed data the hold's payer signs, saying what it owes the merchant in all on the hold, counted on from the last voucher Borro's facilitator accepted (or what the hold has paid on chain, if more). Give payment_required and hold (its id), or wallet to use its newest hold the merchant takes. Refused in words when the hold cannot pay it (another payee, a vault the merchant does not take, too close to its expiry, its cap used, too little value) or the request costs more than max_usdg. Nothing is sent: sign typed_data (eth_signTypedData_v4), then hold_header.
DiscoveredA hold on BorroHolds by its id, or the newest 10 a payer opened or that pay a payee: payer, payee, vault, mode, cap, paid, shares and their value in USDG, the cover, the expiry and the payee's 4-day grace after it, the terms fixed when it opened (desk, slippage, fee), USDG BorroHolds credited to the payer with its claim transaction, and for metered holds what Borro's facilitator has accepted in vouchers, what is owed and not collected yet, and the last voucher (hold_collect sends it; it pays the payee).
DiscoveredHold $BORRO. Borrow for less. What a wallet's $BORRO gets it on Agent Credit Lines, with or without lines. Keep $BORRO in the wallet that borrows (its own BorroLock lock counts as held) and its lines get, always: (1) up to half their interest back every Monday, in USDG: the full rate when it holds $BORRO worth a quarter of what its lines owe together, proportionally less with less; (2) liquidation profit back: when Borro's keeper liquidates a line, what it makes comes back, in proportion to the holding, unless the line was left short or left bad debt. And where switched on (rules.gas says whether it is): (3) gas on the house: on a line owing gas.minDebtUsdg (25 USDG by default) or more, while the holder holds at least gas.minShare (half by default) of the $BORRO its lines' full rate needs, Borro tops up the agent's wallet when it runs low on ETH (the owner's, if the agent has not borrowed on the line within 7 days), within weekly limits, if it is a plain wallet (no smart-account code). Send the $BORRO away and it stops (and forfeits that part of the week's unpaid benefits). Nothing to sign, lock or stake. Answers live (false until Borro's keeper publishes its count; until then nothing is counted or paid), counts (what Borro's keeper counted on the last day it counted), share, via, heldBorro, borroForFull ($BORRO for the full rate at today's price) and borro_to_add_for_full, covers_debt_usdg (the most its lines may owe at the full rate), weekSoFarUsdg, interestBackBps, gasOnTheHouse, each line with what it owes and its rate back, each market's Borro-run supply share (interest paid to anyone else's direct supply, or to the wallet's own part of Borro's USDG vault, gets nothing back), the rules and the paid weeks; share and the rates are estimates if held through a whole UTC day. With borrow_usdg: the same for a planned borrow on top. It reads; it builds no transaction.
DiscoveredEvery paid job on Borro right now, in one list: the positions past their liquidation limit (from Borro's keeper's /jobs.json), the triggers holding now (from /triggers.json) and the Bailouts offers a rescuer can take now (from /jobs.json). A liquidation is paid from the liquidated position's collateral, a trigger by the tip its owner set, and a rescue by the fee its owner offered; Borro itself pays none of them. Each job says what it pays (an estimate from a simulation or the offer's terms, never a promise), its gas, how long it has been open, when Borro's keeper steps in (borro_keeper_acts_after: it is the backstop for liquidations and triggers, and it may give outside agents a head start; it never rescues, since Borro puts no capital in), and the call that prepares it (liquidate, trigger_fire or bailout). Liquidations need no money of your own: the market's liquidator takes the collateral, sells it, repays the debt and pays you what is left. A rescue is the one job that takes your own USDG: it is lent against the rescued position, owed back ahead of the owner with the offer's fee, and can be lost if the position is liquidated anyway. Reads no chain; says so when the lists are empty or stale.
DiscoveredUnsigned transaction liquidating a position past its limit, through the market's own liquidator (anyone may call it, and it pays the caller): no money of the wallet's, Morpho hands over the collateral, it is sold, the debt repaid, and the rest goes to the wallet. market: a stock's symbol with side short or usdg, an agent credit market's symbol (as credit_markets lists them), or a market id (0x and 64 hex) for a coin short or a coin loan (a coin's address with side works too; keeper_jobs gives the arguments). Reads the position fresh from the chain, sizes it as Borro's keeper does, simulates it from the wallet, and sets minProfit to 90% of the simulated profit unless min_profit_usdg is given: under it the transaction reverts and costs the gas alone. Refused in words when the position is healthy, the profit is under min_profit_usdg, the stock vault has lent its stock out (CannotRedeem), or the market is not Borro's.
DiscoveredOne stock's full line from the shelf: rates, sizes, limits, open fee and its contracts.
DiscoveredEvery stock on Borro and the USDG vault: price, what is lent, borrowed and free to short, what lenders earn and what shorters pay a year (one number each, $BORRO included once it has been paid), the USDG borrowing rate against each stock, and the $BORRO Drip to lenders: dollars a day per pool at today's price, and the rate a deposit of a given size would get.
DiscoveredUnsigned transactions for a leveraged long on a stock in one open: USDG margin plus a flash-borrowed debt buy the stock, which is lent (it earns lending fees) and posted, and the debt is borrowed against it in the wallet's own name. Approve the margin and authorize LeverRouter on Morpho if needed, then open. Leverage up to 1.80x on SPY, QQQ and NVDA, 1.35x on the rest.
DiscoveredUnsigned transactions for a pair trade: buy and lend the long stock in your name (it earns lending fees while held), then short the other, approvals first. Priced now; simulated from the wallet in order.
DiscoveredUnsigned transactions to short a stock from the wallet: approve the deposit if needed, then BorroShort.open (borrow the stock, sell it, hold the money plus the deposit). Priced now, with half a percent of slip allowed; simulated from the wallet. The quote's rebate_estimate is what this short puts in the wallet's weekly locker rebate.
DiscoveredOne stock's options chain for this Friday and next (expiry Friday 8pm New York): per strike and side the series id, Borro's fair value (Black-Scholes from the stock's own measured volatility, a guide), delta, the best ask and bid (checked on chain), the IV the ask implies, the shares written and the last traded IV; the stock's price, its volatility a year and the last traded IV; and whether the desk is live, paused and its fee. Prices are dollars a share, premiums USDG a share.
DiscoveredUnsigned transactions, on another EVM chain, that lend into Borro or buy a stock token on Robinhood Chain from what the wallet holds there: any token or the chain's own coin, on any of the chains Trustware routes from (70 and more). Trustware (trustware.io) finds the route and screens it; Borro checks the route is the one asked for (the wallet's own money, Borro's own vault, the amount, the fees) before it is returned. The route is good for about a minute: sign the approvals, then the transaction, on the source chain; the deposit lands on Robinhood Chain in the wallet's name. Then pay_with_status with the intentId. A chain or token the wallet does not hold is refused with what it holds instead.
DiscoveredThe status of a route pay_with prepared, by its intentId, once its transaction was sent: pending, done (what arrived on Robinhood Chain) or failed, as Trustware reports it.
DiscoveredA seller's receiving address on Borro: put it as payTo in your x402 offers (or as a payment channel's receiver, or a Borro hold's payee) and whatever USDG it is paid is swept into Borro's USDG vault, bUSDG, straight to the owner's wallet, so takings earn until spent. Gives the address (one per owner, known before it is made), whether it is made, the USDG waiting there, the owner's bUSDG and its worth, and the x402 fields to use. Pass wallet (the owner), or address (a receiving address, to find its owner).
DiscoveredAn unsigned transaction to make the wallet's receiving address (once; anyone may make it, and it always works for the owner and no one else). Payments sent to the address before it is made wait there and are swept once it is. Refuses owners whose address could never be spent from (the zero address, Borro's own contracts, another receiving address). Simulated from the wallet; nothing is sent.
DiscoveredAn unsigned transaction to sweep the USDG waiting at a receiving address into bUSDG for its owner now (making the address too, if it is not made yet). Borro's keeper sweeps on its own (about every five minutes once 1 USDG waits); this is for sooner. Any wallet may send it; the shares go to the owner. owner defaults to wallet. Simulated from the wallet; nothing is sent.
DiscoveredAn unsigned transaction for the owner to take what waits at its receiving address out to its own wallet: USDG as USDG before it is swept (token USDG, the default), or ETH or another ERC-20 token sent there by mistake (token ETH, or the token's address). amount is a decimal string, or "all" (the default) for whatever is there when it lands. USDG already swept is the wallet's bUSDG: redeem it from the vault with withdraw. Simulated from the wallet; nothing is sent.
DiscoveredPolicy credit: an agent's borrowing terms follow the record of the code it runs (its policy: the content hash of code, model and prompt), across every wallet that claims it. Pass policy (a hash) for its ledger entry, or wallet for its claim and that policy's entry: the tier (newborn, proven or established, from the lines, repayments, liquidations and bad debt of every wallet that claims it), the earned default daily limit by rung, and the honest limits of each rung. Rung 0: a signature from the wallet ("I run policy H"), checked by nobody, defaults up to 250 USDG a day. Rung 1: a hardware attestation (a dstack TEE quote) that the wallet's key lives in an enclave running image H, verified off chain by Borro's keeper, which attests on chain; the raw quote is public, so anyone can re-verify; up to 500. Rung 2: a zk proof per action (SP1) that the action is what program H outputs on committed inputs, checked by the SP1 verifier contract at the registry; up to 1,000. Honest limits: rung 0 proves nothing (a lying wallet poisons the policy it claimed, and the policy's owner can disown it); rung 1 trusts the chip maker and the enclave operator, and Borro's keeper is the on-chain attester (the quote itself is published, so the keeper cannot invent one); rung 2 serves policies that are pure functions over Borro's public inputs, which no LLM-driven agent is; nothing proves which weights a closed model used. Reads Borro's ledger (https://borro.markets/policies.json), then the registry on chain.
DiscoveredAn unsigned transaction for an agent wallet to claim the policy it runs (rung 0: the signature is the evidence; a wallet has at most one claim, and claiming again replaces it). Once claimed, the wallet's credit lines open with the policy's earned default daily limit for its rung when they have a gas station or bill pay, and its record feeds the policy's. The answer's next_steps say how to reach rung 1 (PUT /policies/quote with JSON { wallet (0x address), quote (hex: the raw TDX quote), event_log (the dstack event log, an array or its JSON text), key_chain (an object: the dstack KMS key chain binding the wallet's key to the app), signature (hex: an EIP-191 signature by wallet over the bytes "borro-policy-quote" ++ keccak256(quote)) }, at most 256 KB, no key; Borro's keeper verifies it and attests on chain) and rung 2 (SP1 proofs per action through policy_prove). Rung 0: a signature from the wallet ("I run policy H"), checked by nobody, defaults up to 250 USDG a day. Rung 1: a hardware attestation (a dstack TEE quote) that the wallet's key lives in an enclave running image H, verified off chain by Borro's keeper, which attests on chain; the raw quote is public, so anyone can re-verify; up to 500. Rung 2: a zk proof per action (SP1) that the action is what program H outputs on committed inputs, checked by the SP1 verifier contract at the registry; up to 1,000. Honest limits: rung 0 proves nothing (a lying wallet poisons the policy it claimed, and the policy's owner can disown it); rung 1 trusts the chip maker and the enclave operator, and Borro's keeper is the on-chain attester (the quote itself is published, so the keeper cannot invent one); rung 2 serves policies that are pure functions over Borro's public inputs, which no LLM-driven agent is; nothing proves which weights a closed model used. Simulated from the wallet; nothing is sent.
DiscoveredAn unsigned transaction that submits a zk proof (SP1) that a wallet's action is what its policy outputs on committed inputs: prove(policy, publicValues, proof), with the bytes the SP1 guest and prover produced (zk/policy-runner). publicValues is 128 bytes, ABI-encoded (address wallet, bytes32 inputsHash, bytes32 actionHash, uint64 at); the wallet in it must have claimed the policy. Anyone may send it (the agent, its owner, a relayer); the registry checks the proof through the SP1 verifier with the policy's vkey and sets the wallet's rung to 2. Rung 0: a signature from the wallet ("I run policy H"), checked by nobody, defaults up to 250 USDG a day. Rung 1: a hardware attestation (a dstack TEE quote) that the wallet's key lives in an enclave running image H, verified off chain by Borro's keeper, which attests on chain; the raw quote is public, so anyone can re-verify; up to 500. Rung 2: a zk proof per action (SP1) that the action is what program H outputs on committed inputs, checked by the SP1 verifier contract at the registry; up to 1,000. rung 2 serves policies that are pure functions over Borro's public inputs, which no LLM-driven agent is; nothing proves which weights a closed model used. Simulated from the wallet; nothing is sent.
DiscoveredAn unsigned transaction to register a policy in the PolicyRegistry from its owner's wallet: manifest_hash (keccak256 of the manifest's bytes at uri), the manifest's https uri, and the model, prompt, image (the enclave's compose hash, for rung 1) and verification-key (SP1, for rung 2) hashes lenders read without the manifest; the zero hash for an image or vkey the policy has none of. The policy's id is keccak256(abi.encode(owner, manifest_hash)), returned here before the transaction is sent. The owner can later update the uri, transfer the policy, disown a wallet that claims it without running it, and pardon one it disowned. The registry holds no money. Rung 0: a signature from the wallet ("I run policy H"), checked by nobody, defaults up to 250 USDG a day. Rung 1: a hardware attestation (a dstack TEE quote) that the wallet's key lives in an enclave running image H, verified off chain by Borro's keeper, which attests on chain; the raw quote is public, so anyone can re-verify; up to 500. Rung 2: a zk proof per action (SP1) that the action is what program H outputs on committed inputs, checked by the SP1 verifier contract at the registry; up to 1,000. Simulated from the wallet; nothing is sent.
DiscoveredEverything a wallet has on Borro: stock lent, shorts (owed, money held, the price it is closed for you at, and parts: how much of the stock's one short is the wallet's own, a pair's and a basket leg's), USDG loans, USDG lent, open pairs (each with short_now, its own part of the short), gap covers bought and its part of the gap cover pool, options held, written and on order (with what to do next and one yearly number for premiums over what they locked), bear coins it launched, $BORRO to claim, its locker rebates (the share of Borro's fees it gets back for its $BORRO lock, what is owed and what has been paid), and its ETH and USDG.
DiscoveredUnsigned transactions to post a bid for a series at a premium a share: the premium for all the shares is locked now in USDG (exact approval, then postBid) and goes to the writer who fills it, less Borro's share; the option tokens come to this wallet. cancel_order takes it back while it is open.
DiscoveredFor each stock token on Borro: the stock's own price (its Chainlink feed while the market is open; Borro's weekend estimate and 95% band while it is shut), the token's executable buy and sell price on chain for $1,000 and $10,000 (what Borro's short desk would pay or get through its own swap route, before Borro's fee), and the gap in percent (gapPct: the token's mid against the stock). Positive: the token trades over the stock (short it on Borro); negative: under it (buy and lend it). Refreshed every 30 seconds; the same as https://borro.markets/prices.json.
DiscoveredUnsigned transaction giving a writer back the lock of a settled series less what its written options pay, once: stock vault shares for a call, Steakhouse USDG vault shares for a put.
DiscoveredUnsigned transactions to repay USDG borrowed against a stock (part, or all with all: true).
DiscoveredBorro's house rules, limits, what can go wrong, and every contract address with what it does, to verify on chain.
DiscoveredUnsigned transaction settling a cover with the feed's first round at or after its reopen (found by walking back from the latest round), with what it pays the buyer. Anyone may send it; the payout always goes to the buyer. When that first print came more than two hours after the reopen, or more than 50% from the reference, or never came in seven days, the transaction voids the cover instead (the premium the pool kept goes back).
DiscoveredUnsigned transaction settling a series after its Friday 8pm New York expiry with the feed's last round at or before it, found by walking back from the latest round, once the proof holds (the next round printed after expiry, or it is the feed's latest); when the feed printed nothing in the two days before expiry, with its first round after. Gives the settlement price and what it pays a share. Fourteen days after expiry with no round to prove a price it builds void(id) instead. Anyone may send either.
DiscoveredUnsigned transactions to lend a stock to shorters (it earns lending fees) or USDG in the Borro USDG vault (it earns interest). With post: true, a stock is lent and posted in one step so USDG can be borrowed against it.
DiscoveredBorro-wide recent shorts opened and closed, newest first.
DiscoveredUnsigned transaction cancelling a live trigger on the trade account: the owner cancels any, the agent the ones it set. Simulated from the wallet.
DiscoveredFor executor agents: the triggers that hold right now by the account's own check (on one account, read on chain; or across every trade account as Borro's keeper publishes them at /triggers.json each minute while the market is open, with the few simulated here checked on chain again), each with the unsigned fire transaction from the wallet, simulated from it, and the tip it pays in USDG. Anyone may fire a trigger whose condition holds and is paid its tip: 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) (the account's own agent firing earns nothing: its tip goes to the owner). The close goes through the account at the feed's price within the trigger's slip, the rest stays in the account, and nothing else moves. A trigger whose close would fail (slip, the pool, a paused desk) reverts and stays live. Its bound starts at 50 basis points past the feed until the trigger is armed, then widens: when it is not armed yet, the arm transaction (anyone may send it) comes before the fire, and bound says whether the pool's fill fits the bound now or from when. Send a fire with a gas limit of 3,000,000. 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. With account and id: that one trigger, refused in words when it does not hold. When none holds: the nearest ones and how far they are. Borro's keeper fires them too, by its own rules: Borro's keeper charges all its work on a trigger (screens, checks and simulations, 1 unit each; arms and resets, 5) to the trigger's root owner until the trigger fires, when it is given back. Owners go in this order: owners with a fire on record (a fire Borro's keeper itself sent for them and was paid for, its tip at least the fire's gas, in the last 30 days; fires by the account's own owner or agent, by other executors, or with no tip never count), then the least such work today, then the oldest trade account. Each fire on record also allows its owner one reserved arm or reset. An owner past 200 units a UTC day gets no more unpaid or subsidised keeper work that day (triggers on the low-tip allowance, arms, resets); a trigger whose tip covers its gas is never held back by it. A trigger whose tip does not cover its gas is fired by Borro's keeper from its root owner's low-tip allowance alone (0.0001 ETH of gas a UTC day, at most 40 root owners a day, in that owner order); any executor may fire it sooner for its tip.
DiscoveredThe live triggers on a trade account (account, or the wallet's own): each with its condition in words, the stock's price now and how far it is from firing (in dollars and percent; a guard's LTV now and about where the price takes it to its LTV), whether it holds now (the account's own check) and why not, who set it, its slip, tip and expiry, and the fire transaction anyone may send once it holds. 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.
DiscoveredUnsigned transaction leaving an order on a position in the trade account, which anyone may execute once the price feed confirms it, for a tip. kind stop (stop-loss: a short's fires at or above price, a long's at or below), take (take-profit: the other way) or guard (liquidation guard: fires when the position's LTV, Morpho's own at the market's oracle, reaches ltv and closes just enough to bring it down to target; target under ltv under the position's LLTV). A stop or take closes percent of the position (default 100). slip_bps: the most the close may come in worse than the feed's price once the trigger is armed and its bound has widened (100 to 300, default 100; the agent's at most its own limit). tip_bps: the executor's tip, 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) (default: the smallest that covers a fire's gas at today's gas and ETH prices, at least 10 from the owner; the agent's at most its max tip, 0 unless the owner set one). The answer says who will fire it: Borro's keeper fires a trigger whose tip covers its fire's gas (taken as 1,100,000 gas until the keeper screens the fire). A trigger whose tip does not cover its fire's gas (a zero tip included, any kind; an agent's trigger pays no tip past its daily loss budget until 00:00 UTC) is fired by Borro's keeper from its root owner's low-tip allowance alone: 0.0001 ETH of gas a UTC day (a few fires), its owner's alone. At most 40 root owners hold one a UTC day, by spending from it: a free one goes to a trigger that is ready and about to be fired, and to no other, in the keeper's owner order (a fire on record, then the least keeper work today, then the oldest trade account) and while its owner is under 200 units of keeper work that day, so the owners whose triggers fire earliest may take all 40 that day. Past it, the trigger is left to other executors. A close under $5 (dust) is left to other executors whatever the tip. Borro's keeper charges all its work on a trigger (screens, checks and simulations, 1 unit each; arms and resets, 5) to the trigger's root owner until the trigger fires, when it is given back. Owners go in this order: owners with a fire on record (a fire Borro's keeper itself sent for them and was paid for, its tip at least the fire's gas, in the last 30 days; fires by the account's own owner or agent, by other executors, or with no tip never count), then the least such work today, then the oldest trade account. Each fire on record also allows its owner one reserved arm or reset. An owner past 200 units a UTC day gets no more unpaid or subsidised keeper work that day (triggers on the low-tip allowance, arms, resets); a trigger whose tip covers its gas is never held back by it. Refused in words when its condition already holds (AlreadyMet) or when the pool cannot close its size within its slip at the price now (NeverFills, quoted at the pool); from the agent, also while its daily loss budget is 0 or today's loss has reached it (OverLossBudget, until 00:00 UTC). An agent-set trigger's tip to an outside executor is paid up to what is left of that budget at the fire and no more (the answer gives what is left now, and who fires it with that cap). expiry_seconds: 0 or left out is good until cancelled. At most 16 live triggers an account; each fires once, then is gone, and a position's triggers go when it closes. 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. Shows the price now and how far it is from the trigger, and warns when it would fire at once. Simulated from the wallet (the owner or the agent).
DiscoveredWhile the stock market is shut (Friday 8pm to Sunday 8pm New York, and holidays) the price feeds stop at their last print. For each stock: the paused price, Borro's weekend price and 95% band (low, high), its typical Monday gap and the last closures' gaps, and the gap cover quotes per side and strike. Also the market clock (closed since, reopens at) and the gap cover pool: what is in it, free and set aside, Borro's share, and one yearly number for what the pool earned. Nothing on chain reads the weekend price.
DiscoveredUnsigned transaction to take back lent stock or USDG (part, or all with all: true). Stock on loan to shorters comes back once it is returned.
DiscoveredRecent measurements
| Checked | Result | Response | Tools |
|---|---|---|---|
| Connected | 124 ms | 102 |