@aibtc/mcp-server 1.0.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.
- package/README.md +340 -0
- package/dist/api.d.ts +9 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/api.js +79 -0
- package/dist/api.js.map +1 -0
- package/dist/config/contracts.d.ts +169 -0
- package/dist/config/contracts.d.ts.map +1 -0
- package/dist/config/contracts.js +250 -0
- package/dist/config/contracts.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +3 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/networks.d.ts +11 -0
- package/dist/config/networks.d.ts.map +1 -0
- package/dist/config/networks.js +21 -0
- package/dist/config/networks.js.map +1 -0
- package/dist/endpoints/index.d.ts +2 -0
- package/dist/endpoints/index.d.ts.map +1 -0
- package/dist/endpoints/index.js +2 -0
- package/dist/endpoints/index.js.map +1 -0
- package/dist/endpoints/registry.d.ts +38 -0
- package/dist/endpoints/registry.d.ts.map +1 -0
- package/dist/endpoints/registry.js +935 -0
- package/dist/endpoints/registry.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +79 -0
- package/dist/index.js.map +1 -0
- package/dist/services/bitflow.service.d.ts +159 -0
- package/dist/services/bitflow.service.d.ts.map +1 -0
- package/dist/services/bitflow.service.js +325 -0
- package/dist/services/bitflow.service.js.map +1 -0
- package/dist/services/bns.service.d.ts +87 -0
- package/dist/services/bns.service.d.ts.map +1 -0
- package/dist/services/bns.service.js +312 -0
- package/dist/services/bns.service.js.map +1 -0
- package/dist/services/defi.service.d.ts +146 -0
- package/dist/services/defi.service.d.ts.map +1 -0
- package/dist/services/defi.service.js +461 -0
- package/dist/services/defi.service.js.map +1 -0
- package/dist/services/hiro-api.d.ts +438 -0
- package/dist/services/hiro-api.d.ts.map +1 -0
- package/dist/services/hiro-api.js +376 -0
- package/dist/services/hiro-api.js.map +1 -0
- package/dist/services/nft.service.d.ts +70 -0
- package/dist/services/nft.service.d.ts.map +1 -0
- package/dist/services/nft.service.js +148 -0
- package/dist/services/nft.service.js.map +1 -0
- package/dist/services/sbtc.service.d.ts +44 -0
- package/dist/services/sbtc.service.d.ts.map +1 -0
- package/dist/services/sbtc.service.js +100 -0
- package/dist/services/sbtc.service.js.map +1 -0
- package/dist/services/scaffold.service.d.ts +41 -0
- package/dist/services/scaffold.service.d.ts.map +1 -0
- package/dist/services/scaffold.service.js +1055 -0
- package/dist/services/scaffold.service.js.map +1 -0
- package/dist/services/stacking.service.d.ts +58 -0
- package/dist/services/stacking.service.d.ts.map +1 -0
- package/dist/services/stacking.service.js +153 -0
- package/dist/services/stacking.service.js.map +1 -0
- package/dist/services/tokens.service.d.ts +62 -0
- package/dist/services/tokens.service.d.ts.map +1 -0
- package/dist/services/tokens.service.js +119 -0
- package/dist/services/tokens.service.js.map +1 -0
- package/dist/services/wallet-manager.d.ts +107 -0
- package/dist/services/wallet-manager.d.ts.map +1 -0
- package/dist/services/wallet-manager.js +389 -0
- package/dist/services/wallet-manager.js.map +1 -0
- package/dist/services/x402.service.d.ts +26 -0
- package/dist/services/x402.service.d.ts.map +1 -0
- package/dist/services/x402.service.js +125 -0
- package/dist/services/x402.service.js.map +1 -0
- package/dist/tools/bitflow.tools.d.ts +3 -0
- package/dist/tools/bitflow.tools.d.ts.map +1 -0
- package/dist/tools/bitflow.tools.js +501 -0
- package/dist/tools/bitflow.tools.js.map +1 -0
- package/dist/tools/bns.tools.d.ts +3 -0
- package/dist/tools/bns.tools.d.ts.map +1 -0
- package/dist/tools/bns.tools.js +164 -0
- package/dist/tools/bns.tools.js.map +1 -0
- package/dist/tools/contract.tools.d.ts +3 -0
- package/dist/tools/contract.tools.d.ts.map +1 -0
- package/dist/tools/contract.tools.js +126 -0
- package/dist/tools/contract.tools.js.map +1 -0
- package/dist/tools/defi.tools.d.ts +3 -0
- package/dist/tools/defi.tools.d.ts.map +1 -0
- package/dist/tools/defi.tools.js +425 -0
- package/dist/tools/defi.tools.js.map +1 -0
- package/dist/tools/endpoint.tools.d.ts +3 -0
- package/dist/tools/endpoint.tools.d.ts.map +1 -0
- package/dist/tools/endpoint.tools.js +157 -0
- package/dist/tools/endpoint.tools.js.map +1 -0
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +52 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/nft.tools.d.ts +3 -0
- package/dist/tools/nft.tools.d.ts.map +1 -0
- package/dist/tools/nft.tools.js +154 -0
- package/dist/tools/nft.tools.js.map +1 -0
- package/dist/tools/openrouter.tools.d.ts +3 -0
- package/dist/tools/openrouter.tools.d.ts.map +1 -0
- package/dist/tools/openrouter.tools.js +664 -0
- package/dist/tools/openrouter.tools.js.map +1 -0
- package/dist/tools/query.tools.d.ts +3 -0
- package/dist/tools/query.tools.d.ts.map +1 -0
- package/dist/tools/query.tools.js +209 -0
- package/dist/tools/query.tools.js.map +1 -0
- package/dist/tools/sbtc.tools.d.ts +3 -0
- package/dist/tools/sbtc.tools.d.ts.map +1 -0
- package/dist/tools/sbtc.tools.js +103 -0
- package/dist/tools/sbtc.tools.js.map +1 -0
- package/dist/tools/scaffold.tools.d.ts +3 -0
- package/dist/tools/scaffold.tools.d.ts.map +1 -0
- package/dist/tools/scaffold.tools.js +216 -0
- package/dist/tools/scaffold.tools.js.map +1 -0
- package/dist/tools/stacking.tools.d.ts +3 -0
- package/dist/tools/stacking.tools.d.ts.map +1 -0
- package/dist/tools/stacking.tools.js +112 -0
- package/dist/tools/stacking.tools.js.map +1 -0
- package/dist/tools/tokens.tools.d.ts +3 -0
- package/dist/tools/tokens.tools.d.ts.map +1 -0
- package/dist/tools/tokens.tools.js +154 -0
- package/dist/tools/tokens.tools.js.map +1 -0
- package/dist/tools/transfer.tools.d.ts +3 -0
- package/dist/tools/transfer.tools.d.ts.map +1 -0
- package/dist/tools/transfer.tools.js +62 -0
- package/dist/tools/transfer.tools.js.map +1 -0
- package/dist/tools/wallet-management.tools.d.ts +6 -0
- package/dist/tools/wallet-management.tools.d.ts.map +1 -0
- package/dist/tools/wallet-management.tools.js +390 -0
- package/dist/tools/wallet-management.tools.js.map +1 -0
- package/dist/tools/wallet.tools.d.ts +3 -0
- package/dist/tools/wallet.tools.d.ts.map +1 -0
- package/dist/tools/wallet.tools.js +105 -0
- package/dist/tools/wallet.tools.js.map +1 -0
- package/dist/transactions/builder.d.ts +56 -0
- package/dist/transactions/builder.d.ts.map +1 -0
- package/dist/transactions/builder.js +134 -0
- package/dist/transactions/builder.js.map +1 -0
- package/dist/transactions/clarity-values.d.ts +67 -0
- package/dist/transactions/clarity-values.d.ts.map +1 -0
- package/dist/transactions/clarity-values.js +169 -0
- package/dist/transactions/clarity-values.js.map +1 -0
- package/dist/transactions/post-conditions.d.ts +27 -0
- package/dist/transactions/post-conditions.d.ts.map +1 -0
- package/dist/transactions/post-conditions.js +101 -0
- package/dist/transactions/post-conditions.js.map +1 -0
- package/dist/utils/encryption.d.ts +33 -0
- package/dist/utils/encryption.d.ts.map +1 -0
- package/dist/utils/encryption.js +110 -0
- package/dist/utils/encryption.js.map +1 -0
- package/dist/utils/errors.d.ts +84 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +132 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/formatting.d.ts +51 -0
- package/dist/utils/formatting.d.ts.map +1 -0
- package/dist/utils/formatting.js +114 -0
- package/dist/utils/formatting.js.map +1 -0
- package/dist/utils/index.d.ts +6 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +6 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/storage.d.ts +90 -0
- package/dist/utils/storage.d.ts.map +1 -0
- package/dist/utils/storage.js +196 -0
- package/dist/utils/storage.js.map +1 -0
- package/dist/utils/validation.d.ts +67 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +74 -0
- package/dist/utils/validation.js.map +1 -0
- package/dist/wallet.d.ts +86 -0
- package/dist/wallet.d.ts.map +1 -0
- package/dist/wallet.js +279 -0
- package/dist/wallet.js.map +1 -0
- package/package.json +58 -0
|
@@ -0,0 +1,425 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { getAccount, getWalletAddress, NETWORK } from "../services/x402.service.js";
|
|
3
|
+
import { getAlexDexService, getZestProtocolService } from "../services/defi.service.js";
|
|
4
|
+
import { getExplorerTxUrl } from "../config/networks.js";
|
|
5
|
+
import { createJsonResponse, createErrorResponse } from "../utils/index.js";
|
|
6
|
+
export function registerDefiTools(server) {
|
|
7
|
+
// ==========================================================================
|
|
8
|
+
// ALEX DEX Tools
|
|
9
|
+
// ==========================================================================
|
|
10
|
+
// Get swap quote
|
|
11
|
+
server.registerTool("alex_get_swap_quote", {
|
|
12
|
+
description: `Get a swap quote from ALEX DEX.
|
|
13
|
+
|
|
14
|
+
Returns the expected output amount for swapping tokenX to tokenY.
|
|
15
|
+
Use full contract IDs for tokens (e.g., 'SP3K8BC0PPEVCV7NZ6QSRWPQ2JE9E5B6N3PA0KBR9.token-wstx-v2').
|
|
16
|
+
|
|
17
|
+
Note: ALEX DEX is only available on mainnet.`,
|
|
18
|
+
inputSchema: {
|
|
19
|
+
tokenX: z.string().describe("Input token contract ID"),
|
|
20
|
+
tokenY: z.string().describe("Output token contract ID"),
|
|
21
|
+
amountIn: z.string().describe("Amount of tokenX to swap (in smallest units)"),
|
|
22
|
+
},
|
|
23
|
+
}, async ({ tokenX, tokenY, amountIn }) => {
|
|
24
|
+
try {
|
|
25
|
+
if (NETWORK !== "mainnet") {
|
|
26
|
+
return createJsonResponse({
|
|
27
|
+
error: "ALEX DEX is only available on mainnet",
|
|
28
|
+
network: NETWORK,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
const alexService = getAlexDexService(NETWORK);
|
|
32
|
+
const walletAddress = await getWalletAddress();
|
|
33
|
+
const quote = await alexService.getSwapQuote(tokenX, tokenY, BigInt(amountIn), walletAddress);
|
|
34
|
+
return createJsonResponse({
|
|
35
|
+
network: NETWORK,
|
|
36
|
+
quote: {
|
|
37
|
+
tokenIn: quote.tokenIn,
|
|
38
|
+
tokenOut: quote.tokenOut,
|
|
39
|
+
amountIn: quote.amountIn,
|
|
40
|
+
expectedAmountOut: quote.amountOut,
|
|
41
|
+
route: quote.route,
|
|
42
|
+
},
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
catch (error) {
|
|
46
|
+
return createErrorResponse(error);
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
// Execute swap
|
|
50
|
+
server.registerTool("alex_swap", {
|
|
51
|
+
description: `Execute a token swap on ALEX DEX.
|
|
52
|
+
|
|
53
|
+
Swaps tokenX for tokenY using the ALEX AMM.
|
|
54
|
+
Use full contract IDs for tokens.
|
|
55
|
+
|
|
56
|
+
Note: ALEX DEX is only available on mainnet.`,
|
|
57
|
+
inputSchema: {
|
|
58
|
+
tokenX: z.string().describe("Input token contract ID"),
|
|
59
|
+
tokenY: z.string().describe("Output token contract ID"),
|
|
60
|
+
amountIn: z.string().describe("Amount of tokenX to swap (in smallest units)"),
|
|
61
|
+
minAmountOut: z
|
|
62
|
+
.string()
|
|
63
|
+
.optional()
|
|
64
|
+
.default("0")
|
|
65
|
+
.describe("Minimum acceptable output amount (slippage protection)"),
|
|
66
|
+
},
|
|
67
|
+
}, async ({ tokenX, tokenY, amountIn, minAmountOut }) => {
|
|
68
|
+
try {
|
|
69
|
+
if (NETWORK !== "mainnet") {
|
|
70
|
+
return createJsonResponse({
|
|
71
|
+
error: "ALEX DEX is only available on mainnet",
|
|
72
|
+
network: NETWORK,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
const alexService = getAlexDexService(NETWORK);
|
|
76
|
+
const account = await getAccount();
|
|
77
|
+
const result = await alexService.swap(account, tokenX, tokenY, BigInt(amountIn), BigInt(minAmountOut || "0"));
|
|
78
|
+
return createJsonResponse({
|
|
79
|
+
success: true,
|
|
80
|
+
txid: result.txid,
|
|
81
|
+
swap: {
|
|
82
|
+
tokenIn: tokenX,
|
|
83
|
+
tokenOut: tokenY,
|
|
84
|
+
amountIn,
|
|
85
|
+
minAmountOut: minAmountOut || "0",
|
|
86
|
+
},
|
|
87
|
+
network: NETWORK,
|
|
88
|
+
explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
catch (error) {
|
|
92
|
+
return createErrorResponse(error);
|
|
93
|
+
}
|
|
94
|
+
});
|
|
95
|
+
// Get pool info
|
|
96
|
+
server.registerTool("alex_get_pool_info", {
|
|
97
|
+
description: `Get liquidity pool information from ALEX DEX.
|
|
98
|
+
|
|
99
|
+
Returns reserve balances and pool details for a token pair.
|
|
100
|
+
|
|
101
|
+
Note: ALEX DEX is only available on mainnet.`,
|
|
102
|
+
inputSchema: {
|
|
103
|
+
tokenX: z.string().describe("First token contract ID"),
|
|
104
|
+
tokenY: z.string().describe("Second token contract ID"),
|
|
105
|
+
},
|
|
106
|
+
}, async ({ tokenX, tokenY }) => {
|
|
107
|
+
try {
|
|
108
|
+
if (NETWORK !== "mainnet") {
|
|
109
|
+
return createJsonResponse({
|
|
110
|
+
error: "ALEX DEX is only available on mainnet",
|
|
111
|
+
network: NETWORK,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
const alexService = getAlexDexService(NETWORK);
|
|
115
|
+
const walletAddress = await getWalletAddress();
|
|
116
|
+
const poolInfo = await alexService.getPoolInfo(tokenX, tokenY, walletAddress);
|
|
117
|
+
if (!poolInfo) {
|
|
118
|
+
return createJsonResponse({
|
|
119
|
+
error: "Pool not found or no liquidity",
|
|
120
|
+
tokenX,
|
|
121
|
+
tokenY,
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
return createJsonResponse({
|
|
125
|
+
network: NETWORK,
|
|
126
|
+
pool: poolInfo,
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
return createErrorResponse(error);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
// List available pools
|
|
134
|
+
server.registerTool("alex_list_pools", {
|
|
135
|
+
description: `List all available trading pools on ALEX DEX.
|
|
136
|
+
|
|
137
|
+
Discovers all token pairs that can be swapped directly.
|
|
138
|
+
Returns pool ID, token pair, and factor (fee tier) for each pool.
|
|
139
|
+
|
|
140
|
+
Use this to find which tokens can be swapped before calling alex_swap.
|
|
141
|
+
|
|
142
|
+
Note: ALEX DEX is only available on mainnet.`,
|
|
143
|
+
inputSchema: {
|
|
144
|
+
limit: z
|
|
145
|
+
.number()
|
|
146
|
+
.optional()
|
|
147
|
+
.default(50)
|
|
148
|
+
.describe("Maximum number of pools to return (default 50)"),
|
|
149
|
+
},
|
|
150
|
+
}, async ({ limit }) => {
|
|
151
|
+
try {
|
|
152
|
+
if (NETWORK !== "mainnet") {
|
|
153
|
+
return createJsonResponse({
|
|
154
|
+
error: "ALEX DEX is only available on mainnet",
|
|
155
|
+
network: NETWORK,
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
const alexService = getAlexDexService(NETWORK);
|
|
159
|
+
const pools = await alexService.listPools(limit || 50);
|
|
160
|
+
return createJsonResponse({
|
|
161
|
+
network: NETWORK,
|
|
162
|
+
poolCount: pools.length,
|
|
163
|
+
pools: pools.map((p) => ({
|
|
164
|
+
id: p.id,
|
|
165
|
+
pair: `${p.tokenXSymbol}/${p.tokenYSymbol}`,
|
|
166
|
+
tokenX: p.tokenX,
|
|
167
|
+
tokenY: p.tokenY,
|
|
168
|
+
factor: p.factor,
|
|
169
|
+
})),
|
|
170
|
+
usage: "Use the tokenX and tokenY contract IDs with alex_get_swap_quote or alex_swap",
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
return createErrorResponse(error);
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
// ==========================================================================
|
|
178
|
+
// Zest Protocol Tools
|
|
179
|
+
// ==========================================================================
|
|
180
|
+
// List available assets
|
|
181
|
+
server.registerTool("zest_list_assets", {
|
|
182
|
+
description: `List all supported assets on Zest Protocol.
|
|
183
|
+
|
|
184
|
+
Returns the list of assets that can be supplied, borrowed, or used as collateral.
|
|
185
|
+
Each asset includes its symbol, name, and contract ID.
|
|
186
|
+
|
|
187
|
+
Use this to discover available assets before supplying or borrowing.
|
|
188
|
+
|
|
189
|
+
Note: Zest Protocol is only available on mainnet.`,
|
|
190
|
+
inputSchema: {},
|
|
191
|
+
}, async () => {
|
|
192
|
+
try {
|
|
193
|
+
if (NETWORK !== "mainnet") {
|
|
194
|
+
return createJsonResponse({
|
|
195
|
+
error: "Zest Protocol is only available on mainnet",
|
|
196
|
+
network: NETWORK,
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
const zestService = getZestProtocolService(NETWORK);
|
|
200
|
+
const assets = await zestService.getAssets();
|
|
201
|
+
return createJsonResponse({
|
|
202
|
+
network: NETWORK,
|
|
203
|
+
assetCount: assets.length,
|
|
204
|
+
assets: assets.map((a) => ({
|
|
205
|
+
symbol: a.symbol,
|
|
206
|
+
name: a.name,
|
|
207
|
+
contractId: a.contractId,
|
|
208
|
+
})),
|
|
209
|
+
usage: "Use the symbol (e.g., 'stSTX') or full contract ID in other Zest commands",
|
|
210
|
+
});
|
|
211
|
+
}
|
|
212
|
+
catch (error) {
|
|
213
|
+
return createErrorResponse(error);
|
|
214
|
+
}
|
|
215
|
+
});
|
|
216
|
+
// Get user position
|
|
217
|
+
server.registerTool("zest_get_position", {
|
|
218
|
+
description: `Get user's lending position on Zest Protocol.
|
|
219
|
+
|
|
220
|
+
Returns supplied and borrowed amounts for a specific asset.
|
|
221
|
+
You can use the asset symbol (e.g., 'stSTX') or full contract ID.
|
|
222
|
+
|
|
223
|
+
Note: Zest Protocol is only available on mainnet.`,
|
|
224
|
+
inputSchema: {
|
|
225
|
+
asset: z.string().describe("Asset symbol (e.g., 'stSTX', 'aeUSDC') or full contract ID"),
|
|
226
|
+
address: z
|
|
227
|
+
.string()
|
|
228
|
+
.optional()
|
|
229
|
+
.describe("User address (uses wallet if not specified)"),
|
|
230
|
+
},
|
|
231
|
+
}, async ({ asset, address }) => {
|
|
232
|
+
try {
|
|
233
|
+
if (NETWORK !== "mainnet") {
|
|
234
|
+
return createJsonResponse({
|
|
235
|
+
error: "Zest Protocol is only available on mainnet",
|
|
236
|
+
network: NETWORK,
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
const zestService = getZestProtocolService(NETWORK);
|
|
240
|
+
const resolvedAsset = await zestService.resolveAsset(asset);
|
|
241
|
+
const userAddress = address || (await getWalletAddress());
|
|
242
|
+
const position = await zestService.getUserPosition(resolvedAsset, userAddress);
|
|
243
|
+
if (!position) {
|
|
244
|
+
return createJsonResponse({
|
|
245
|
+
address: userAddress,
|
|
246
|
+
asset: resolvedAsset,
|
|
247
|
+
position: null,
|
|
248
|
+
message: "No position found for this asset",
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
return createJsonResponse({
|
|
252
|
+
network: NETWORK,
|
|
253
|
+
address: userAddress,
|
|
254
|
+
position,
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
return createErrorResponse(error);
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
// Supply to Zest
|
|
262
|
+
server.registerTool("zest_supply", {
|
|
263
|
+
description: `Supply assets to Zest Protocol lending pool.
|
|
264
|
+
|
|
265
|
+
Deposits assets to earn interest from borrowers.
|
|
266
|
+
You can use the asset symbol (e.g., 'stSTX') or full contract ID.
|
|
267
|
+
|
|
268
|
+
Note: Zest Protocol is only available on mainnet.`,
|
|
269
|
+
inputSchema: {
|
|
270
|
+
asset: z.string().describe("Asset symbol (e.g., 'stSTX', 'aeUSDC') or full contract ID"),
|
|
271
|
+
amount: z.string().describe("Amount to supply (in smallest units)"),
|
|
272
|
+
onBehalfOf: z
|
|
273
|
+
.string()
|
|
274
|
+
.optional()
|
|
275
|
+
.describe("Optional: supply on behalf of another address"),
|
|
276
|
+
},
|
|
277
|
+
}, async ({ asset, amount, onBehalfOf }) => {
|
|
278
|
+
try {
|
|
279
|
+
if (NETWORK !== "mainnet") {
|
|
280
|
+
return createJsonResponse({
|
|
281
|
+
error: "Zest Protocol is only available on mainnet",
|
|
282
|
+
network: NETWORK,
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
const zestService = getZestProtocolService(NETWORK);
|
|
286
|
+
const resolvedAsset = await zestService.resolveAsset(asset);
|
|
287
|
+
const account = await getAccount();
|
|
288
|
+
const result = await zestService.supply(account, resolvedAsset, BigInt(amount), onBehalfOf);
|
|
289
|
+
return createJsonResponse({
|
|
290
|
+
success: true,
|
|
291
|
+
txid: result.txid,
|
|
292
|
+
action: "supply",
|
|
293
|
+
asset: resolvedAsset,
|
|
294
|
+
amount,
|
|
295
|
+
onBehalfOf: onBehalfOf || account.address,
|
|
296
|
+
network: NETWORK,
|
|
297
|
+
explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
|
|
298
|
+
});
|
|
299
|
+
}
|
|
300
|
+
catch (error) {
|
|
301
|
+
return createErrorResponse(error);
|
|
302
|
+
}
|
|
303
|
+
});
|
|
304
|
+
// Withdraw from Zest
|
|
305
|
+
server.registerTool("zest_withdraw", {
|
|
306
|
+
description: `Withdraw assets from Zest Protocol lending pool.
|
|
307
|
+
|
|
308
|
+
Redeems supplied assets plus earned interest.
|
|
309
|
+
You can use the asset symbol (e.g., 'stSTX') or full contract ID.
|
|
310
|
+
|
|
311
|
+
Note: Zest Protocol is only available on mainnet.`,
|
|
312
|
+
inputSchema: {
|
|
313
|
+
asset: z.string().describe("Asset symbol (e.g., 'stSTX', 'aeUSDC') or full contract ID"),
|
|
314
|
+
amount: z.string().describe("Amount to withdraw (in smallest units)"),
|
|
315
|
+
},
|
|
316
|
+
}, async ({ asset, amount }) => {
|
|
317
|
+
try {
|
|
318
|
+
if (NETWORK !== "mainnet") {
|
|
319
|
+
return createJsonResponse({
|
|
320
|
+
error: "Zest Protocol is only available on mainnet",
|
|
321
|
+
network: NETWORK,
|
|
322
|
+
});
|
|
323
|
+
}
|
|
324
|
+
const zestService = getZestProtocolService(NETWORK);
|
|
325
|
+
const resolvedAsset = await zestService.resolveAsset(asset);
|
|
326
|
+
const account = await getAccount();
|
|
327
|
+
const result = await zestService.withdraw(account, resolvedAsset, BigInt(amount));
|
|
328
|
+
return createJsonResponse({
|
|
329
|
+
success: true,
|
|
330
|
+
txid: result.txid,
|
|
331
|
+
action: "withdraw",
|
|
332
|
+
asset: resolvedAsset,
|
|
333
|
+
amount,
|
|
334
|
+
network: NETWORK,
|
|
335
|
+
explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
catch (error) {
|
|
339
|
+
return createErrorResponse(error);
|
|
340
|
+
}
|
|
341
|
+
});
|
|
342
|
+
// Borrow from Zest
|
|
343
|
+
server.registerTool("zest_borrow", {
|
|
344
|
+
description: `Borrow assets from Zest Protocol.
|
|
345
|
+
|
|
346
|
+
Borrows assets against your supplied collateral.
|
|
347
|
+
Ensure you have sufficient collateral to maintain a healthy position.
|
|
348
|
+
You can use the asset symbol (e.g., 'aeUSDC') or full contract ID.
|
|
349
|
+
|
|
350
|
+
Note: Zest Protocol is only available on mainnet.`,
|
|
351
|
+
inputSchema: {
|
|
352
|
+
asset: z.string().describe("Asset symbol (e.g., 'stSTX', 'aeUSDC') or full contract ID"),
|
|
353
|
+
amount: z.string().describe("Amount to borrow (in smallest units)"),
|
|
354
|
+
},
|
|
355
|
+
}, async ({ asset, amount }) => {
|
|
356
|
+
try {
|
|
357
|
+
if (NETWORK !== "mainnet") {
|
|
358
|
+
return createJsonResponse({
|
|
359
|
+
error: "Zest Protocol is only available on mainnet",
|
|
360
|
+
network: NETWORK,
|
|
361
|
+
});
|
|
362
|
+
}
|
|
363
|
+
const zestService = getZestProtocolService(NETWORK);
|
|
364
|
+
const resolvedAsset = await zestService.resolveAsset(asset);
|
|
365
|
+
const account = await getAccount();
|
|
366
|
+
const result = await zestService.borrow(account, resolvedAsset, BigInt(amount));
|
|
367
|
+
return createJsonResponse({
|
|
368
|
+
success: true,
|
|
369
|
+
txid: result.txid,
|
|
370
|
+
action: "borrow",
|
|
371
|
+
asset: resolvedAsset,
|
|
372
|
+
amount,
|
|
373
|
+
network: NETWORK,
|
|
374
|
+
explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
|
|
375
|
+
});
|
|
376
|
+
}
|
|
377
|
+
catch (error) {
|
|
378
|
+
return createErrorResponse(error);
|
|
379
|
+
}
|
|
380
|
+
});
|
|
381
|
+
// Repay to Zest
|
|
382
|
+
server.registerTool("zest_repay", {
|
|
383
|
+
description: `Repay borrowed assets to Zest Protocol.
|
|
384
|
+
|
|
385
|
+
Repays borrowed assets plus accrued interest.
|
|
386
|
+
You can use the asset symbol (e.g., 'aeUSDC') or full contract ID.
|
|
387
|
+
|
|
388
|
+
Note: Zest Protocol is only available on mainnet.`,
|
|
389
|
+
inputSchema: {
|
|
390
|
+
asset: z.string().describe("Asset symbol (e.g., 'stSTX', 'aeUSDC') or full contract ID"),
|
|
391
|
+
amount: z.string().describe("Amount to repay (in smallest units)"),
|
|
392
|
+
onBehalfOf: z
|
|
393
|
+
.string()
|
|
394
|
+
.optional()
|
|
395
|
+
.describe("Optional: repay on behalf of another address"),
|
|
396
|
+
},
|
|
397
|
+
}, async ({ asset, amount, onBehalfOf }) => {
|
|
398
|
+
try {
|
|
399
|
+
if (NETWORK !== "mainnet") {
|
|
400
|
+
return createJsonResponse({
|
|
401
|
+
error: "Zest Protocol is only available on mainnet",
|
|
402
|
+
network: NETWORK,
|
|
403
|
+
});
|
|
404
|
+
}
|
|
405
|
+
const zestService = getZestProtocolService(NETWORK);
|
|
406
|
+
const resolvedAsset = await zestService.resolveAsset(asset);
|
|
407
|
+
const account = await getAccount();
|
|
408
|
+
const result = await zestService.repay(account, resolvedAsset, BigInt(amount), onBehalfOf);
|
|
409
|
+
return createJsonResponse({
|
|
410
|
+
success: true,
|
|
411
|
+
txid: result.txid,
|
|
412
|
+
action: "repay",
|
|
413
|
+
asset: resolvedAsset,
|
|
414
|
+
amount,
|
|
415
|
+
onBehalfOf: onBehalfOf || account.address,
|
|
416
|
+
network: NETWORK,
|
|
417
|
+
explorerUrl: getExplorerTxUrl(result.txid, NETWORK),
|
|
418
|
+
});
|
|
419
|
+
}
|
|
420
|
+
catch (error) {
|
|
421
|
+
return createErrorResponse(error);
|
|
422
|
+
}
|
|
423
|
+
});
|
|
424
|
+
}
|
|
425
|
+
//# sourceMappingURL=defi.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"defi.tools.js","sourceRoot":"","sources":["../../src/tools/defi.tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint.tools.d.ts","sourceRoot":"","sources":["../../src/tools/endpoint.tools.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAYpE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CAuK7D"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { createApiClient, API_URL } from "../services/x402.service.js";
|
|
3
|
+
import { ALL_ENDPOINTS, searchEndpoints, formatEndpointsTable, getEndpointsBySource, getCategories, } from "../endpoints/registry.js";
|
|
4
|
+
import { createJsonResponse, createErrorResponse } from "../utils/index.js";
|
|
5
|
+
export function registerEndpointTools(server) {
|
|
6
|
+
// List x402 endpoints
|
|
7
|
+
server.registerTool("list_x402_endpoints", {
|
|
8
|
+
description: `List known x402 API endpoints from x402.biwas.xyz and stx402.com.
|
|
9
|
+
|
|
10
|
+
The agent can:
|
|
11
|
+
1. Execute x402 endpoints from these sources (paid API calls with automatic payment handling)
|
|
12
|
+
2. Execute direct Stacks transactions (transfer STX, call contracts, deploy contracts)
|
|
13
|
+
|
|
14
|
+
Sources:
|
|
15
|
+
- x402.biwas.xyz: DeFi analytics, market data, wallet analysis, Zest/ALEX protocols
|
|
16
|
+
- stx402.com: AI services, cryptography, storage, utilities, agent registry`,
|
|
17
|
+
inputSchema: {
|
|
18
|
+
source: z
|
|
19
|
+
.enum(["x402.biwas.xyz", "stx402.com", "all"])
|
|
20
|
+
.optional()
|
|
21
|
+
.default("all")
|
|
22
|
+
.describe("Filter by API source"),
|
|
23
|
+
category: z
|
|
24
|
+
.string()
|
|
25
|
+
.optional()
|
|
26
|
+
.describe("Filter by category (use without value to see available categories)"),
|
|
27
|
+
search: z
|
|
28
|
+
.string()
|
|
29
|
+
.optional()
|
|
30
|
+
.describe("Search endpoints by keyword (searches path, description, category)"),
|
|
31
|
+
showFreeOnly: z
|
|
32
|
+
.boolean()
|
|
33
|
+
.optional()
|
|
34
|
+
.describe("Only show free endpoints (no payment required)"),
|
|
35
|
+
showPaidOnly: z
|
|
36
|
+
.boolean()
|
|
37
|
+
.optional()
|
|
38
|
+
.describe("Only show paid endpoints (require x402 payment)"),
|
|
39
|
+
},
|
|
40
|
+
}, async ({ source, category, search, showFreeOnly, showPaidOnly }) => {
|
|
41
|
+
try {
|
|
42
|
+
let endpoints = ALL_ENDPOINTS;
|
|
43
|
+
if (source && source !== "all") {
|
|
44
|
+
endpoints = getEndpointsBySource(source);
|
|
45
|
+
}
|
|
46
|
+
if (showFreeOnly) {
|
|
47
|
+
endpoints = endpoints.filter((ep) => ep.cost === "FREE");
|
|
48
|
+
}
|
|
49
|
+
else if (showPaidOnly) {
|
|
50
|
+
endpoints = endpoints.filter((ep) => ep.cost !== "FREE");
|
|
51
|
+
}
|
|
52
|
+
if (category) {
|
|
53
|
+
endpoints = endpoints.filter((ep) => ep.category.toLowerCase() === category.toLowerCase());
|
|
54
|
+
}
|
|
55
|
+
if (search) {
|
|
56
|
+
const searchResults = searchEndpoints(search);
|
|
57
|
+
endpoints = endpoints.filter((ep) => searchResults.includes(ep));
|
|
58
|
+
}
|
|
59
|
+
if (endpoints.length === 0) {
|
|
60
|
+
const categories = getCategories();
|
|
61
|
+
return {
|
|
62
|
+
content: [
|
|
63
|
+
{
|
|
64
|
+
type: "text",
|
|
65
|
+
text: `No endpoints found matching your criteria.
|
|
66
|
+
|
|
67
|
+
Available categories: ${categories.join(", ")}
|
|
68
|
+
|
|
69
|
+
Sources: x402.biwas.xyz, stx402.com
|
|
70
|
+
|
|
71
|
+
If you're looking to perform a direct blockchain action (transfer STX, call a contract), those are available via separate tools.`,
|
|
72
|
+
},
|
|
73
|
+
],
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
const formatted = formatEndpointsTable(endpoints);
|
|
77
|
+
const sourceInfo = source === "all"
|
|
78
|
+
? "Sources: x402.biwas.xyz, stx402.com"
|
|
79
|
+
: `Source: ${source}`;
|
|
80
|
+
return {
|
|
81
|
+
content: [
|
|
82
|
+
{
|
|
83
|
+
type: "text",
|
|
84
|
+
text: `# Available x402 Endpoints (${endpoints.length} total)\n\n${sourceInfo}\nDefault API: ${API_URL}\n${formatted}\n\n---\nUse execute_x402_endpoint to call any of these endpoints.`,
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
return createErrorResponse(error);
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
// Execute x402 endpoint
|
|
94
|
+
server.registerTool("execute_x402_endpoint", {
|
|
95
|
+
description: `Execute an x402 API endpoint. Payment is handled automatically.
|
|
96
|
+
|
|
97
|
+
Supported sources:
|
|
98
|
+
- x402.biwas.xyz (default): Use path like "/api/pools/trending"
|
|
99
|
+
- stx402.com: Use apiUrl="https://stx402.com" with path like "/api/ai/dad-joke"
|
|
100
|
+
|
|
101
|
+
Use list_x402_endpoints to discover available endpoints.`,
|
|
102
|
+
inputSchema: {
|
|
103
|
+
method: z
|
|
104
|
+
.enum(["GET", "POST", "PUT", "DELETE"])
|
|
105
|
+
.default("GET")
|
|
106
|
+
.describe("HTTP method"),
|
|
107
|
+
path: z.string().describe("API endpoint path (e.g., '/api/pools/trending')"),
|
|
108
|
+
apiUrl: z
|
|
109
|
+
.enum(["https://x402.biwas.xyz", "https://stx402.com"])
|
|
110
|
+
.optional()
|
|
111
|
+
.describe("API base URL. Defaults to configured API_URL (x402.biwas.xyz)."),
|
|
112
|
+
params: z
|
|
113
|
+
.record(z.string(), z.string())
|
|
114
|
+
.optional()
|
|
115
|
+
.describe("Query parameters for GET requests"),
|
|
116
|
+
data: z
|
|
117
|
+
.record(z.string(), z.unknown())
|
|
118
|
+
.optional()
|
|
119
|
+
.describe("Request body for POST/PUT requests"),
|
|
120
|
+
},
|
|
121
|
+
}, async ({ method, path, apiUrl, params, data }) => {
|
|
122
|
+
try {
|
|
123
|
+
const baseUrl = apiUrl || API_URL;
|
|
124
|
+
const api = await createApiClient(baseUrl);
|
|
125
|
+
const response = await api.request({
|
|
126
|
+
method,
|
|
127
|
+
url: path,
|
|
128
|
+
params,
|
|
129
|
+
data,
|
|
130
|
+
});
|
|
131
|
+
return createJsonResponse({
|
|
132
|
+
endpoint: `${method} ${baseUrl}${path}`,
|
|
133
|
+
response: response.data,
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
catch (error) {
|
|
137
|
+
let message = "Unknown error";
|
|
138
|
+
if (error instanceof Error) {
|
|
139
|
+
message = error.message;
|
|
140
|
+
}
|
|
141
|
+
const axiosError = error;
|
|
142
|
+
if (axiosError.response) {
|
|
143
|
+
if (axiosError.response.status === 404) {
|
|
144
|
+
message = `Endpoint not found: ${path}. Use list_x402_endpoints to see available endpoints.`;
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
message = `HTTP ${axiosError.response.status}: ${JSON.stringify(axiosError.response.data)}`;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return {
|
|
151
|
+
content: [{ type: "text", text: `Error: ${message}` }],
|
|
152
|
+
isError: true,
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=endpoint.tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"endpoint.tools.js","sourceRoot":"","sources":["../../src/tools/endpoint.tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAmBpE;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,GAAG,IAAI,CA6CxD"}
|