GRIMOIRE · BRIDGING · ROUTING
Steward of the Door
Moves idle balances to where yield lives — accounting for bridge fee, latency, and destination depth.
What it does
The Steward is the cross-chain counterpart to the Wraith. Rather than rotating between venues on a single chain, it considers the full landscape — and decides whether the yield delta on another chain is worth the bridge cost and the time you lose in transit.
Strategy
- Read the best available yield on each permitted chain (delegating to the Wraith's survey on each).
- Subtract bridge fee, expected slippage, and an annualised opportunity cost for the transit window.
- If the net edge exceeds
minNetEdgeBpsand the destination supports staying for at leastminDestTtlHours, route the capital. - Otherwise hold, and emit a
skipwith the survey snapshot.
Parameters
| Parameter | Default | Meaning |
|---|---|---|
minNetEdgeBps | 40 | Required net edge after all bridge costs. |
maxBridgeFeeBps | 10 | Absolute cap on bridge fee for the move. |
minDestTtlHours | 24 | Minimum time the agent will commit to the destination chain. |
haltOnBridgeFailure | true | Halt if a bridge transaction reverts. |
Venues
- Across — fastest for canonical assets.
- CCTP — native USDC, no wrapped representation.
- deBridge — broader asset coverage.
Risks
Example intent
typescriptimport { defineIntent, USDC, BASE, OPTIMISM, ARBITRUM } from "@magicscodes/sdk";
import { stewardOfTheDoor } from "@magicscodes/spells";
export const yieldRouteIntent = defineIntent({
goal: "Hold USDC on the chain with the best yield, accounting for bridge cost",
budget: { asset: USDC, amount: 50_000n * 10n ** 6n },
bounds: {
chains: [BASE, OPTIMISM, ARBITRUM],
bridges: ["across", "cctp", "debridge"],
minNetEdgeBps: 40, // must beat current chain by this
maxBridgeFeeBps: 8,
minDestTtlHours: 24, // do not bridge for short stays
},
cadence: {
surveyEveryHours: 6,
notifyOn: ["bridge", "skip", "halt"],
},
agentHint: stewardOfTheDoor,
});