Documentation

Build with Hoodwire.

Quickstart

Hoodwire is one MCP server. Add it to your agent's config, fund your deposit wallet with USDG on Robinhood Chain, and every financial capability is available — no vendor SDKs, no per-protocol keys.

{
  "mcpServers": {
    "hoodwire": {
      "url": "https://mcp.hoodwire.xyz/mcp",
      "headers": { "Authorization": "Bearer <your key>" }
    }
  }
}

Then call any capability. Hoodwire runs the auction and returns one result:

> execute_swap(tokenOut: "tNVDA", amountUsdg: 2400)
// → uniswap-v3 · 0.14 USDG · 612ms ✓
// losing bid: pleiades @ 0.16 USDG

Capabilities

get_stock_price0.002 USDG · p50 96ms

Real-time Stock Token prices (tNVDA, tAAPL, tGOOGL…) via Chainlink feeds.

execute_swap0.10–0.17 USDG · p50 612ms

Swap on the best AMM — Uniswap v3 vs Pleiades, auctioned per request.

get_lending_rate0.02 USDG · p50 236ms

Supply/borrow APY for any lending market on the chain.

supply_collateral0.06–0.09 USDG · p50 784ms

Supply USDG or Stock Tokens as collateral, routed to the best market.

portfolio_snapshot0.005 USDG · p50 214ms

Positions, balances, and marks for the connected wallet.

bridge_quote0.01 USDG · p50 342ms

Bridge USDG between Robinhood Chain and Ethereum L1.

How routing works

Every call opens a <100ms auction across all registered vendors that support the capability. Bids are scored on three normalized axes — price (50%), latency (30%), and onchain reputation (20%). The winner executes; USDG settles onchain in 100ms blocks; the vendor's reputation updates with the real outcome. Round-trip p50 is 782ms.

Budget controls

Three controls protect your deposit: a daily spend limit (agent halts, resets UTC midnight — also enforced onchain by SettlementEscrow), an approval threshold (calls above it pause for human approval), and a low-balance alert (you get pinged, the agent keeps running). Withdraw the remaining balance anytime — no lock-up.

> hoodwire_set_budget(dailyLimitUsdg: 25, approvalThresholdUsdg: 0.5)

Register a vendor

Registration is permissionless: stake 500 USDG in the VendorRegistry, publish a quote endpoint, and your service enters the auction on the next block. Reputation starts at a neutral prior and is earned per settled call. Provably bad quotes are slashable.

registry.register(
  keccak256("your-vendor-id"),
  keccak256("https://quote.yourservice.xyz"),
  [keccak256("execute_swap")],
  500e6 // USDG stake
)