One wallet, two slots, kept liquid by policy.
The agent watches the BRL and USDC slots, keeps the operating float above its floor, and moves idle balance between them under one mandate the owner signed. No FX desk, no 2am scramble when a slot runs low.
Idle balance, rebalanced under the mandate.
The agent sees the BRL slot dip under its floor, moves idle balance from the USDC slot to refill it, and seals the move to the mandate. It never crosses a cap the owner did not set.
- Watches each slot against a floor you set
- Rebalances BRL and USDC under one signed mandate
- No FX desk in the loop, no manual sweep
- Every move sealed to the mandate that allowed it
The conversation is the easy part.
A payout float either sits idle or runs dry. Someone watches balances by hand and calls an FX desk to move money between currencies.
Watch balances and top up by hand
The agent keeps each slot above its floor automatically
Idle cash sits in the wrong slot
Idle balance rebalances between BRL and USDC on policy
Call an FX desk to move between currencies
The wallet holds both slots, no desk in the loop
Trust that a move stayed inside policy
Every rebalance is checked against the mandate
Treasury on autopilot, inside a mandate.
The agent runs the multi-slot wallet under one mandate the owner signed. BRL and USDC are slots of the same wallet, with Pix at the center. Each move is sealed so the whole float reconstructs end to end.
Balances across slots
Slot dips below its floor
codespar_payMandate cap, scope, expiry
MandateMove between BRL and USDC
Receipt to the mandate
The agent reads balances across the wallet slots, and when one dips below its policy floor codespar_pay verifies the mandate before moving idle balance between BRL and USDC. Each rebalance is hash-sealed to the mandate so the float reconstructs end to end.
A few lines. The whole loop.
const session = await codespar.sessions.create(); // keep the BRL slot above its floor, funded from the USDC slot const res = await session.execute("codespar_pay", { action: "rebalance", slot: "BRL", floor: 5000, // policy floor from the signed mandate }); await session.verificationStatus(res.toolCallId);
codespar_payMoves idle balance between wallet slots, inside the mandate.
Wallet (BRL + USDC)Holds both slots of the multi-rail wallet; Pix is the center.
Audit ledgerHash-seals every rebalance to the mandate that allowed it.
Ship it this afternoon.
Open the sandbox, point a session at your providers, and run the whole loop against real rails in minutes — not the quarter it takes to build it by hand.