Agent Skills: Trails

Trails — Cross-chain swap, bridge, and DeFi orchestration via Sequence. Use when an agent wants to swap tokens across chains, bridge assets, fund a Bankr wallet from any chain, deposit into yield vaults (Aave, Morpho), get token prices, discover earn pools, or quote cross-chain routes. Integrates with Bankr submit() for on-chain execution. Also use when asked about Trails, Sequence swaps, cross-chain bridging, or DeFi yield deposits.

UncategorizedID: bankrbot/clawdbot-skill/trails

Install this agent skill to your local

pnpm dlx add-skill https://github.com/BankrBot/skills/tree/HEAD/trails

Skill Files

Browse the full folder contents for trails.

Download Skill

Loading file tree…

trails/SKILL.md

name: trails description: Trails — Cross-chain swap, bridge, and DeFi orchestration via Sequence. Use when an agent wants to swap tokens across chains, bridge assets, fund a Bankr wallet from any chain, deposit into yield vaults (Aave, Morpho), get token prices, discover earn pools, or quote cross-chain routes. Integrates with Bankr submit() for on-chain execution. Also use when asked about Trails, Sequence swaps, cross-chain bridging, or DeFi yield deposits.

Trails

Cross-chain swap, bridge, and DeFi orchestration powered by Sequence. Agents specify the action — Trails automatically determines the optimal multi-step path across chains.

API Base: https://trails-api.sequence.app/rpc/Trails/<MethodName> Auth Header: X-Access-Key: $TRAILS_API Widget: https://demo.trails.build/ Bankr Integration: submit() from @bankr/cli broadcasts on-chain transactions

Environment Variables

export TRAILS_API=<your-sequence-project-access-key>   # from https://sequence.build
export BANKR_API_KEY=<your-bankr-key>                  # from bankr.bot/api-keys

Quick Start

Get a swap quote (USDC on Polygon -> ETH on Base)

BANKR_WALLET=$(curl -s https://api.bankr.bot/agent/me \
  -H "X-API-Key: $BANKR_API_KEY" \
  | jq -r '.wallets[] | select(.chain == "evm") | .address')

curl -s https://trails-api.sequence.app/rpc/Trails/QuoteIntent \
  -H "Content-Type: application/json" \
  -H "X-Access-Key: $TRAILS_API" \
  -d "{
    \"ownerAddress\": \"$BANKR_WALLET\",
    \"originChainId\": 137,
    \"originTokenAddress\": \"0x3c499c542cef5e3811e1192ce70d8cC03d5c3359\",
    \"originTokenAmount\": \"10000000\",
    \"destinationChainId\": 8453,
    \"destinationTokenAddress\": \"0x0000000000000000000000000000000000000000\",
    \"destinationTokenAmount\": \"0\",
    \"tradeType\": \"EXACT_INPUT\",
    \"options\": { \"slippageTolerance\": 0.005 }
  }" | jq '.intent.quote'

Discover yield pools

curl -s https://trails-api.sequence.app/rpc/Trails/GetEarnPools \
  -H "Content-Type: application/json" \
  -H "X-Access-Key: $TRAILS_API" \
  -d '{"chainIds": [137]}' \
  | jq '[.pools[] | select(.isActive and .token.symbol == "USDC")] | sort_by(-.tvl) | .[0]'

Task Guide

When the user wants to fund a Bankr wallet

Use the Trails widget URL with the Bankr wallet address as toAddress. See references/trails.md Recipe 1.

When the user wants to swap tokens (same-chain or cross-chain)

  1. Get Bankr wallet address
  2. QuoteIntent -> CommitIntent -> submit depositTransaction via Bankr -> ExecuteIntent -> WaitIntentReceipt

See references/trails.md Recipe 2.

When the user wants to deposit into a yield vault

  1. GetEarnPools to discover pool addresses and APYs
  2. Approve the pool contract via Bankr submit()
  3. Deposit via Bankr submit()

See references/trails.md Recipe 3.

When the user asks about supported tokens or chains

Use GetTokenList (body: {"chainIds": [137]}) or GetChains.

When the user asks about token prices

Use GetTokenPrices.

API Methods

| Group | Method | Description | | --------------------- | ---------------------------------- | ------------------------------------------------ | | Intent lifecycle | QuoteIntent | Get quote + depositTransaction for a swap/bridge | | | CommitIntent | Lock the intent, receive intentId | | | ExecuteIntent | Notify Trails the deposit tx is mined | | | WaitIntentReceipt | Poll until intent is complete | | Intent management | GetIntent | Look up intent by ID | | | GetIntentReceipt | Get final receipt | | | SearchIntents | List intents by owner/status | | | GetIntentHistory | Paginated history | | | AbortIntent | Cancel a pending intent | | Discovery | GetEarnPools | Active yield pools with APY, TVL, depositAddress | | | GetChains | Supported chains | | | GetTokenList | Tokens per chain | | | GetTokenPrices | USD prices | | | GetExactInputRoutes | Preview routes for exact-in | | | GetExactOutputRoutes | Preview routes for exact-out | | Reference | GetExchangeRate | Fiat conversion | | | GetTrailsContracts | Contract addresses per chain | | Utility | Ping / RuntimeStatus / Clock | Health + server time |

Key Notes

  • originTokenAmount is in base units (e.g. 10000000 = 10 USDC with 6 decimals)
  • Use "0x000...000" for native token addresses
  • submit must be imported from @bankr/cli/dist/lib/api.js (not re-exported from main entry)
  • Add "destinationToAddress" to QuoteIntent to send output to a different wallet than the payer