Submit your signed intent (relayer pays the gas)
robyn_submitRelay an intent you already signed. The relayer broadcasts it and fronts all network gas; your account needs no native token. Build permit2 from robyn_prepare: sign its signRequest.eip712 payload (canonical Permit2 domain + PermitTransferFrom/TokenPermissions types) and pass the OBJECT below - not a bare signature string. The signed spender must be the relayer from signRequest.spender, otherwise the permit cannot be redeemed. Supply idempotencyKey so a retry after a timeout cannot double-spend. TO REHEARSE WITHOUT BROADCASTING set dryRun:true — it returns {status:"DRY", broadcast:false, wouldSend} and moves nothing, on EVERY corridor. Do NOT assume that omitting a live flag means dry: that holds on the float lane and the non-EVM legs, but the EVM-to-EVM path ignores it and BROADCASTS.
Tool call template
Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.
{
"id": 1,
"jsonrpc": "2.0",
"method": "tools/call",
"params": {
"arguments": {
"fromChain": "<fromChain>",
"toChain": "<toChain>",
"fromToken": "<fromToken>",
"toToken": "<toToken>",
"amount": "<amount>",
"toAddress": "<toAddress>",
"permit2": "<permit2>"
},
"name": "robyn_submit"
}
}Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| amount | Yes | ||
| dryRun | No | true = rehearse only: returns {status:"DRY", broadcast:false, wouldSend} and broadcasts NOTHING, on every corridor. Use this to preview before committing. | |
| permit2 | Yes | Permit2 SignatureTransfer object - NOT a bare signature string | |
| toChain | Yes | ||
| toToken | Yes | ||
| fromChain | Yes | ||
| fromToken | Yes | ||
| toAddress | Yes | ||
| idempotencyKey | No | any unique string; makes retries safe |