Tools: Write
Airdrops, transfers, swaps, and bridges (policy-gated signing).
Write tools can trigger:
- policy evaluation
- user confirmation via MCP elicitation (depending on policy and USD value)
- local signing and broadcast
See also:
request_airdrop
Requests a Solana airdrop on devnet, testnet, or local validators. Blocked on mainnet-beta.
Parameters
Prop
Type
Response
{
"signature": "5UfD...txid",
"amount": "1",
"amount_units": "ui"
}Examples
{
"wallet": "my-wallet",
"account_index": 0,
"amount": "1",
"amount_units": "ui"
}Notes
- Only available on devnet, testnet, and local validators.
- If
addressis omitted, Seashail uses the wallet's Solana address for the selected account. - Rate limits may apply depending on the validator/faucet.
send_transaction
Transfers native tokens or fungible tokens (SPL on Solana; ERC-20 on EVM). Requires policy approval.
Parameters
Prop
Type
Per-Chain Behavior
- Supports native SOL and SPL tokens - For SPL sends, Seashail creates the
recipient's Associated Token Account (ATA) if it does not exist - Token
identifier: SPL mint pubkey or
"native"- Amount units:"ui"= SOL or token units,"base"= lamports or raw base units
- Supports native ETH/MATIC/BNB/AVAX/etc and ERC-20 tokens - Token
identifier: ERC-20 contract address or
"native"- Amount units:"ui"= token units (e.g. ETH),"base"= wei or raw base units - Scam-address blocklist may block recipients when configured
Response
{
"signature": "5UfD...txid",
"chain": "solana",
"to": "11111111111111111111111111111111",
"token": "native",
"amount": "0.01",
"amount_units": "ui",
"status": "confirmed"
}Examples
{
"chain": "solana",
"to": "11111111111111111111111111111111",
"token": "native",
"amount": "0.01",
"amount_units": "ui"
}{
"chain": "solana",
"to": "11111111111111111111111111111111",
"token": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"amount": "5",
"amount_units": "ui"
}{
"chain": "base",
"to": "0xRecipientAddress",
"token": "native",
"amount": "0.001",
"amount_units": "ui"
}{
"chain": "base",
"to": "0xRecipientAddress",
"token": "0xTokenContractAddress",
"amount": "10",
"amount_units": "ui"
}Notes
- Requires policy approval — transactions may be auto-approved, require confirmation, or be blocked depending on your policy configuration and USD value.
- Seashail may block recipients if a scam-address blocklist is configured.
- For SPL sends on Solana, Seashail automatically creates the recipient's Associated Token Account if needed.
- The
walletandaccount_indexfields are optional — if omitted, Seashail uses the currently active wallet and account.
swap_tokens
Executes a token swap via an on-chain DEX aggregator. Requires policy approval.
Parameters
Prop
Type
Per-Chain Behavior
- Default provider for Solana (
provider="auto"resolves to Jupiter) - Token identifiers: SPL mint pubkeys or"native"- Jupiter handles routing automatically across multiple liquidity sources - No ERC-20 approval step needed (Solana uses token accounts)
- Default provider for EVM chains (
provider="auto"resolves to Uniswap) - Token identifiers: ERC-20 contract addresses or"native"- May require an ERC-20 allowance/approval transaction first — Seashail handles this automatically - Available on all configured EVM chains (Ethereum, Base, Arbitrum, Optimism, Polygon, BNB, Avalanche)
- Optional provider — requires API key configuration (check
get_capabilities.services) - Token identifiers: ERC-20 contract addresses or"native"- Setproviderto"1inch"explicitly to use this provider - May offer better pricing via aggregation across more liquidity sources
Response
{
"signature": "5UfD...txid",
"chain": "solana",
"token_in": "native",
"token_out": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"amount_in": "0.05",
"amount_out": "8.234",
"provider": "jupiter",
"status": "confirmed"
}Examples
{
"chain": "solana",
"token_in": "native",
"token_out": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"amount_in": "0.05",
"amount_units": "ui",
"slippage_bps": 100,
"provider": "auto"
}{
"chain": "base",
"token_in": "native",
"token_out": "0xTokenContractAddress",
"amount_in": "0.01",
"amount_units": "ui",
"slippage_bps": 100,
"provider": "uniswap"
}{
"chain": "base",
"token_in": "0xTokenInAddress",
"token_out": "0xTokenOutAddress",
"amount_in": "100",
"slippage_bps": 50,
"provider": "1inch"
}Notes
provider="auto"selects Jupiter for Solana and Uniswap for EVM chains.- Some providers require additional configuration — check
get_capabilities.servicesto verify availability. - EVM swaps may involve an allowance/approval transaction for ERC-20 inputs. Seashail handles this automatically before executing the swap.
slippage_bpsrange is 0–5000 (0% to 50%). The default of 100 means 1% maximum slippage.
bridge_tokens
Bridge tokens cross-chain. When to_chain, token, and amount are provided, Seashail executes a native Wormhole token bridge on EVM and Solana (or LayerZero OFT v1 on EVM). Otherwise, it falls back to executing a supplied transaction envelope. Requires policy approval.
Parameters
Core parameters:
Prop
Type
Wormhole-specific parameters:
Prop
Type
LayerZero-specific parameters:
Prop
Type
Policy parameters:
Prop
Type
Transaction envelope fallback (EVM):
Prop
Type
Transaction envelope fallback (Solana):
Prop
Type
Adapter parameters:
Prop
Type
Per-Chain Behavior
chain:"solana",to_chain: EVM chain name (e.g."base","ethereum") -token: SPL mint pubkey of the token to bridge - Seashail handles the Wormhole transfer and optional auto-redeem on the destination chain -recipientdefaults to the same wallet's EVM address on the destination chain - Auto-redeem (redeem=true) requires the destination chain wallet to have gas for the redeem transaction
chain: EVM chain name (e.g."base"),to_chain:"solana"-token: ERC-20 contract address of the token to bridge -recipient: Solana owner pubkey — Seashail derives the ATA for the wrapped mint automatically - Optionalrecipient_token_accountoverride for exact destination SPL token account - May require an ERC-20 approval transaction first — Seashail handles this automatically
chain: source EVM chain,to_chain: destination EVM chain -token: ERC-20 contract address on the source chain -recipientdefaults to the same wallet's address on the destination chain - May require an ERC-20 approval transaction first — Seashail handles this automatically
Response
{
"signature": "0xabc...txhash",
"chain": "base",
"to_chain": "solana",
"token": "0xUSDCContractAddress",
"amount": "100",
"bridge_provider": "wormhole",
"bridge_id": "0xabc...txhash",
"status": "submitted"
}The bridge_id can be used with get_bridge_status to check progress.
Examples
{
"chain": "solana",
"to_chain": "base",
"token": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"amount": "50",
"amount_units": "ui",
"bridge_provider": "wormhole",
"redeem": true
}{
"chain": "base",
"to_chain": "solana",
"token": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
"amount": "100",
"amount_units": "ui",
"bridge_provider": "wormhole",
"recipient": "YourSolanaOwnerPubkey",
"redeem": true
}After initiating a bridge, check status with get_bridge_status:
{
"bridge_id": "0xabc...txhash",
"bridge_provider": "wormhole"
}Notes
- Native path requires all three:
to_chain,token, andamountmust all be provided for Seashail to execute a native Wormhole/LayerZero bridge. If any are missing, Seashail falls back to the transaction envelope mode. amount=maxis NOT supported for the Wormhole native path.redeem=true(default) attempts auto-redeem on the destination chain. This requires the destination wallet to have gas (ETH for EVM destinations, SOL for Solana destinations).bridge_providerdefaults to"wormhole". LayerZero ("layerzero") is also supported for OFT v1 tokens on EVM chains.- Policy: Bridging must be enabled in your policy configuration (
enable_bridgefield). - Status tracking: Use
get_bridge_statuswith the transaction signature asbridge_idto monitor bridge progress, VAA availability, and redemption status.