Seashail

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 address is 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 wallet and account_index fields 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" - Set provider to "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.services to verify availability.
  • EVM swaps may involve an allowance/approval transaction for ERC-20 inputs. Seashail handles this automatically before executing the swap.
  • slippage_bps range 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 - recipient defaults 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 - Optional recipient_token_account override 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 - recipient defaults 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, and amount must 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=max is 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_provider defaults to "wormhole". LayerZero ("layerzero") is also supported for OFT v1 tokens on EVM chains.
  • Policy: Bridging must be enabled in your policy configuration (enable_bridge field).
  • Status tracking: Use get_bridge_status with the transaction signature as bridge_id to monitor bridge progress, VAA availability, and redemption status.

On this page