starkfi 0.1.0 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/LICENSE +1 -1
  2. package/MCP.md +292 -0
  3. package/README.md +424 -54
  4. package/dist/commands/auth/login.js +2 -2
  5. package/dist/commands/auth/login.js.map +1 -1
  6. package/dist/commands/auth/verify.d.ts.map +1 -1
  7. package/dist/commands/auth/verify.js +2 -2
  8. package/dist/commands/auth/verify.js.map +1 -1
  9. package/dist/commands/batch/batch.d.ts +3 -0
  10. package/dist/commands/batch/batch.d.ts.map +1 -0
  11. package/dist/commands/batch/batch.js +155 -0
  12. package/dist/commands/batch/batch.js.map +1 -0
  13. package/dist/commands/chain/tx-status.js +2 -2
  14. package/dist/commands/chain/tx-status.js.map +1 -1
  15. package/dist/commands/config/config.d.ts.map +1 -1
  16. package/dist/commands/config/config.js +23 -34
  17. package/dist/commands/config/config.js.map +1 -1
  18. package/dist/commands/lending/lending.d.ts +1 -0
  19. package/dist/commands/lending/lending.d.ts.map +1 -1
  20. package/dist/commands/lending/lending.js +197 -51
  21. package/dist/commands/lending/lending.js.map +1 -1
  22. package/dist/commands/portfolio/portfolio.d.ts +3 -0
  23. package/dist/commands/portfolio/portfolio.d.ts.map +1 -0
  24. package/dist/commands/portfolio/portfolio.js +76 -0
  25. package/dist/commands/portfolio/portfolio.js.map +1 -0
  26. package/dist/commands/staking/staking.d.ts +1 -1
  27. package/dist/commands/staking/staking.d.ts.map +1 -1
  28. package/dist/commands/staking/staking.js +144 -61
  29. package/dist/commands/staking/staking.js.map +1 -1
  30. package/dist/commands/trade/multi-swap.d.ts +3 -0
  31. package/dist/commands/trade/multi-swap.d.ts.map +1 -0
  32. package/dist/commands/trade/multi-swap.js +141 -0
  33. package/dist/commands/trade/multi-swap.js.map +1 -0
  34. package/dist/commands/trade/status.js +2 -2
  35. package/dist/commands/trade/status.js.map +1 -1
  36. package/dist/commands/trade/swap.d.ts.map +1 -1
  37. package/dist/commands/trade/swap.js +48 -12
  38. package/dist/commands/trade/swap.js.map +1 -1
  39. package/dist/commands/wallet/balance.d.ts.map +1 -1
  40. package/dist/commands/wallet/balance.js +20 -3
  41. package/dist/commands/wallet/balance.js.map +1 -1
  42. package/dist/commands/wallet/deploy.d.ts.map +1 -1
  43. package/dist/commands/wallet/deploy.js +2 -1
  44. package/dist/commands/wallet/deploy.js.map +1 -1
  45. package/dist/commands/wallet/send.d.ts.map +1 -1
  46. package/dist/commands/wallet/send.js +46 -9
  47. package/dist/commands/wallet/send.js.map +1 -1
  48. package/dist/index.js +162 -9
  49. package/dist/index.js.map +1 -1
  50. package/dist/lib/banner.d.ts +6 -0
  51. package/dist/lib/banner.d.ts.map +1 -0
  52. package/dist/lib/banner.js +78 -0
  53. package/dist/lib/banner.js.map +1 -0
  54. package/dist/lib/concurrency.d.ts +2 -0
  55. package/dist/lib/concurrency.d.ts.map +1 -0
  56. package/dist/lib/concurrency.js +21 -0
  57. package/dist/lib/concurrency.js.map +1 -0
  58. package/dist/lib/config.d.ts +0 -11
  59. package/dist/lib/config.d.ts.map +1 -1
  60. package/dist/lib/config.js +0 -20
  61. package/dist/lib/config.js.map +1 -1
  62. package/dist/lib/errors.d.ts +2 -0
  63. package/dist/lib/errors.d.ts.map +1 -1
  64. package/dist/lib/errors.js +2 -0
  65. package/dist/lib/errors.js.map +1 -1
  66. package/dist/lib/fetch.d.ts +4 -0
  67. package/dist/lib/fetch.d.ts.map +1 -0
  68. package/dist/lib/fetch.js +13 -0
  69. package/dist/lib/fetch.js.map +1 -0
  70. package/dist/lib/format.d.ts +12 -2
  71. package/dist/lib/format.d.ts.map +1 -1
  72. package/dist/lib/format.js +86 -23
  73. package/dist/lib/format.js.map +1 -1
  74. package/dist/lib/retry.d.ts +8 -0
  75. package/dist/lib/retry.d.ts.map +1 -0
  76. package/dist/lib/retry.js +25 -0
  77. package/dist/lib/retry.js.map +1 -0
  78. package/dist/lib/types.d.ts +6 -0
  79. package/dist/lib/types.d.ts.map +1 -0
  80. package/dist/lib/types.js +2 -0
  81. package/dist/lib/types.js.map +1 -0
  82. package/dist/lib/validation.d.ts +0 -12
  83. package/dist/lib/validation.d.ts.map +1 -1
  84. package/dist/lib/validation.js +1 -23
  85. package/dist/lib/validation.js.map +1 -1
  86. package/dist/mcp/handlers/batch.d.ts +13 -0
  87. package/dist/mcp/handlers/batch.d.ts.map +1 -0
  88. package/dist/mcp/handlers/batch.js +33 -0
  89. package/dist/mcp/handlers/batch.js.map +1 -0
  90. package/dist/mcp/handlers/config.d.ts +1 -1
  91. package/dist/mcp/handlers/config.d.ts.map +1 -1
  92. package/dist/mcp/handlers/config.js +11 -12
  93. package/dist/mcp/handlers/config.js.map +1 -1
  94. package/dist/mcp/handlers/index.d.ts +3 -0
  95. package/dist/mcp/handlers/index.d.ts.map +1 -1
  96. package/dist/mcp/handlers/index.js +3 -0
  97. package/dist/mcp/handlers/index.js.map +1 -1
  98. package/dist/mcp/handlers/lending.d.ts +12 -1
  99. package/dist/mcp/handlers/lending.d.ts.map +1 -1
  100. package/dist/mcp/handlers/lending.js +67 -23
  101. package/dist/mcp/handlers/lending.js.map +1 -1
  102. package/dist/mcp/handlers/multi-swap.d.ts +27 -0
  103. package/dist/mcp/handlers/multi-swap.d.ts.map +1 -0
  104. package/dist/mcp/handlers/multi-swap.js +73 -0
  105. package/dist/mcp/handlers/multi-swap.js.map +1 -0
  106. package/dist/mcp/handlers/portfolio.d.ts +7 -0
  107. package/dist/mcp/handlers/portfolio.d.ts.map +1 -0
  108. package/dist/mcp/handlers/portfolio.js +11 -0
  109. package/dist/mcp/handlers/portfolio.js.map +1 -0
  110. package/dist/mcp/handlers/staking.d.ts +13 -1
  111. package/dist/mcp/handlers/staking.d.ts.map +1 -1
  112. package/dist/mcp/handlers/staking.js +18 -5
  113. package/dist/mcp/handlers/staking.js.map +1 -1
  114. package/dist/mcp/handlers/trade.d.ts +1 -0
  115. package/dist/mcp/handlers/trade.d.ts.map +1 -1
  116. package/dist/mcp/handlers/trade.js +27 -13
  117. package/dist/mcp/handlers/trade.js.map +1 -1
  118. package/dist/mcp/handlers/wallet.d.ts +1 -0
  119. package/dist/mcp/handlers/wallet.d.ts.map +1 -1
  120. package/dist/mcp/handlers/wallet.js +24 -5
  121. package/dist/mcp/handlers/wallet.js.map +1 -1
  122. package/dist/mcp/server.d.ts.map +1 -1
  123. package/dist/mcp/server.js +45 -4
  124. package/dist/mcp/server.js.map +1 -1
  125. package/dist/mcp/tools/auth.d.ts +3 -0
  126. package/dist/mcp/tools/auth.d.ts.map +1 -0
  127. package/dist/mcp/tools/auth.js +17 -0
  128. package/dist/mcp/tools/auth.js.map +1 -0
  129. package/dist/mcp/tools/error-handling.d.ts +12 -0
  130. package/dist/mcp/tools/error-handling.d.ts.map +1 -0
  131. package/dist/mcp/tools/error-handling.js +28 -0
  132. package/dist/mcp/tools/error-handling.js.map +1 -0
  133. package/dist/mcp/tools/index.d.ts +11 -0
  134. package/dist/mcp/tools/index.d.ts.map +1 -0
  135. package/dist/mcp/tools/index.js +19 -0
  136. package/dist/mcp/tools/index.js.map +1 -0
  137. package/dist/mcp/tools/lending.d.ts +3 -0
  138. package/dist/mcp/tools/lending.d.ts.map +1 -0
  139. package/dist/mcp/tools/lending.js +71 -0
  140. package/dist/mcp/tools/lending.js.map +1 -0
  141. package/dist/mcp/tools/staking.d.ts +3 -0
  142. package/dist/mcp/tools/staking.d.ts.map +1 -0
  143. package/dist/mcp/tools/staking.js +50 -0
  144. package/dist/mcp/tools/staking.js.map +1 -0
  145. package/dist/mcp/tools/trade.d.ts +3 -0
  146. package/dist/mcp/tools/trade.d.ts.map +1 -0
  147. package/dist/mcp/tools/trade.js +63 -0
  148. package/dist/mcp/tools/trade.js.map +1 -0
  149. package/dist/mcp/tools/wallet.d.ts +3 -0
  150. package/dist/mcp/tools/wallet.d.ts.map +1 -0
  151. package/dist/mcp/tools/wallet.js +27 -0
  152. package/dist/mcp/tools/wallet.js.map +1 -0
  153. package/dist/mcp/tools.d.ts.map +1 -1
  154. package/dist/mcp/tools.js +125 -41
  155. package/dist/mcp/tools.js.map +1 -1
  156. package/dist/services/api/client.d.ts +0 -12
  157. package/dist/services/api/client.d.ts.map +1 -1
  158. package/dist/services/api/client.js +7 -16
  159. package/dist/services/api/client.js.map +1 -1
  160. package/dist/services/auth/session.d.ts +1 -7
  161. package/dist/services/auth/session.d.ts.map +1 -1
  162. package/dist/services/auth/session.js +21 -0
  163. package/dist/services/auth/session.js.map +1 -1
  164. package/dist/services/batch/batch.d.ts +35 -0
  165. package/dist/services/batch/batch.d.ts.map +1 -0
  166. package/dist/services/batch/batch.js +110 -0
  167. package/dist/services/batch/batch.js.map +1 -0
  168. package/dist/services/config/config.d.ts +3 -0
  169. package/dist/services/config/config.d.ts.map +1 -1
  170. package/dist/services/config/config.js +30 -1
  171. package/dist/services/config/config.js.map +1 -1
  172. package/dist/services/fibrous/config.d.ts +4 -0
  173. package/dist/services/fibrous/config.d.ts.map +1 -0
  174. package/dist/services/fibrous/config.js +4 -0
  175. package/dist/services/fibrous/config.js.map +1 -0
  176. package/dist/services/fibrous/health.js +1 -1
  177. package/dist/services/fibrous/health.js.map +1 -1
  178. package/dist/services/fibrous/route.d.ts +15 -6
  179. package/dist/services/fibrous/route.d.ts.map +1 -1
  180. package/dist/services/fibrous/route.js +64 -3
  181. package/dist/services/fibrous/route.js.map +1 -1
  182. package/dist/services/portfolio/portfolio.d.ts +31 -0
  183. package/dist/services/portfolio/portfolio.d.ts.map +1 -0
  184. package/dist/services/portfolio/portfolio.js +104 -0
  185. package/dist/services/portfolio/portfolio.js.map +1 -0
  186. package/dist/services/simulate/simulate.d.ts +10 -0
  187. package/dist/services/simulate/simulate.d.ts.map +1 -0
  188. package/dist/services/simulate/simulate.js +57 -0
  189. package/dist/services/simulate/simulate.js.map +1 -0
  190. package/dist/services/staking/staking.d.ts +9 -30
  191. package/dist/services/staking/staking.d.ts.map +1 -1
  192. package/dist/services/staking/staking.js +44 -52
  193. package/dist/services/staking/staking.js.map +1 -1
  194. package/dist/services/starkzap/client.d.ts +2 -1
  195. package/dist/services/starkzap/client.d.ts.map +1 -1
  196. package/dist/services/starkzap/client.js +39 -21
  197. package/dist/services/starkzap/client.js.map +1 -1
  198. package/dist/services/starkzap/config.d.ts +6 -0
  199. package/dist/services/starkzap/config.d.ts.map +1 -0
  200. package/dist/services/starkzap/config.js +13 -0
  201. package/dist/services/starkzap/config.js.map +1 -0
  202. package/dist/services/tokens/balances.d.ts.map +1 -1
  203. package/dist/services/tokens/balances.js +8 -8
  204. package/dist/services/tokens/balances.js.map +1 -1
  205. package/dist/services/tokens/tokens.d.ts +2 -3
  206. package/dist/services/tokens/tokens.d.ts.map +1 -1
  207. package/dist/services/tokens/tokens.js +3 -8
  208. package/dist/services/tokens/tokens.js.map +1 -1
  209. package/dist/services/vesu/api.d.ts +28 -0
  210. package/dist/services/vesu/api.d.ts.map +1 -0
  211. package/dist/services/vesu/api.js +91 -0
  212. package/dist/services/vesu/api.js.map +1 -0
  213. package/dist/services/vesu/config.d.ts +9 -0
  214. package/dist/services/vesu/config.d.ts.map +1 -0
  215. package/dist/services/vesu/config.js +32 -0
  216. package/dist/services/vesu/config.js.map +1 -0
  217. package/dist/services/vesu/index.d.ts +2 -0
  218. package/dist/services/vesu/index.d.ts.map +1 -1
  219. package/dist/services/vesu/index.js +2 -0
  220. package/dist/services/vesu/index.js.map +1 -1
  221. package/dist/services/vesu/lending.d.ts +9 -5
  222. package/dist/services/vesu/lending.d.ts.map +1 -1
  223. package/dist/services/vesu/lending.js +176 -60
  224. package/dist/services/vesu/lending.js.map +1 -1
  225. package/dist/services/vesu/pools.d.ts +6 -12
  226. package/dist/services/vesu/pools.d.ts.map +1 -1
  227. package/dist/services/vesu/pools.js +11 -31
  228. package/dist/services/vesu/pools.js.map +1 -1
  229. package/package.json +88 -82
  230. package/skills/README.md +59 -0
  231. package/skills/authenticate-wallet/SKILL.md +119 -0
  232. package/skills/balance/SKILL.md +80 -0
  233. package/skills/batch/SKILL.md +118 -0
  234. package/skills/config/SKILL.md +144 -0
  235. package/skills/lending/SKILL.md +209 -0
  236. package/skills/multi-swap/SKILL.md +95 -0
  237. package/skills/portfolio/SKILL.md +82 -0
  238. package/skills/send/SKILL.md +82 -0
  239. package/skills/staking/SKILL.md +188 -0
  240. package/skills/trade/SKILL.md +92 -0
package/README.md CHANGED
@@ -1,83 +1,453 @@
1
- # StarkFi
1
+ <p align="center">
2
+ <a href="https://starkfi.app">
3
+ <img src="docs/favicon.svg" alt="StarkFi Logo" width="100" height="100"/>
4
+ </a>
5
+ </p>
2
6
 
3
- A minimalist command-line interface and AI Agent toolkit for DeFi operations on **Starknet**.
4
- Powered by [StarkZap](https://github.com/keep-starknet-strange/starkzap) SDK, [Fibrous](https://fibrous.finance) aggregation, and [AVNU](https://docs.avnu.fi) Paymaster.
7
+ <h1 align="center">StarkFi</h1>
5
8
 
6
- ## Overview
9
+ <p align="center">
10
+ <strong>The Gas-Abstracted DeFi CLI & Agent.</strong><br>
11
+ <em>The AI-native DeFi toolkit for Starknet.</em><br>
12
+ A production-grade CLI and MCP server that gives both developers and AI agents full access to swaps, multi-swap, atomic batch transactions, staking, lending, portfolio management, and gasless transactions — all powered by the <a href="https://github.com/keep-starknet-strange/starkzap">Starkzap SDK</a>.
13
+ </p>
7
14
 
8
- StarkFi provides a unified interface for Starknet interactions, designed for both human CLI usage and AI agent workflows (via MCP).
15
+ ```bash
16
+ npx starkfi --help
17
+ ```
18
+
19
+ ---
20
+
21
+ ## Why StarkFi?
22
+
23
+ Most DeFi tools are built for humans clicking buttons. StarkFi is built for **agents**.
24
+
25
+ - 🤖 **27 MCP tools** — Any AI assistant (Cursor, Claude, Antigravity) can execute DeFi operations autonomously
26
+ - ⚡ **Atomic Batching** — Combine swap + stake + lend + send into a single multicall transaction
27
+ - 💸 **Gas Abstraction Built-In** — Pay gas in STRK, ETH, USDC, USDT, or DAI via AVNU Paymaster, or let the developer sponsor gas entirely (gasfree mode)
28
+ - 📊 **Full Portfolio** — Unified view of balances, staking positions, and lending positions with USD values
29
+ - 🧪 **Simulate Everything** — Dry-run any transaction to estimate fees before broadcasting
30
+
31
+ ---
32
+
33
+ ## Architecture
34
+
35
+ ```
36
+ ┌──────────────────────────────────────────────────────────────────────┐
37
+ │ StarkFi │
38
+ │ │
39
+ │ ┌─────────────┐ ┌─────────────────────────────────────────┐ │
40
+ │ │ CLI (25+ │ │ MCP Server (27 tools) │ │
41
+ │ │ commands) │ │ AI agents connect via stdio transport │ │
42
+ │ └──────┬───────┘ └──────────────┬──────────────────────────┘ │
43
+ │ │ │ │
44
+ │ └────────────┬───────────────┘ │
45
+ │ ▼ │
46
+ │ ┌──────────────────────────────────────────────────────────────┐ │
47
+ │ │ Service Layer │ │
48
+ │ │ │ │
49
+ │ │ ┌─────────┐ ┌─────────┐ ┌──────┐ ┌─────────┐ │ │
50
+ │ │ │ Fibrous │ │ Staking │ │ Vesu │ │ Batch │ │ │
51
+ │ │ │ Swap │ │Lifecycle│ │ V2 │ │Multicall│ │ │
52
+ │ │ └────┬────┘ └────┬────┘ └──┬───┘ └────┬────┘ │ │
53
+ │ │ │ │ │ │ │ │
54
+ │ │ ┌────┴────────────┴──────────┴────────────┴────┐ │ │
55
+ │ │ │ Starkzap SDK (starkzap v1.0.0) │ │ │
56
+ │ │ │ Wallet · TxBuilder · Tokens · Paymaster │ │ │
57
+ │ │ └───────────────────┬───────────────────────────┘ │ │
58
+ │ └──────────────────────┼───────────────────────────────────────┘ │
59
+ │ ▼ │
60
+ │ ┌─────────────────────────────────────┐ ┌─────────────────────┐ │
61
+ │ │ Auth Server (Hono + Privy TEE) │ │ AVNU Paymaster │ │
62
+ │ │ Email OTP · Wallet · Sign · Gas │ │ Gas Abstraction │ │
63
+ │ └─────────────────────────────────────┘ └─────────────────────┘ │
64
+ └──────────────────────────────────────────────────────────────────────┘
65
+
66
+
67
+ ┌──────────────────┐
68
+ │ Starknet (L2) │
69
+ └──────────────────┘
70
+ ```
71
+
72
+ ---
73
+
74
+ ## Starkzap Modules Used
75
+
76
+ StarkFi leverages **all core Starkzap modules**:
77
+
78
+ | Module | Usage in StarkFi |
79
+ | ------------------------------------ | ---------------------------------------------------------------------------------------------------------- |
80
+ | **Wallets** | `PrivySigner` + `ArgentXV050Preset` for email-based wallet management via Privy TEE |
81
+ | **Gasless Transactions (Paymaster)** | Paymaster integration with 5 gas tokens (STRK, ETH, USDC, USDT, DAI) + developer-sponsored gasfree mode |
82
+ | **Staking** | Multi-token staking lifecycle (STRK, WBTC, tBTC, SolvBTC, LBTC) — stake, claim, compound, unstake (2-step) |
83
+ | **TxBuilder** | Atomic multicall batching — combine swap + stake + supply + send in one transaction |
84
+ | **ERC-20 Tokens** | Token presets, balance queries, transfers, approvals |
85
+
86
+ ---
87
+
88
+ ## Features
89
+
90
+ ### 🔄 Intelligent Swap Routing (Fibrous)
91
+
92
+ DEX-aggregated swaps with optimal routing. Single swaps, multi-swap (up to 3 pairs), and batch routing.
93
+
94
+ ```bash
95
+ npx starkfi trade 100 USDC ETH --slippage 1
96
+ npx starkfi multi-swap "100 USDC>ETH, 50 USDT>ETH"
97
+ ```
98
+
99
+ ### ⚛️ Atomic Transaction Batching
100
+
101
+ Bundle multiple DeFi operations into a single Starknet multicall. Minimum 2 operations.
102
+
103
+ ```bash
104
+ npx starkfi batch \
105
+ --swap "100 USDC ETH" \
106
+ --stake "50 STRK karnot" \
107
+ --supply "200 USDC Prime" \
108
+ --send "10 STRK 0xAddr"
109
+ ```
110
+
111
+ ### 🥩 Multi-Token Staking Lifecycle
112
+
113
+ Full staking lifecycle across multiple validators with STRK, WBTC, tBTC, SolvBTC, and LBTC support.
114
+
115
+ ```bash
116
+ npx starkfi stake 100 -v karnot
117
+ npx starkfi rewards -v karnot --compound
118
+ npx starkfi unstake intent -v karnot -a 50
119
+ npx starkfi unstake exit -v karnot
120
+ ```
121
+
122
+ ### 🏦 Lending & Borrowing (Vesu V2)
123
+
124
+ Supply collateral, borrow assets, monitor health factors, and atomically close positions.
125
+
126
+ ```bash
127
+ npx starkfi lend-supply 100 -p Prime -t STRK
128
+ npx starkfi lend-borrow -p Prime \
129
+ --collateral-amount 200 --collateral-token STRK \
130
+ --borrow-amount 50 --borrow-token USDC
131
+ npx starkfi lend-status -p Prime --collateral-token STRK --borrow-token USDC
132
+ npx starkfi lend-close -p Prime --collateral-token STRK --borrow-token USDC
133
+ ```
134
+
135
+ ### 💸 Gas Abstraction
136
+
137
+ All transactions are gasless by default. Users pay gas fees in their preferred ERC-20 token via Paymaster.
138
+
139
+ ```bash
140
+ # Pay gas in USDC instead of STRK
141
+ npx starkfi config set-gas-token USDC
142
+
143
+ # Developer pays all gas (gasfree mode)
144
+ npx starkfi config set-gasfree on
145
+ ```
146
+
147
+ | Mode | Who Pays | Gas Tokens | Description |
148
+ | --------------------- | --------- | -------------------------- | --------------------------------- |
149
+ | **Gasless** (default) | User | STRK, ETH, USDC, USDT, DAI | User pays in ERC-20 via Paymaster |
150
+ | **Gasfree** | Developer | — | Developer sponsors all gas |
151
+
152
+ ### 🧪 Simulation / Dry-Run
153
+
154
+ Estimate fees and validate any transaction before broadcasting.
155
+
156
+ ```bash
157
+ npx starkfi trade 100 USDC ETH --simulate
158
+ # → mode: SIMULATION, estimatedFee: 0.000142 ETH ($0.52), callCount: 4
159
+ ```
160
+
161
+ ### 📊 Portfolio Dashboard
162
+
163
+ Consolidated view of all DeFi positions in one call.
164
+
165
+ ```bash
166
+ npx starkfi portfolio
167
+ # → Token Balances (USD), Staking Positions, Lending Positions, Total Value
168
+ ```
169
+
170
+ ---
171
+
172
+ ## AI Integration (MCP)
173
+
174
+ StarkFi exposes **27 MCP tools** via stdio transport, enabling AI assistants to execute DeFi operations.
175
+
176
+ ```bash
177
+ # Start the MCP server
178
+ npx starkfi mcp-start
179
+ ```
180
+
181
+ ### Tool Categories
182
+
183
+ | Category | Tools | Count |
184
+ | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- | ----- |
185
+ | **Auth & Config** | `get_auth_status`, `config_action` | 2 |
186
+ | **Wallet** | `get_balance`, `get_portfolio`, `deploy_account`, `send_tokens`, `get_tx_status` | 5 |
187
+ | **Trade** | `get_swap_quote`, `swap_tokens`, `get_multi_swap_quote`, `multi_swap`, `batch_execute` | 5 |
188
+ | **Staking** | `list_validators`, `list_pools`, `get_staking_info`, `get_stake_status`, `stake_tokens`, `unstake_tokens`, `claim_rewards`, `compound_rewards` | 8 |
189
+ | **Lending** | `list_lending_pools`, `get_lending_position`, `supply_assets`, `withdraw_assets`, `borrow_assets`, `repay_debt`, `close_position` | 7 |
190
+
191
+ ### Example — AI Agent Workflow
192
+
193
+ ```
194
+ User: "Swap 100 USDC to STRK and stake half on Karnot"
195
+
196
+ Agent:
197
+ 1. get_swap_quote(amount: "100", from: "USDC", to: "STRK") → 500 STRK
198
+ 2. swap_tokens(amount: "100", from: "USDC", to: "STRK") → txHash: 0x...
199
+ 3. stake_tokens(amount: "250", validator: "karnot", token: "STRK") → txHash: 0x...
200
+ ```
201
+
202
+ ### MCP Configuration
9
203
 
10
- - **Optimal Trading:** Aggregated token swaps via Fibrous.
11
- - **Gas Abstraction:** Default (STRK), Gasfree (developer-sponsored), or Gasless (user pays in USDC/ETH).
12
- - **Staking Management:** Full lifecycle support for delegation pools (stake, compound, unstake).
13
- - **Lending & Borrowing:** Supply, withdraw, borrow, and repay via Vesu V2 lending protocol.
14
- - **AI Integration:** Built-in Model Context Protocol (MCP) server.
204
+ Add to your AI assistant's MCP config (Cursor, Claude, etc.):
205
+
206
+ ```json
207
+ {
208
+ "mcpServers": {
209
+ "starkfi": {
210
+ "command": "npx",
211
+ "args": ["-y", "starkfi", "mcp-start"]
212
+ }
213
+ }
214
+ }
215
+ ```
216
+
217
+ For the complete tool registry and schemas, see [MCP Documentation](MCP.md).
218
+
219
+ ---
220
+
221
+ ## Agent Skills
222
+
223
+ StarkFi ships with **10 agent skills** — structured instruction sets that teach AI coding assistants how to use StarkFi without custom prompting.
224
+
225
+ | Category | Skills |
226
+ | ---------------- | ------------------------------------------------------------ |
227
+ | **Auth** | `authenticate-wallet` |
228
+ | **Wallet Data** | `balance`, `portfolio` |
229
+ | **Transactions** | `send`, `trade`, `multi-swap`, `batch`, `staking`, `lending` |
230
+ | **Utility** | `config` |
231
+
232
+ ```bash
233
+ # Install skills for your AI assistant
234
+ npx skills add ahmetenesdur/starkfi
235
+ ```
236
+
237
+ See [Skills Documentation](skills/README.md) for details.
238
+
239
+ ---
15
240
 
16
241
  ## Quick Start
17
242
 
18
- ### 1. Authentication
243
+ ### Prerequisites
244
+
245
+ - **Node.js** v18+
246
+ - **StarkFi Auth Server** running (required for Privy email OTP and Paymaster proxy)
247
+
248
+ ### 1. Authenticate
19
249
 
20
250
  ```bash
21
- # Via Email OTP (requires starkfi-server)
22
251
  npx starkfi auth login user@example.com
23
- npx starkfi auth verify user@example.com <code>
252
+ npx starkfi auth verify user@example.com <OTP_CODE>
253
+ ```
254
+
255
+ ### 2. Deploy Account
24
256
 
25
- # Or via Private Key (local execution)
26
- npx starkfi auth import
257
+ ```bash
258
+ npx starkfi deploy
27
259
  ```
28
260
 
29
- ### 2. Core Commands
261
+ ### 3. Check Balance
30
262
 
31
263
  ```bash
32
- # Authentication & Wallet
33
- npx starkfi auth login <email> # Email OTP login
34
- npx starkfi auth verify <email> <code> # Verify OTP
35
- npx starkfi auth import # Import private key
36
- npx starkfi auth logout # Clear session
37
- npx starkfi address # Show active address
38
- npx starkfi deploy # Deploy account on-chain
264
+ npx starkfi balance
265
+ ```
266
+
267
+ ### 4. Start Trading
268
+
269
+ ```bash
270
+ npx starkfi trade 10 STRK ETH --simulate # Preview first
271
+ npx starkfi trade 10 STRK ETH # Execute
272
+ ```
273
+
274
+ ---
275
+
276
+ ## Command Reference
277
+
278
+ ### Session & Wallet
279
+
280
+ | Command | Description |
281
+ | --------------------------------------------------------- | -------------------------------- |
282
+ | `auth login <email>` | Start email OTP authentication |
283
+ | `auth verify <email> <code>` | Complete authentication |
284
+ | `auth logout` | Terminate session |
285
+ | `status` | Check auth status and API health |
286
+ | `address` | Display Starknet address |
287
+ | `deploy` | Deploy smart account on-chain |
288
+ | `balance [--token <symbol>] [--json]` | Query token balances |
289
+ | `send <amount> <token> <recipient> [--simulate] [--json]` | Transfer tokens |
290
+ | `portfolio [--json]` | Full DeFi portfolio |
291
+
292
+ ### Trading (Fibrous)
293
+
294
+ | Command | Description |
295
+ | ------------------------------------------------------------------- | --------------------------- |
296
+ | `trade <amount> <from> <to> [--slippage <%>] [--simulate] [--json]` | Swap tokens |
297
+ | `multi-swap "<pairs>" [--slippage <%>] [--simulate] [--json]` | Multi-pair swap (2-3 pairs) |
298
+
299
+ ### Batching (Multicall)
300
+
301
+ | Command | Description |
302
+ | --------------------------------------------------------------------------- | ---------------------------- |
303
+ | `batch [--simulate] --swap "..." --stake "..." --supply "..." --send "..."` | Atomic multicall (min 2 ops) |
304
+
305
+ ### Staking
306
+
307
+ | Command | Description |
308
+ | ----------------------------------------------------------------------------- | ---------------------- |
309
+ | `validators [--json]` | List active validators |
310
+ | `pools <validator> [--json]` | Show delegation pools |
311
+ | `stake <amount> --validator <name> [--token <symbol>] [--simulate]` | Stake tokens |
312
+ | `stake-status [validator] [--json]` | Staking dashboard |
313
+ | `rewards --validator <name> [--token <symbol>] <--claim\|--compound>` | Manage rewards |
314
+ | `unstake <intent\|exit> --validator <name> [--token <symbol>] [--amount <n>]` | Unstake (2-step) |
315
+
316
+ ### Lending (Vesu V2)
317
+
318
+ | Command | Description |
319
+ | ------------------------------------------------------------------------------------------------------------------------------ | ------------------------- |
320
+ | `lend-pools [name]` | List lending pools |
321
+ | `lend-supply <amount> -p <pool> -t <token>` | Supply assets |
322
+ | `lend-withdraw <amount> -p <pool> -t <token>` | Withdraw assets |
323
+ | `lend-borrow -p <pool> --collateral-amount <n> --collateral-token <t> --borrow-amount <n> --borrow-token <t> [--use-supplied]` | Borrow |
324
+ | `lend-repay <amount> -p <pool> -t <token> --collateral-token <t>` | Repay debt |
325
+ | `lend-status -p <pool> --collateral-token <t> [--borrow-token <t>]` | Position status |
326
+ | `lend-close -p <pool> --collateral-token <t> --borrow-token <t>` | Close position atomically |
327
+
328
+ ### Configuration
39
329
 
40
- # Assets & Trading
41
- npx starkfi balance [token] # Show token balances
42
- npx starkfi send <amount> <token> <recipient> # Transfer tokens
43
- npx starkfi trade <amount> <from> <to> # Swap tokens via Fibrous
330
+ | Command | Description |
331
+ | --------------------------------------- | ------------------------------ |
332
+ | `config list` | Show current configuration |
333
+ | `config set-rpc <url>` | Set custom RPC endpoint |
334
+ | `config get-rpc` | Show current RPC |
335
+ | `config set-network <mainnet\|sepolia>` | Switch network |
336
+ | `config set-gas-token <token\|reset>` | Set gas payment token |
337
+ | `config set-gasfree <on\|off>` | Toggle developer-sponsored gas |
338
+ | `tx-status <hash>` | Check transaction status |
44
339
 
45
- # Staking
46
- npx starkfi validators # List all validators
47
- npx starkfi pools <validator> # List delegation pools
48
- npx starkfi staking-stats # Full staking dashboard
49
- npx starkfi stake <amount> --pool <pool> # Stake tokens
50
- npx starkfi rewards --pool <pool> [--claim|--compound] # Manage rewards
51
- npx starkfi unstake <intent|exit> --pool <pool> [--amount <amount>] # Unstake
340
+ ---
52
341
 
53
- # Network & Config
54
- npx starkfi tx-status <hash> # Check tx receipt
55
- npx starkfi config list # View configuration
56
- npx starkfi config set-rpc <url> # Set custom RPC
57
- npx starkfi config set-network <network> # Set network (mainnet/sepolia)
58
- npx starkfi config set-gasfree <on|off> # Toggle AVNU-sponsored gas
59
- npx starkfi config set-gas-token <token|off> # Pay gas in ERC-20 (USDC, etc)
342
+ ## Auth Server
60
343
 
61
- # Lending (Vesu V2)
62
- npx starkfi lend-pools # List Vesu lending pools
63
- npx starkfi lend-pools Genesis # Filter by name
64
- npx starkfi lend-supply 100 -p Genesis -t STRK # Supply assets to earn interest
65
- npx starkfi lend-withdraw 50 -p Genesis -t STRK # Withdraw supplied assets
66
- npx starkfi lend-borrow -p Genesis --collateral-amount 1 --collateral-token ETH --borrow-amount 500 --borrow-token USDC
67
- npx starkfi lend-repay 250 -p Genesis -t USDC --collateral-token ETH # Repay debt
68
- npx starkfi lend-status -p Genesis --collateral-token ETH --debt-token USDC
344
+ StarkFi includes a dedicated **authentication server** (`server/`) built for secure, non-custodial wallet management.
345
+
346
+ ### Route Groups
347
+
348
+ | Route | Purpose |
349
+ | ------------ | ------------------------------------------------- |
350
+ | `/auth` | Email OTP login and verification via Privy |
351
+ | `/wallet` | Wallet creation and address retrieval |
352
+ | `/sign` | Transaction signing via Privy TEE (non-custodial) |
353
+ | `/paymaster` | Paymaster proxy for gas abstraction |
354
+
355
+ ### Security
356
+
357
+ - **CORS** with configurable allowlist (`ALLOWED_ORIGINS`)
358
+ - **Secure headers** via `hono/secure-headers`
359
+ - **Body size limit** (1MB)
360
+ - **Request ID tracking** for observability
361
+ - **Graceful shutdown** (SIGTERM/SIGINT with 5s force-kill)
362
+
363
+ See [`server/README.md`](server/README.md) for setup instructions.
364
+
365
+ ---
366
+
367
+ ## Tech Stack
368
+
369
+ | Layer | Technology |
370
+ | --------------- | -------------------------------------------------------------------------------- |
371
+ | **Core SDK** | [Starkzap](https://github.com/keep-starknet-strange/starkzap) v1.0.0 |
372
+ | **CLI** | [Commander.js](https://github.com/tj/commander.js) v14.0.3 |
373
+ | **MCP** | [@modelcontextprotocol/sdk](https://github.com/modelcontextprotocol/sdk) v1.27.1 |
374
+ | **Schema** | [Zod](https://zod.dev/) v4.3.6 |
375
+ | **Auth Server** | [Hono](https://hono.dev/) v4.12.2 + [Privy TEE](https://privy.io/) |
376
+ | **DEX Routing** | [Fibrous](https://fibrous.finance/) Aggregator |
377
+ | **Lending** | [Vesu](https://vesu.io/) V2 Protocol |
378
+ | **Gas** | [AVNU](https://avnu.fi/) Paymaster |
379
+
380
+ ---
381
+
382
+ ## Error Handling
383
+
384
+ StarkFi implements a robust error handling system with a custom `StarkfiError` class and **26 specific error codes** organized by domain:
385
+
386
+ | Domain | Error Codes |
387
+ | -------------- | --------------------------------------------------------------------------------- |
388
+ | **Auth** | `SESSION_EXPIRED`, `SESSION_NOT_FOUND`, `AUTH_FAILED`, `UNAUTHORIZED` |
389
+ | **Wallet** | `WALLET_NOT_FOUND`, `WALLET_NOT_DEPLOYED`, `INSUFFICIENT_BALANCE` |
390
+ | **Network** | `NETWORK_ERROR`, `RPC_ERROR`, `API_ERROR`, `TX_FAILED`, `TX_REVERTED` |
391
+ | **Validation** | `INVALID_ADDRESS`, `INVALID_AMOUNT`, `INVALID_TOKEN`, `INVALID_CONFIG` |
392
+ | **DeFi** | `SWAP_FAILED`, `STAKING_FAILED`, `LENDING_FAILED`, `POOL_NOT_FOUND` |
393
+ | **System** | `CONFIG_ERROR`, `SDK_ERROR`, `UNKNOWN_ERROR`, `SIMULATION_FAILED`, `BATCH_FAILED` |
394
+
395
+ All network operations include **automatic retry with exponential backoff** (500ms base, max 2 retries). Parallel operations use a **sliding-window concurrency pool** to prevent RPC rate-limiting.
396
+
397
+ ---
398
+
399
+ ## Development
400
+
401
+ ### Setup
402
+
403
+ ```bash
404
+ git clone https://github.com/ahmetenesdur/starkfi.git
405
+ cd starkfi
406
+ pnpm install
69
407
  ```
70
408
 
71
- ## AI Native (MCP)
409
+ ### Build
72
410
 
73
- StarkFi includes a built-in MCP server, exposing all DeFi capabilities to AI editors like Cursor and Claude.
411
+ ```bash
412
+ pnpm build # Compile TypeScript → dist/
413
+ ```
414
+
415
+ ### Dev Mode
74
416
 
75
417
  ```bash
76
- npx starkfi mcp-start
418
+ pnpm dev -- --help # Run with tsx (hot-reload)
419
+ ```
420
+
421
+ ### Lint & Format
422
+
423
+ ```bash
424
+ pnpm lint # ESLint
425
+ pnpm format # Prettier
77
426
  ```
78
427
 
79
- > See [MCP.md](MCP.md) for editor configuration and the complete tool registry.
428
+ ### Auth Server
429
+
430
+ ```bash
431
+ cd server
432
+ pnpm install
433
+ cp .env.example .env # Configure environment
434
+ pnpm dev
435
+ ```
436
+
437
+ ---
438
+
439
+ ## Contributing
440
+
441
+ Contributions are welcome! Here's how to get started:
442
+
443
+ 1. **Fork** the repository and create a feature branch
444
+ 2. **Install** dependencies: `pnpm install`
445
+ 3. **Make** your changes following the existing code style (TypeScript strict mode, ESLint + Prettier)
446
+ 4. **Build** and verify: `pnpm build && pnpm lint`
447
+ 5. **Submit** a pull request with a clear description
448
+
449
+ For bug reports and feature requests, please [open an issue](https://github.com/ahmetenesdur/starkfi/issues).
80
450
 
81
451
  ## License
82
452
 
83
- MIT
453
+ [MIT](LICENSE) — ahmetenesdur
@@ -1,5 +1,5 @@
1
1
  import { apiLogin } from "../../services/api/client.js";
2
- import { createSpinner, success } from "../../lib/format.js";
2
+ import { createSpinner, success, formatError } from "../../lib/format.js";
3
3
  import { getOrCreateAuthCommand } from "../../lib/command.js";
4
4
  export function registerLoginCommand(program) {
5
5
  const authCmd = getOrCreateAuthCommand(program);
@@ -15,7 +15,7 @@ export function registerLoginCommand(program) {
15
15
  console.log(`Run: starkfi auth verify ${email} <code>`);
16
16
  }
17
17
  catch (error) {
18
- console.error("Login failed:", error instanceof Error ? error.message : error);
18
+ console.error(formatError(error));
19
19
  process.exit(1);
20
20
  }
21
21
  });
@@ -1 +1 @@
1
- {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACpD,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAEhD,OAAO;SACL,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,mDAAmD,CAAC;SAChE,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE;QAC/B,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC;YAExD,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEtB,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,KAAK,iBAAiB,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,SAAS,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC,CAAC;AACL,CAAC"}
1
+ {"version":3,"file":"login.js","sourceRoot":"","sources":["../../../src/commands/auth/login.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,MAAM,UAAU,oBAAoB,CAAC,OAAgB;IACpD,MAAM,OAAO,GAAG,sBAAsB,CAAC,OAAO,CAAC,CAAC;IAEhD,OAAO;SACL,OAAO,CAAC,eAAe,CAAC;SACxB,WAAW,CAAC,mDAAmD,CAAC;SAChE,MAAM,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE;QAC/B,IAAI,CAAC;YACJ,MAAM,OAAO,GAAG,aAAa,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE,CAAC;YAExD,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAC;YAEtB,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;YAC5B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,qBAAqB,KAAK,iBAAiB,CAAC,CAAC,CAAC;YAClE,OAAO,CAAC,GAAG,CAAC,4BAA4B,KAAK,SAAS,CAAC,CAAC;QACzD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAChB,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC;YAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjB,CAAC;IACF,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/verify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA0E5D"}
1
+ {"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../../src/commands/auth/verify.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AASzC,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAuE5D"}
@@ -1,6 +1,6 @@
1
1
  import { apiVerify } from "../../services/api/client.js";
2
2
  import { saveSession } from "../../services/auth/session.js";
3
- import { createSpinner, success, formatResult } from "../../lib/format.js";
3
+ import { createSpinner, success, formatResult, formatError } from "../../lib/format.js";
4
4
  import { STARKFI_API_URL_DEFAULT } from "../../lib/config.js";
5
5
  import { createSDK, connectWallet, resolveFeeModeConfig } from "../../services/starkzap/client.js";
6
6
  import { ConfigService } from "../../services/config/config.js";
@@ -56,7 +56,7 @@ export function registerVerifyCommand(program) {
56
56
  }
57
57
  }
58
58
  catch (error) {
59
- console.error("Verification failed:", error instanceof Error ? error.message : error);
59
+ console.error(formatError(error));
60
60
  process.exit(1);
61
61
  }
62
62
  });
@@ -1 +1 @@
1
- {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/commands/auth/verify.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"verify.js","sourceRoot":"","sources":["../../../src/commands/auth/verify.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerBatchCommand(program: Command): void;
3
+ //# sourceMappingURL=batch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"batch.d.ts","sourceRoot":"","sources":["../../../src/commands/batch/batch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA6EzC,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA+G3D"}