Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
alsk1992 avatar

Trading Evm

  • 17 installs
  • 610 repo stars
  • Updated June 26, 2026
  • alsk1992/cloddsbot

trading-evm is a skill that swaps tokens on EVM chains using Uniswap V3 and the 1inch aggregator.

About

This skill swaps tokens on EVM chains (Ethereum, Arbitrum, Optimism, Base, Polygon) through Uniswap V3 and the 1inch aggregator. It fetches quotes, compares routes between the two DEXes, checks balances, and executes swaps with slippage control and Flashbots MEV protection on Ethereum. A developer uses it to programmatically trade tokens across EVM chains from the clodds bot.

  • Swaps tokens on Ethereum, Arbitrum, Optimism, Base, and Polygon
  • Uses Uniswap V3 and the 1inch aggregator with route comparison
  • MEV protection via Flashbots on Ethereum

Trading Evm by the numbers

  • 17 all-time installs (skills.sh)
  • Ranked #731 of 1,106 Finance & Trading skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
At a glance

trading-evm capabilities & compatibility

Requires EVM_PRIVATE_KEY; ALCHEMY_API_KEY and ONEINCH_API_KEY optional. On-chain gas applies.

Capabilities
dex swap · quote fetching · route comparison · balance check
Use cases
trading
Runs
Runs locally
Pricing
Bring your own API key
From the docs

What trading-evm says it does

Trade any token on Ethereum, Arbitrum, Optimism, Base, and Polygon using Uniswap V3 and 1inch aggregator.
SKILL.md
Swap ETH → USDC on Ethereum with MEV protection
SKILL.md
npx skills add https://github.com/alsk1992/cloddsbot --skill trading-evm

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs17
repo stars610
Last updatedJune 26, 2026
Repositoryalsk1992/cloddsbot

What it does

Swap tokens across EVM chains via Uniswap V3 and 1inch with route comparison.

Who is it for?

Programmatic token swaps across Ethereum, Arbitrum, Optimism, Base, and Polygon.

Skip if: Trading on Solana, centralized exchanges, or prediction markets.

When should I use this skill?

You need to quote or execute an EVM DEX swap with route comparison.

What you get

Quoted and executed EVM DEX swaps with best-route selection and MEV protection.

  • DEX swap quotes
  • Executed swap transactions with hashes

By the numbers

  • 5 EVM chains supported
  • 2 DEX/aggregator integrations (Uniswap V3, 1inch)

Files

SKILL.mdMarkdownGitHub ↗

EVM DEX Trading - Complete API Reference

Trade any token on Ethereum, Arbitrum, Optimism, Base, and Polygon using Uniswap V3 and 1inch aggregator.

Required Environment Variables

EVM_PRIVATE_KEY=0x...                      # Your EVM wallet private key
ALCHEMY_API_KEY=...                        # Optional: for better RPC
ONEINCH_API_KEY=...                        # Optional: for 1inch API

---

Supported Chains

ChainChain IDDEXesMEV Protection
Ethereum1Uniswap V3, 1inchFlashbots Protect
Arbitrum42161Uniswap V3, 1inchSequencer
Optimism10Uniswap V3, 1inchSequencer
Base8453Uniswap V3, 1inchSequencer
Polygon137Uniswap V3, 1inchStandard

---

Chat Commands

Swaps

/swap eth <amount> <from> to <to>           # Swap on Ethereum
/swap arb <amount> <from> to <to>           # Swap on Arbitrum
/swap op <amount> <from> to <to>            # Swap on Optimism
/swap base <amount> <from> to <to>          # Swap on Base
/swap matic <amount> <from> to <to>         # Swap on Polygon

# Examples:
/swap eth 1 ETH to USDC                     # Swap 1 ETH to USDC on Ethereum
/swap arb 100 USDC to ARB                   # Swap 100 USDC to ARB on Arbitrum
/swap base 0.5 ETH to DEGEN                 # Swap 0.5 ETH to DEGEN on Base

Quotes

/quote eth <amount> <from> to <to>          # Get quote without executing
/quote arb 1 ETH to USDC                    # Quote on Arbitrum

Compare Routes

/compare <chain> <amount> <from> to <to>    # Compare Uniswap vs 1inch
/compare eth 1 ETH to USDC                  # Compare routes on Ethereum

Balances

/balance eth                                # Check ETH and token balances
/balance arb                                # Check Arbitrum balances
/balance base <token>                       # Check specific token on Base

---

TypeScript API Reference

Uniswap V3

import {
  executeUniswapSwap,
  getUniswapQuote,
  resolveToken,
  getTokenInfo,
  getEvmBalance
} from 'clodds/evm/uniswap';

// Get quote
const quote = await getUniswapQuote({
  chain: 'ethereum',
  tokenIn: 'ETH',
  tokenOut: 'USDC',
  amountIn: '1000000000000000000',  // 1 ETH in wei
  slippageTolerance: 0.5,
});

console.log(`Expected output: ${quote.amountOut}`);
console.log(`Price impact: ${quote.priceImpact}%`);
console.log(`Route: ${quote.route.join(' → ')}`);

// Execute swap
const result = await executeUniswapSwap({
  chain: 'ethereum',
  tokenIn: 'ETH',
  tokenOut: 'USDC',
  amountIn: '1000000000000000000',
  slippageTolerance: 0.5,
  deadline: 300,  // 5 minutes
});

