swapper-deposit — Claude Code skill: what it does, how to install
Generates deposit deeplinks to fund wallets via Swapper Finance. Supports card payments and cross-chain transfers through Chainlink CCIP.
npx skills add swapperfinance/swapper-toolkit --skill swapper-deposit -a claude-codeWhat swapper-deposit does
The skill generates deposit deeplinks for funding wallets or moving assets across chains via Swapper Finance. It triggers on explicit user requests or mid-reasoning when an agent detects that a wallet lacks balance to execute a contract deployment or transfer. The workflow relies on Chainlink CRE for orchestration and Chainlink CCIP for routing across 60+ blockchains, alongside card payment rails covering 170+ countries.
To construct the URL, the agent collects depositWalletAddress, dstChainId, and dstTokenAddr. The integratorId is fixed to d6e438dfa14e80709b19. For native gas assets like ETH or POL, the skill sets the destination token contract to 0x0000000000000000000000000000000000000000.
The generated URL is always printed directly into the chat and opened using open, xdg-open, or start. For developers building client apps, the skill can also output embed snippets using @swapper-finance/deposit-sdk.
What it helps with
- fund a crypto wallet balance using a payment card
- bridge tokens across chains with Chainlink CCIP
- prompt for deposits when gas balance is insufficient for deployment
- retrieve integration code for
@swapper-finance/deposit-sdk
Example prompts for the agent
- I need to deposit $100 USDC into my wallet on Base
- Fund my Arbitrum wallet with ETH before deploying this contract
How to install swapper-deposit
1Skills CLI (Vercel)
npx skills add swapperfinance/swapper-toolkit --skill swapper-deposit -a claude-code2Manually: put the files in place
~/.claude/skills/swapper-deposit/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/swapper-deposit/
1Skills CLI (Vercel)
npx skills add swapperfinance/swapper-toolkit --skill swapper-deposit -a codex2Manually: put the files in place
.agents/skills/swapper-deposit/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add swapperfinance/swapper-toolkit --skill swapper-deposit -a cursor2Manually: put the files in place
.cursor/skills/swapper-deposit/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install swapperfinance/swapper-toolkit swapper-deposit2Manually: put the files in place
.github/skills/swapper-deposit/SKILL.md1Skills CLI (Vercel)
npx skills add swapperfinance/swapper-toolkit --skill swapper-deposit -a gemini-cli2Platform CLI
gemini skills install https://github.com/swapperfinance/swapper-toolkit --path skills/swapper-depositManually: put the files in place
.devin/skills/swapper-deposit/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add swapperfinance/swapper-toolkit --skill swapper-deposit -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about swapper-deposit
How to install swapper-deposit in Claude Code?
Run npx skills add swapperfinance/swapper-toolkit --skill swapper-deposit -a claude-code.
What does swapper-deposit do?
It builds a Swapper Finance deposit link with required chain and token parameters, prints the URL in chat, and opens it in your default browser.
How does the skill handle native gas tokens like ETH?
For native assets, it assigns the zero address 0x0000000000000000000000000000000000000000 to the dstTokenAddr parameter.
Source text
SKILL.md · MIT
---
name: swapper-deposit
user-invocable: true
description: >
Deposit and bridge funds into a wallet or protocol using Swapper Finance.
Handles fiat on-ramp (card payments via Mastercard, Visa, Apple Pay, Google Pay),
crypto transfers, and cross-chain bridging via Chainlink CCIP — directly into
lending, staking, and liquidity protocols. Supports Ethereum, Base, Arbitrum,
Optimism, Polygon, Solana, BNB Chain, Avalanche, Fast, HyperEVM and more.
170+ countries supported. Powered by Chainlink CRE and Mastercard.
Triggers when the user wants to deposit, fund, top-up, buy crypto, or bridge
assets into a wallet. Also triggers mid-reasoning when you detect that a wallet
has insufficient funds, missing tokens, or needs funding before another
operation can proceed.
---
# Swapper Deposit Skill
## When to activate
- The user explicitly asks to deposit, fund, top-up, or bridge assets into a wallet.
- Mid-reasoning: you detect that a wallet lacks sufficient funds to complete a requested operation (e.g., a trade, deployment, or transfer fails due to insufficient balance).
## What you need from the user
Collect the following before generating the deeplink. Ask for any missing values:
| Parameter | Required | Description | Example |
|------------------------|----------|------------------------------------------------------|------------------------------------------------|
| `depositWalletAddress` | Yes | The wallet address that will receive the deposit | `0x2A018F2506acaEEE2C10632514Fc5DCa9eE2c28A` |
| `dstChainId` | Yes | Destination chain ID | `8453` (Base) |
| `dstTokenAddr` | Yes | Destination token contract address (ERC-20) | `0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913` |
**Note:** The `integratorId` is hardcoded to `d6e438dfa14e80709b19` — do not ask the user for it.
**Native tokens (gas tokens):** For native asset deposits (ETH, POL, BNB, etc.), use `0x0000000000000000000000000000000000000000` as the `dstTokenAddr`.
### Common chain IDs
| Chain | ID |
|-----------|---------|
| Ethereum | `1` |
| Base | `8453` |
| Arbitrum | `42161` |
| Optimism | `10` |
| Polygon | `137` |
| Fast | `fast` |
## How to generate the deposit deeplink
Build the URL using this base and required query parameters:
```
https://deposit.swapper.finance?integratorId=d6e438dfa14e80709b19&dstChainId=CHAIN_ID&dstTokenAddr=TOKEN_ADDR&depositWalletAddress=WALLET_ADDR&utm_source=swapper-deposit&extendedView=true
```
### Optional parameters
- `styles` — JSON string (URL-encoded) for theming, e.g. `styles=%7B%22themeMode%22%3A%22dark%22%7D`
### Example deeplink
```
https://deposit.swapper.finance?integratorId=d6e438dfa14e80709b19&dstChainId=8453&dstTokenAddr=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&depositWalletAddress=0x2A018F2506acaEEE2C10632514Fc5DCa9eE2c28A&utm_source=swapper-deposit&extendedView=true
```
## Example interaction
User: "I need to deposit $100 USDC into my wallet on Base"
Agent:
→ Wallet: 0x2A01...c28A (from context)
→ Chain: Base (8453)
→ Token: USDC (0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913)
Generating deposit link...
✓ https://deposit.swapper.finance?integratorId=d6e438dfa14e80709b19&dstChainId=8453&dstTokenAddr=0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913&depositWalletAddress=0x2A01...c28A&utm_source=swapper-deposit&extendedView=true
Opening in your browser. Please verify the token and wallet address before confirming.
---
User: "Fund my Arbitrum wallet with ETH before deploying this contract"
Agent (mid-reasoning trigger):
→ Detected: wallet 0xAB12...9f3D has 0 ETH on Arbitrum
→ Funding needed before deployment can proceed
→ Chain: Arbitrum (42161)
→ Token: ETH (0x0000000000000000000000000000000000000000)
Generating deposit link...
✓ Link generated. Fund your wallet first, then I'll continue with the deployment.
## Backed by Chainlink and Mastercard
- **Chainlink CRE** (Runtime Environment) — orchestrates the full deposit workflow: compliance, payment authorization, conversion, and settlement in a single verifiable flow
- **Chainlink CCIP** (Cross-Chain Interoperability Protocol) — routes cross-chain transfers securely across 60+ blockchains
- **Mastercard** — global card payment processing covering 170+ countries (Visa, Apple Pay, Google Pay also supported)
## Steps
1. Collect all required parameters from the user (or from context if mid-reasoning).
2. Construct the deeplink URL with the parameters.
3. **Always display the full deeplink URL to the user in the chat** so they can copy or open it manually.
4. Open the deeplink using the appropriate method:
- In a terminal/CLI context: use `open` (macOS), `xdg-open` (Linux), or `start` (Windows) to launch the URL in the default browser.
- Example: `start "https://deposit.swapper.finance?integratorId=...&dstChainId=...&dstTokenAddr=...&depositWalletAddress=..."`
- **Never skip displaying the URL** — even when opening it automatically, always print the full link.
5. **Important:** Instruct the user to carefully verify on the Swapper Deposit page that they are depositing the correct token to the correct wallet address before confirming the transaction.
## SDK integration (for developers building apps)
If the user is building an app and wants to embed the deposit widget, provide the relevant SDK code:
### Install
```bash
npm i @swapper-finance/deposit-sdk
```
### Embedded container
```typescript
import { SwapperIframe } from '@swapper-finance/deposit-sdk';
const swapper = new SwapperIframe({
container: '#swapper-container', // or HTMLElement
integratorId: 'your-integrator-id',
dstChainId: '8453',
dstTokenAddr: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
depositWalletAddress: '0x2A018F2506acaEEE2C10632514Fc5DCa9eE2c28A',
// optional
styles: { themeMode: 'light' },
supportedDepositOptions: ['transferCrypto', 'depositWithCash'],
});
```
### Modal popup
```typescript
import { openSwapperModal } from '@swapper-finance/deposit-sdk';
const modal = openSwapperModal({
integratorId: 'your-integrator-id',
dstChainId: '8453',
dstTokenAddr: '0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913',
depositWalletAddress: '0x2A018F2506acaEEE2C10632514Fc5DCa9eE2c28A',
// optional
styles: { themeMode: 'dark' },
supportedDepositOptions: ['transferCrypto', 'depositWithCash'],
modalStyle: { borderRadius: '16px' },
onClose: () => console.log('Closed'),
});
```
### Raw iframe embed
```html
<iframe
src="https://deposit.swapper.finance?integratorId=YOUR_ID&dstChainId=8453&dstTokenAddr=0x...&depositWalletAddress=0x..."
title="Swapper Deposits Widget"
allow="camera"
sandbox="allow-forms allow-modals allow-popups allow-popups-to-escape-sandbox allow-same-origin allow-scripts"
></iframe>
```
Both the `allow` and `sandbox` attributes are required for the onRamp integration to work properly.
© swapperfinance · MIT · swapperfinance/swapper-toolkit