Skills trails
install
source · Clone the upstream repo
git clone https://github.com/BankrBot/skills
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/BankrBot/skills "$T" && mkdir -p ~/.claude/skills && cp -r "$T/trails" ~/.claude/skills/bankrbot-skills-trails && rm -rf "$T"
manifest:
trails/SKILL.mdsource content
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
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)
- Get Bankr wallet address
- QuoteIntent -> CommitIntent -> submit depositTransaction via Bankr -> ExecuteIntent -> WaitIntentReceipt
See
references/trails.md Recipe 2.
When the user wants to deposit into a yield vault
- GetEarnPools to discover pool addresses and APYs
- Approve the pool contract via Bankr submit()
- 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 | | Get quote + depositTransaction for a swap/bridge |
| Lock the intent, receive intentId | |
| Notify Trails the deposit tx is mined | |
| Poll until intent is complete | |
| Intent management | | Look up intent by ID |
| Get final receipt | |
| List intents by owner/status | |
| Paginated history | |
| Cancel a pending intent | |
| Discovery | | Active yield pools with APY, TVL, depositAddress |
| Supported chains | |
| Tokens per chain | |
| USD prices | |
| Preview routes for exact-in | |
| Preview routes for exact-out | |
| Reference | | Fiat conversion |
| Contract addresses per chain | |
| Utility | / / | Health + server time |
Key Notes
is in base units (e.g.originTokenAmount
= 10 USDC with 6 decimals)10000000- Use
for native token addresses"0x000...000"
must be imported fromsubmit
(not re-exported from main entry)@bankr/cli/dist/lib/api.js- Add
to QuoteIntent to send output to a different wallet than the payer"destinationToAddress"