console.log(`TX: ${result.transactionHash}`);
console.log(`Amount out: ${result.amountOut}`);

// Resolve token symbol to address
const usdcAddress = resolveToken('USDC', 'ethereum');

// Get token info
const tokenInfo = await getTokenInfo('ethereum', usdcAddress);
console.log(`${tokenInfo.symbol}: ${tokenInfo.decimals} decimals`);

// Check balance
const balance = await getEvmBalance('ethereum', walletAddress, 'USDC');

1inch Aggregator

import {
  executeOneInchSwap,
  getOneInchQuote,
  getOneInchProtocols,
  compareDexRoutes
} from 'clodds/evm/oneinch';

// Get quote from 1inch
const quote = await getOneInchQuote({
  chain: 'ethereum',
  fromToken: 'ETH',
  toToken: 'USDC',
  amount: '1000000000000000000',
});

console.log(`Expected output: ${quote.toAmount}`);
console.log(`Estimated gas: ${quote.estimatedGas}`);
console.log(`Protocols used: ${quote.protocols.join(', ')}`);

// Execute swap via 1inch
const result = await executeOneInchSwap({
  chain: 'ethereum',
  fromToken: 'ETH',
  toToken: 'USDC',
  amount: '1000000000000000000',
  slippage: 0.5,
});

// Get available protocols
const protocols = await getOneInchProtocols('ethereum');
// ['UNISWAP_V3', 'SUSHISWAP', 'CURVE', ...]

// Compare routes between Uniswap and 1inch
const comparison = await compareDexRoutes({
  chain: 'ethereum',
  tokenIn: 'ETH',
  tokenOut: 'USDC',
  amountIn: '1000000000000000000',
});

console.log(`Uniswap: ${comparison.uniswap.amountOut}`);
console.log(`1inch: ${comparison.oneinch.amountOut}`);
console.log(`Best: ${comparison.best}`);

---

Chain-Specific Examples

Ethereum

// Swap ETH → USDC on Ethereum with MEV protection
const result = await executeUniswapSwap({
  chain: 'ethereum',
  tokenIn: 'ETH',
  tokenOut: 'USDC',
  amountIn: '1000000000000000000',
  useMevProtection: true,  // Uses Flashbots
});

Arbitrum

// Swap on Arbitrum (lower gas)
const result = await executeOneInchSwap({
  chain: 'arbitrum',
  fromToken: 'ETH',
  toToken: 'ARB',
  amount: '500000000000000000',  // 0.5 ETH
  slippage: 1,
});

Base

// Swap on Base
const result = await executeUniswapSwap({
  chain: 'base',
  tokenIn: 'ETH',
  tokenOut: 'DEGEN',
  amountIn: '100000000000000000',  // 0.1 ETH
  slippageTolerance: 2,  // Higher slippage for meme coins
});

Optimism

// Swap on Optimism
const result = await executeOneInchSwap({
  chain: 'optimism',
  fromToken: 'USDC',
  toToken: 'OP',
  amount: '100000000',  // 100 USDC (6 decimals)
  slippage: 0.5,
});

Polygon

// Swap on Polygon
const result = await executeUniswapSwap({
  chain: 'polygon',
  tokenIn: 'MATIC',
  tokenOut: 'USDC',
  amountIn: '10000000000000000000',  // 10 MATIC
  slippageTolerance: 0.5,
});

---

Common Tokens

Ethereum

SymbolAddress
ETHNative
USDC0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48
USDT0xdAC17F958D2ee523a2206206994597C13D831ec7
WETH0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2
DAI0x6B175474E89094C44Da98b954EescdeCB5BE3830

Arbitrum

SymbolAddress
ETHNative
ARB0x912CE59144191C1204E64559FE8253a0e49E6548
USDC0xaf88d065e77c8cC2239327C5EDb3A432268e5831

Base

SymbolAddress
ETHNative
USDC0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913
DEGEN0x4ed4E862860beD51a9570b96d89aF5E1B0Efefed

Optimism

SymbolAddress
ETHNative
OP0x4200000000000000000000000000000000000042
USDC0x0b2C639c533813f4Aa9D7837CAf62653d097Ff85

---

MEV Protection

Ethereum (Flashbots)

// Automatically uses Flashbots Protect RPC
const result = await executeUniswapSwap({
  chain: 'ethereum',
  useMevProtection: true,  // Sends via Flashbots
  ...
});

L2 Chains

L2s (Arbitrum, Optimism, Base) have sequencer-level MEV protection by default.

---

Gas Estimation

// Get gas estimate before swapping
const quote = await getUniswapQuote({ ... });
console.log(`Estimated gas: ${quote.gasEstimate}`);
console.log(`Gas price: ${quote.gasPrice} gwei`);
console.log(`Total gas cost: ${quote.gasCostUsd} USD`);

---

Error Handling

import { EvmSwapError, InsufficientBalanceError, SlippageExceededError } from 'clodds/evm';

try {
  await executeUniswapSwap({ ... });
} catch (error) {
  if (error instanceof InsufficientBalanceError) {
    console.log('Not enough balance');
  } else if (error instanceof SlippageExceededError) {
    console.log('Price moved, increase slippage');
  }
}

Related skills

FAQ

Which chains are supported?

Ethereum, Arbitrum, Optimism, Base, and Polygon, each with Uniswap V3 and 1inch.

Does it protect against MEV?

Yes, Ethereum swaps can use Flashbots Protect via useMevProtection.

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.