Choose the intent shape
For a plain swap, use an empty calls array. Do not add dummy calldata, a self-transfer, or
{ data: "0x" }. Placeholder calls change the request and can make the route unsupported.
Use target-chain token addresses in tokenRequests. Omit source constraints to route from the user’s available unified balance, or add constraints when the user selected an input chain or asset.
Request a token-only swap
This example requests 100 USDC on Arbitrum and restricts funding to WETH on Base:- Embedded wallet
- Custom signer
Use the initialized Embedded wallets use numeric chain IDs and
oneAuth client and authenticated accountAddress from Accounts. These fields are available in @rhinestone/1auth@0.10.1:tokenRequests[].token. sourceChainId applies the sourceAssets address to Base. Omit both source constraints to let the orchestrator choose across available mainnet balances. sendIntent() manages quote preparation and does not expose the custom signer SDK’s ranked prepared.quotes object.Sponsorship is required by default. Reuse the funding, review, and completion options from Send a transaction, and keep any returned intentId before retrying an uncertain submission.The embedded wallet SDK 0.10.1 requires an amount in each token request. It
does not expose the custom signer SDK’s exact-input and max-output request
shape. Use a fixed output amount or the custom signer SDK instead.
Trade and deposit
When the output feeds another action, include the actual calls and the matching token request in one intent. This example swaps WETH into 100 USDC on Base, approves the Steakhouse Prime USDC ERC-4626 vault, and deposits forshareRecipient:
- Embedded wallet
- Custom signer
Submit the shared calls with the embedded wallet’s field names: