$npx -y skills add keep-starknet-strange/starknet-agentic --skill starknet-walletCreate and manage Starknet wallets for AI agents. Transfer tokens, check balances, manage session keys, deploy accounts, and interact with smart contracts using native Account Abstraction.
| 1 | # Starknet Wallet Skill |
| 2 | |
| 3 | Manage Starknet wallets for AI agents with native Account Abstraction support. |
| 4 | |
| 5 | ## When to Use |
| 6 | |
| 7 | - Creating, funding, and operating Starknet accounts for agent workflows. |
| 8 | - Checking balances, sending transfers, managing session keys, or invoking contracts from an agent wallet. |
| 9 | |
| 10 | ## When NOT to Use |
| 11 | |
| 12 | - DeFi-specific routing, staking, or lending flows better covered by `starknet-defi`. |
| 13 | - Cairo contract authoring, deployment-only operations, or security auditing. |
| 14 | |
| 15 | ## Quick Start |
| 16 | |
| 17 | 1. Install the SDK dependencies and set Starknet RPC/account environment variables. |
| 18 | 2. Use [skills catalog](../README.md) to pivot to adjacent modules like DeFi, deployment, or auditing. |
| 19 | |
| 20 | ## Prerequisites |
| 21 | |
| 22 | ```bash |
| 23 | npm install starknet@^8.9.1 @avnu/avnu-sdk@^4.0.1 |
| 24 | ``` |
| 25 | |
| 26 | Environment variables: |
| 27 | ``` |
| 28 | STARKNET_RPC_URL=https://starknet-mainnet.g.alchemy.com/v2/YOUR_KEY |
| 29 | STARKNET_ACCOUNT_ADDRESS=0x... |
| 30 | STARKNET_PRIVATE_KEY=0x... |
| 31 | AVNU_BASE_URL=https://starknet.api.avnu.fi (optional) |
| 32 | AVNU_PAYMASTER_URL=https://starknet.paymaster.avnu.fi (optional) |
| 33 | AVNU_PAYMASTER_API_KEY=your_key (optional, for free gas) |
| 34 | ``` |
| 35 | |
| 36 | ## Available MCP Tools |
| 37 | |
| 38 | The Starknet MCP Server provides these tools for wallet operations: |
| 39 | |
| 40 | | Tool | Purpose | Key Features | |
| 41 | |------|---------|--------------| |
| 42 | | `starknet_get_balance` | Check single token balance | Simple, fast queries | |
| 43 | | `starknet_get_balances` | Check multiple token balances | Batch queries (up to 200 tokens), single RPC call | |
| 44 | | `starknet_transfer` | Send tokens | Supports gasless mode (paymaster) | |
| 45 | | `starknet_call_contract` | Read contract state | Call view functions | |
| 46 | | `starknet_invoke_contract` | Execute contract functions | Write operations, supports gasless | |
| 47 | | `starknet_swap` | Execute token swaps | AVNU integration, best price routing | |
| 48 | | `starknet_get_quote` | Get swap quotes | Price estimation before swap | |
| 49 | | `starknet_register_agent` | Register agent identity | ERC-8004 on-chain identity | |
| 50 | |
| 51 | ### Balance Tools Detail |
| 52 | |
| 53 | #### starknet_get_balance (Single Token) |
| 54 | |
| 55 | Query balance for one token. Use for simple cases. |
| 56 | |
| 57 | **Input:** |
| 58 | - `token` (required): Token symbol (ETH, STRK, USDC, USDT) or contract address |
| 59 | - `address` (optional): Wallet address (defaults to agent's address) |
| 60 | |
| 61 | **Response:** |
| 62 | ```json |
| 63 | { |
| 64 | "address": "0x...", |
| 65 | "token": "ETH", |
| 66 | "tokenAddress": "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7", |
| 67 | "balance": "1.5", |
| 68 | "raw": "1500000000000000000", |
| 69 | "decimals": 18 |
| 70 | } |
| 71 | ``` |
| 72 | |
| 73 | #### starknet_get_balances (Multiple Tokens) |
| 74 | |
| 75 | Query balances for multiple tokens in a single RPC call. More efficient for portfolio views. |
| 76 | |
| 77 | **Input:** |
| 78 | - `tokens` (required): Array of token symbols or addresses (max 200) |
| 79 | - `address` (optional): Wallet address |
| 80 | |
| 81 | **Response:** |
| 82 | ```json |
| 83 | { |
| 84 | "address": "0x...", |
| 85 | "balances": [ |
| 86 | { "token": "ETH", "tokenAddress": "0x...", "balance": "1.5", "raw": "...", "decimals": 18 }, |
| 87 | { "token": "USDC", "tokenAddress": "0x...", "balance": "100", "raw": "...", "decimals": 6 } |
| 88 | ], |
| 89 | "tokensQueried": 2, |
| 90 | "method": "balance_checker" |
| 91 | } |
| 92 | ``` |
| 93 | |
| 94 | **When to use:** |
| 95 | - **starknet_get_balance**: Quick single-token check |
| 96 | - **starknet_get_balances**: Portfolio overview, multi-token operations |
| 97 | |
| 98 | ## Core Operations |
| 99 | |
| 100 | ### Check Balance (Single Token) |
| 101 | |
| 102 | Use the `starknet_get_balance` MCP tool for simple single-token queries: |
| 103 | |
| 104 | ```typescript |
| 105 | // Via MCP tool (recommended) |
| 106 | const result = await mcpClient.callTool({ |
| 107 | name: "starknet_get_balance", |
| 108 | arguments: { |
| 109 | address: "0x...", // Account address |
| 110 | token: "ETH", // Symbol (ETH, STRK, USDC, USDT) or contract address |
| 111 | } |
| 112 | }); |
| 113 | // Returns: { address, token, tokenAddress, balance, raw, decimals } |
| 114 | ``` |
| 115 | |
| 116 | **Direct starknet.js usage:** |
| 117 | |
| 118 | ```typescript |
| 119 | import { RpcProvider, Contract } from "starknet"; |
| 120 | |
| 121 | const provider = new RpcProvider({ nodeUrl: process.env.STARKNET_RPC_URL }); |
| 122 | |
| 123 | // ETH balance (starknet.js v8 uses options object for Contract) |
| 124 | const ethAddress = "0x049d36570d4e46f48e99674bd3fcc84644ddd6b96f7c741b1562b82f9e004dc7"; |
| 125 | const ethContract = new Contract({ |
| 126 | abi: erc20Abi, |
| 127 | address: ethAddress, |
| 128 | providerOrAccount: provider, |
| 129 | }); |
| 130 | const balance = await ethContract.balanceOf(accountAddress); |
| 131 | |
| 132 | // starknet.js v8: Convert uint256 to bigint |
| 133 | const balanceBigInt = BigInt(balance.low) + (BigInt(balance.high) << 128n); |
| 134 | // Format: (balanceBigInt / 10n ** 18n).toString() for whole units |
| 135 | ``` |
| 136 | |
| 137 | ### Check Multiple Balances (Batch) |
| 138 | |
| 139 | Use `starknet_get_balances` for efficient multi-token queries (single RPC call): |
| 140 | |
| 141 | ```typesc |