@continuumdao/ctm-mpc-defi 0.2.54 → 0.2.56
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/dist/agent/catalog.cjs +398 -180
- package/dist/agent/catalog.cjs.map +1 -1
- package/dist/agent/catalog.d.ts +118 -58
- package/dist/agent/catalog.js +395 -182
- package/dist/agent/catalog.js.map +1 -1
- package/dist/agent/skills/circle-cctp/SKILL.md +5 -4
- package/dist/agent/skills/continuum-dao/SKILL.md +2 -2
- package/dist/agent/skills/continuum-dao-marketplace/SKILL.md +4 -4
- package/dist/protocols/evm/circle-cctp/index.cjs +77 -19
- package/dist/protocols/evm/circle-cctp/index.cjs.map +1 -1
- package/dist/protocols/evm/circle-cctp/index.d.ts +53 -3
- package/dist/protocols/evm/circle-cctp/index.js +76 -20
- package/dist/protocols/evm/circle-cctp/index.js.map +1 -1
- package/dist/protocols/evm/continuum-dao/index.cjs +304 -35
- package/dist/protocols/evm/continuum-dao/index.cjs.map +1 -1
- package/dist/protocols/evm/continuum-dao/index.d.ts +14 -1
- package/dist/protocols/evm/continuum-dao/index.js +303 -36
- package/dist/protocols/evm/continuum-dao/index.js.map +1 -1
- package/package.json +1 -1
package/dist/agent/catalog.cjs
CHANGED
|
@@ -103,6 +103,110 @@ var init_defiProxy = __esm({
|
|
|
103
103
|
"src/core/defiProxy.ts"() {
|
|
104
104
|
}
|
|
105
105
|
});
|
|
106
|
+
function isConfiguredAddress(addr) {
|
|
107
|
+
if (!addr?.trim()) return false;
|
|
108
|
+
try {
|
|
109
|
+
return viem.getAddress(addr) !== viem.zeroAddress;
|
|
110
|
+
} catch {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function continuumDaoDeployment(chainId) {
|
|
115
|
+
return CONTINUUM_DAO_DEPLOYMENTS[chainId] ?? null;
|
|
116
|
+
}
|
|
117
|
+
function isContinuumDaoLockChain(chainId) {
|
|
118
|
+
return chainId === CONTINUUM_DAO_LINEA_CHAIN_ID || chainId === CONTINUUM_DAO_LINEA_SEPOLIA_CHAIN_ID;
|
|
119
|
+
}
|
|
120
|
+
function isContinuumDaoSupportedChainId(chainId) {
|
|
121
|
+
return continuumDaoDeployment(chainId) != null;
|
|
122
|
+
}
|
|
123
|
+
function ctmTokenAddressOnEvmChain(chainId) {
|
|
124
|
+
const ctm = continuumDaoDeployment(chainId)?.ctm;
|
|
125
|
+
return ctm && isConfiguredAddress(ctm) ? viem.getAddress(ctm) : null;
|
|
126
|
+
}
|
|
127
|
+
function votingEscrowAddressOnEvmChain(chainId) {
|
|
128
|
+
const ve = continuumDaoDeployment(chainId)?.votingEscrow;
|
|
129
|
+
return ve && isConfiguredAddress(ve) ? viem.getAddress(ve) : null;
|
|
130
|
+
}
|
|
131
|
+
function votingEscrowMarketplaceAddressOnEvmChain(chainId) {
|
|
132
|
+
if (chainId !== CONTINUUM_DAO_LINEA_CHAIN_ID) return null;
|
|
133
|
+
return VOTING_ESCROW_MARKETPLACE_LINEA_ADDRESS;
|
|
134
|
+
}
|
|
135
|
+
function listContinuumDaoDefaultAssets() {
|
|
136
|
+
const out = [];
|
|
137
|
+
for (const chainId of [
|
|
138
|
+
CONTINUUM_DAO_LINEA_CHAIN_ID,
|
|
139
|
+
CONTINUUM_DAO_LINEA_SEPOLIA_CHAIN_ID,
|
|
140
|
+
CONTINUUM_DAO_ETHEREUM_CHAIN_ID
|
|
141
|
+
]) {
|
|
142
|
+
const dep = continuumDaoDeployment(chainId);
|
|
143
|
+
if (!dep) continue;
|
|
144
|
+
if (isConfiguredAddress(dep.ctm)) {
|
|
145
|
+
out.push({
|
|
146
|
+
chainId,
|
|
147
|
+
tokenType: "CTMERC20",
|
|
148
|
+
contractAddress: viem.getAddress(dep.ctm),
|
|
149
|
+
name: CTM_TOKEN_NAME,
|
|
150
|
+
symbol: CTM_TOKEN_SYMBOL,
|
|
151
|
+
decimals: CTM_TOKEN_DECIMALS
|
|
152
|
+
});
|
|
153
|
+
}
|
|
154
|
+
if (isContinuumDaoLockChain(chainId) && isConfiguredAddress(dep.votingEscrow)) {
|
|
155
|
+
out.push({
|
|
156
|
+
chainId,
|
|
157
|
+
tokenType: "ERC721",
|
|
158
|
+
contractAddress: viem.getAddress(dep.votingEscrow),
|
|
159
|
+
name: VECTM_TOKEN_NAME,
|
|
160
|
+
symbol: VECTM_TOKEN_SYMBOL
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return out;
|
|
165
|
+
}
|
|
166
|
+
var CONTINUUM_DAO_PROTOCOL_ID, CONTINUUM_DAO_ETHEREUM_CHAIN_ID, CONTINUUM_DAO_LINEA_CHAIN_ID, CONTINUUM_DAO_LINEA_SEPOLIA_CHAIN_ID, CTM_TOKEN_NAME, CTM_TOKEN_SYMBOL, VECTM_TOKEN_NAME, VECTM_TOKEN_SYMBOL, CTM_TOKEN_DECIMALS, WEEK_SECONDS, UNSET, CTM_TOKEN_ADDRESS, VOTING_ESCROW_LINEA_ADDRESS, VOTING_ESCROW_MARKETPLACE_LINEA_ADDRESS, MARKETPLACE_WETH_LINEA_ADDRESS, MARKETPLACE_USDC_LINEA_ADDRESS, CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, CONTINUUM_DAO_LINEA_GOVERNOR_ADDRESS, CONTINUUM_DAO_DEPLOYMENTS;
|
|
167
|
+
var init_constants = __esm({
|
|
168
|
+
"src/protocols/evm/continuum-dao/constants.ts"() {
|
|
169
|
+
CONTINUUM_DAO_PROTOCOL_ID = "continuum-dao";
|
|
170
|
+
CONTINUUM_DAO_ETHEREUM_CHAIN_ID = 1;
|
|
171
|
+
CONTINUUM_DAO_LINEA_CHAIN_ID = 59144;
|
|
172
|
+
CONTINUUM_DAO_LINEA_SEPOLIA_CHAIN_ID = 59141;
|
|
173
|
+
CTM_TOKEN_NAME = "Continuum";
|
|
174
|
+
CTM_TOKEN_SYMBOL = "CTM";
|
|
175
|
+
VECTM_TOKEN_NAME = "Voting Escrow Continuum";
|
|
176
|
+
VECTM_TOKEN_SYMBOL = "veCTM";
|
|
177
|
+
CTM_TOKEN_DECIMALS = 18;
|
|
178
|
+
WEEK_SECONDS = 7 * 86400;
|
|
179
|
+
UNSET = {
|
|
180
|
+
ctm: viem.zeroAddress,
|
|
181
|
+
votingEscrow: viem.zeroAddress,
|
|
182
|
+
nodeProperties: viem.zeroAddress,
|
|
183
|
+
rewards: viem.zeroAddress,
|
|
184
|
+
governor: viem.zeroAddress
|
|
185
|
+
};
|
|
186
|
+
CTM_TOKEN_ADDRESS = viem.getAddress("0x2026027054F5beBCEB650aBD62dC623e327658e7");
|
|
187
|
+
VOTING_ESCROW_LINEA_ADDRESS = viem.getAddress("0x221EC90B3B083A8501A37bdeb7035CeaedF3C31f");
|
|
188
|
+
viem.getAddress("0x4ebd7cCBe32a51d1638cFE90E8eD1c4BdF42f729");
|
|
189
|
+
VOTING_ESCROW_MARKETPLACE_LINEA_ADDRESS = viem.getAddress("0x92557d38beAe4658d3c03A02F349FFB60c3bfFA5");
|
|
190
|
+
MARKETPLACE_WETH_LINEA_ADDRESS = viem.getAddress("0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f");
|
|
191
|
+
MARKETPLACE_USDC_LINEA_ADDRESS = viem.getAddress("0x176211869cA2b568f2A7D4EE941E073a821EE1ff");
|
|
192
|
+
CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID = "continuum-dao-marketplace";
|
|
193
|
+
CONTINUUM_DAO_LINEA_GOVERNOR_ADDRESS = viem.getAddress("0x76FF2CB03175900F1D83328C82D27EA9aeaF2355");
|
|
194
|
+
viem.getAddress("0x4800F9f1dC1b6daCA841B71E0531F547D374168E");
|
|
195
|
+
CONTINUUM_DAO_DEPLOYMENTS = {
|
|
196
|
+
[CONTINUUM_DAO_LINEA_CHAIN_ID]: {
|
|
197
|
+
...UNSET,
|
|
198
|
+
ctm: CTM_TOKEN_ADDRESS,
|
|
199
|
+
votingEscrow: VOTING_ESCROW_LINEA_ADDRESS,
|
|
200
|
+
governor: CONTINUUM_DAO_LINEA_GOVERNOR_ADDRESS
|
|
201
|
+
},
|
|
202
|
+
[CONTINUUM_DAO_LINEA_SEPOLIA_CHAIN_ID]: { ...UNSET },
|
|
203
|
+
[CONTINUUM_DAO_ETHEREUM_CHAIN_ID]: {
|
|
204
|
+
...UNSET,
|
|
205
|
+
ctm: CTM_TOKEN_ADDRESS
|
|
206
|
+
}
|
|
207
|
+
};
|
|
208
|
+
}
|
|
209
|
+
});
|
|
106
210
|
|
|
107
211
|
// src/protocols/evm/arcus/support.ts
|
|
108
212
|
function isArcusChainSupported(chainId) {
|
|
@@ -117,7 +221,7 @@ var init_support = __esm({
|
|
|
117
221
|
|
|
118
222
|
// src/protocols/evm/arcus/constants.ts
|
|
119
223
|
var ARCUS_PROTOCOL_ID;
|
|
120
|
-
var
|
|
224
|
+
var init_constants2 = __esm({
|
|
121
225
|
"src/protocols/evm/arcus/constants.ts"() {
|
|
122
226
|
ARCUS_PROTOCOL_ID = "arcus";
|
|
123
227
|
}
|
|
@@ -513,109 +617,6 @@ var init_yields = __esm({
|
|
|
513
617
|
);
|
|
514
618
|
}
|
|
515
619
|
});
|
|
516
|
-
function isConfiguredAddress(addr) {
|
|
517
|
-
if (!addr?.trim()) return false;
|
|
518
|
-
try {
|
|
519
|
-
return viem.getAddress(addr) !== viem.zeroAddress;
|
|
520
|
-
} catch {
|
|
521
|
-
return false;
|
|
522
|
-
}
|
|
523
|
-
}
|
|
524
|
-
function continuumDaoDeployment(chainId) {
|
|
525
|
-
return CONTINUUM_DAO_DEPLOYMENTS[chainId] ?? null;
|
|
526
|
-
}
|
|
527
|
-
function isContinuumDaoLockChain(chainId) {
|
|
528
|
-
return chainId === CONTINUUM_DAO_LINEA_CHAIN_ID || chainId === CONTINUUM_DAO_LINEA_SEPOLIA_CHAIN_ID;
|
|
529
|
-
}
|
|
530
|
-
function isContinuumDaoSupportedChainId(chainId) {
|
|
531
|
-
return continuumDaoDeployment(chainId) != null;
|
|
532
|
-
}
|
|
533
|
-
function ctmTokenAddressOnEvmChain(chainId) {
|
|
534
|
-
const ctm = continuumDaoDeployment(chainId)?.ctm;
|
|
535
|
-
return ctm && isConfiguredAddress(ctm) ? viem.getAddress(ctm) : null;
|
|
536
|
-
}
|
|
537
|
-
function votingEscrowAddressOnEvmChain(chainId) {
|
|
538
|
-
const ve = continuumDaoDeployment(chainId)?.votingEscrow;
|
|
539
|
-
return ve && isConfiguredAddress(ve) ? viem.getAddress(ve) : null;
|
|
540
|
-
}
|
|
541
|
-
function votingEscrowMarketplaceAddressOnEvmChain(chainId) {
|
|
542
|
-
if (chainId !== CONTINUUM_DAO_LINEA_CHAIN_ID) return null;
|
|
543
|
-
return VOTING_ESCROW_MARKETPLACE_LINEA_ADDRESS;
|
|
544
|
-
}
|
|
545
|
-
function listContinuumDaoDefaultAssets() {
|
|
546
|
-
const out = [];
|
|
547
|
-
for (const chainId of [
|
|
548
|
-
CONTINUUM_DAO_LINEA_CHAIN_ID,
|
|
549
|
-
CONTINUUM_DAO_LINEA_SEPOLIA_CHAIN_ID,
|
|
550
|
-
CONTINUUM_DAO_ETHEREUM_CHAIN_ID
|
|
551
|
-
]) {
|
|
552
|
-
const dep = continuumDaoDeployment(chainId);
|
|
553
|
-
if (!dep) continue;
|
|
554
|
-
if (isConfiguredAddress(dep.ctm)) {
|
|
555
|
-
out.push({
|
|
556
|
-
chainId,
|
|
557
|
-
tokenType: "CTMERC20",
|
|
558
|
-
contractAddress: viem.getAddress(dep.ctm),
|
|
559
|
-
name: CTM_TOKEN_NAME,
|
|
560
|
-
symbol: CTM_TOKEN_SYMBOL,
|
|
561
|
-
decimals: CTM_TOKEN_DECIMALS
|
|
562
|
-
});
|
|
563
|
-
}
|
|
564
|
-
if (isContinuumDaoLockChain(chainId) && isConfiguredAddress(dep.votingEscrow)) {
|
|
565
|
-
out.push({
|
|
566
|
-
chainId,
|
|
567
|
-
tokenType: "ERC721",
|
|
568
|
-
contractAddress: viem.getAddress(dep.votingEscrow),
|
|
569
|
-
name: VECTM_TOKEN_NAME,
|
|
570
|
-
symbol: VECTM_TOKEN_SYMBOL
|
|
571
|
-
});
|
|
572
|
-
}
|
|
573
|
-
}
|
|
574
|
-
return out;
|
|
575
|
-
}
|
|
576
|
-
var CONTINUUM_DAO_PROTOCOL_ID, CONTINUUM_DAO_ETHEREUM_CHAIN_ID, CONTINUUM_DAO_LINEA_CHAIN_ID, CONTINUUM_DAO_LINEA_SEPOLIA_CHAIN_ID, CTM_TOKEN_NAME, CTM_TOKEN_SYMBOL, VECTM_TOKEN_NAME, VECTM_TOKEN_SYMBOL, CTM_TOKEN_DECIMALS, UNSET, CTM_TOKEN_ADDRESS, VOTING_ESCROW_LINEA_ADDRESS, VOTING_ESCROW_MARKETPLACE_LINEA_ADDRESS, CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID, CONTINUUM_DAO_LINEA_GOVERNOR_ADDRESS, CONTINUUM_DAO_DEPLOYMENTS;
|
|
577
|
-
var init_constants2 = __esm({
|
|
578
|
-
"src/protocols/evm/continuum-dao/constants.ts"() {
|
|
579
|
-
CONTINUUM_DAO_PROTOCOL_ID = "continuum-dao";
|
|
580
|
-
CONTINUUM_DAO_ETHEREUM_CHAIN_ID = 1;
|
|
581
|
-
CONTINUUM_DAO_LINEA_CHAIN_ID = 59144;
|
|
582
|
-
CONTINUUM_DAO_LINEA_SEPOLIA_CHAIN_ID = 59141;
|
|
583
|
-
CTM_TOKEN_NAME = "Continuum";
|
|
584
|
-
CTM_TOKEN_SYMBOL = "CTM";
|
|
585
|
-
VECTM_TOKEN_NAME = "Voting Escrow Continuum";
|
|
586
|
-
VECTM_TOKEN_SYMBOL = "veCTM";
|
|
587
|
-
CTM_TOKEN_DECIMALS = 18;
|
|
588
|
-
UNSET = {
|
|
589
|
-
ctm: viem.zeroAddress,
|
|
590
|
-
votingEscrow: viem.zeroAddress,
|
|
591
|
-
nodeProperties: viem.zeroAddress,
|
|
592
|
-
rewards: viem.zeroAddress,
|
|
593
|
-
governor: viem.zeroAddress
|
|
594
|
-
};
|
|
595
|
-
CTM_TOKEN_ADDRESS = viem.getAddress("0x2026027054F5beBCEB650aBD62dC623e327658e7");
|
|
596
|
-
VOTING_ESCROW_LINEA_ADDRESS = viem.getAddress("0x221EC90B3B083A8501A37bdeb7035CeaedF3C31f");
|
|
597
|
-
viem.getAddress("0x4ebd7cCBe32a51d1638cFE90E8eD1c4BdF42f729");
|
|
598
|
-
VOTING_ESCROW_MARKETPLACE_LINEA_ADDRESS = viem.getAddress("0x92557d38beAe4658d3c03A02F349FFB60c3bfFA5");
|
|
599
|
-
viem.getAddress("0xe5D7C2a44FfDDf6b295A15c148167daaAf5Cf34f");
|
|
600
|
-
viem.getAddress("0x176211869cA2b568f2A7D4EE941E073a821EE1ff");
|
|
601
|
-
CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID = "continuum-dao-marketplace";
|
|
602
|
-
CONTINUUM_DAO_LINEA_GOVERNOR_ADDRESS = viem.getAddress("0x76FF2CB03175900F1D83328C82D27EA9aeaF2355");
|
|
603
|
-
viem.getAddress("0x4800F9f1dC1b6daCA841B71E0531F547D374168E");
|
|
604
|
-
CONTINUUM_DAO_DEPLOYMENTS = {
|
|
605
|
-
[CONTINUUM_DAO_LINEA_CHAIN_ID]: {
|
|
606
|
-
...UNSET,
|
|
607
|
-
ctm: CTM_TOKEN_ADDRESS,
|
|
608
|
-
votingEscrow: VOTING_ESCROW_LINEA_ADDRESS,
|
|
609
|
-
governor: CONTINUUM_DAO_LINEA_GOVERNOR_ADDRESS
|
|
610
|
-
},
|
|
611
|
-
[CONTINUUM_DAO_LINEA_SEPOLIA_CHAIN_ID]: { ...UNSET },
|
|
612
|
-
[CONTINUUM_DAO_ETHEREUM_CHAIN_ID]: {
|
|
613
|
-
...UNSET,
|
|
614
|
-
ctm: CTM_TOKEN_ADDRESS
|
|
615
|
-
}
|
|
616
|
-
};
|
|
617
|
-
}
|
|
618
|
-
});
|
|
619
620
|
var init_committeeList = __esm({
|
|
620
621
|
"src/protocols/evm/continuum-dao/committeeList.ts"() {
|
|
621
622
|
}
|
|
@@ -2745,6 +2746,172 @@ function preprocessMerklClaimInput(kind) {
|
|
|
2745
2746
|
return o;
|
|
2746
2747
|
};
|
|
2747
2748
|
}
|
|
2749
|
+
|
|
2750
|
+
// src/protocols/evm/continuum-dao/purpose.ts
|
|
2751
|
+
init_constants();
|
|
2752
|
+
function chainParts(chainId) {
|
|
2753
|
+
const n = typeof chainId === "number" ? chainId : Number.parseInt(String(chainId ?? "").trim(), 10);
|
|
2754
|
+
const id = Number.isFinite(n) ? n : 0;
|
|
2755
|
+
if (id === CONTINUUM_DAO_LINEA_CHAIN_ID) return { name: "Linea Mainnet", id };
|
|
2756
|
+
if (id === CONTINUUM_DAO_LINEA_SEPOLIA_CHAIN_ID) return { name: "Linea Sepolia", id };
|
|
2757
|
+
if (id === CONTINUUM_DAO_ETHEREUM_CHAIN_ID) return { name: "Ethereum Mainnet", id };
|
|
2758
|
+
return { name: "chain", id };
|
|
2759
|
+
}
|
|
2760
|
+
function suffix(chainId) {
|
|
2761
|
+
const { name, id } = chainParts(chainId);
|
|
2762
|
+
return `on ${name} (chainId ${id})`;
|
|
2763
|
+
}
|
|
2764
|
+
function text(value) {
|
|
2765
|
+
return String(value ?? "").trim();
|
|
2766
|
+
}
|
|
2767
|
+
function tokenLabel(value) {
|
|
2768
|
+
const id = text(value);
|
|
2769
|
+
return id ? `#${id}` : "#\u2026";
|
|
2770
|
+
}
|
|
2771
|
+
function shortAddr(value) {
|
|
2772
|
+
const trimmed = text(value);
|
|
2773
|
+
if (!trimmed) return "\u2026";
|
|
2774
|
+
try {
|
|
2775
|
+
if (!viem.isAddress(trimmed)) return trimmed;
|
|
2776
|
+
const addr = viem.getAddress(trimmed);
|
|
2777
|
+
return `${addr.slice(0, 6)}\u2026${addr.slice(-4)}`;
|
|
2778
|
+
} catch {
|
|
2779
|
+
return trimmed;
|
|
2780
|
+
}
|
|
2781
|
+
}
|
|
2782
|
+
function weeksLabel(seconds) {
|
|
2783
|
+
const n = Number(text(seconds));
|
|
2784
|
+
if (!Number.isFinite(n) || n <= 0) return "\u2026 weeks";
|
|
2785
|
+
const weeks = Math.max(1, Math.round(n / WEEK_SECONDS));
|
|
2786
|
+
return `${weeks} week${weeks === 1 ? "" : "s"}`;
|
|
2787
|
+
}
|
|
2788
|
+
function paymentMeta(address) {
|
|
2789
|
+
const lower = text(address).toLowerCase();
|
|
2790
|
+
if (lower === MARKETPLACE_USDC_LINEA_ADDRESS.toLowerCase()) return { symbol: "USDC", decimals: 6 };
|
|
2791
|
+
if (lower === MARKETPLACE_WETH_LINEA_ADDRESS.toLowerCase()) return { symbol: "WETH", decimals: 18 };
|
|
2792
|
+
if (lower === CTM_TOKEN_ADDRESS.toLowerCase()) return { symbol: "CTM", decimals: 18 };
|
|
2793
|
+
return { symbol: "token", decimals: 18 };
|
|
2794
|
+
}
|
|
2795
|
+
function moneyFromWei(wei2, paymentToken) {
|
|
2796
|
+
const raw = text(wei2);
|
|
2797
|
+
if (!raw) return "\u2026 token";
|
|
2798
|
+
try {
|
|
2799
|
+
const meta = paymentMeta(paymentToken);
|
|
2800
|
+
const human = viem.formatUnits(BigInt(raw), meta.decimals).replace(/(\.\d*?[1-9])0+$/, "$1").replace(/\.0+$/, "");
|
|
2801
|
+
return `${human} ${meta.symbol}`;
|
|
2802
|
+
} catch {
|
|
2803
|
+
return raw;
|
|
2804
|
+
}
|
|
2805
|
+
}
|
|
2806
|
+
function deadlineLabel(value) {
|
|
2807
|
+
const n = Number(text(value));
|
|
2808
|
+
if (!Number.isFinite(n) || n <= 0) return "\u2026";
|
|
2809
|
+
const date = new Date(n * 1e3);
|
|
2810
|
+
if (Number.isNaN(date.getTime())) return "\u2026";
|
|
2811
|
+
return `${date.toISOString().slice(0, 16).replace("T", " ")} UTC`;
|
|
2812
|
+
}
|
|
2813
|
+
function bravoLabel(support) {
|
|
2814
|
+
const raw = text(support).toLowerCase();
|
|
2815
|
+
if (raw === "0" || raw === "against") return "Against";
|
|
2816
|
+
if (raw === "1" || raw === "for") return "For";
|
|
2817
|
+
if (raw === "2" || raw === "abstain") return "Abstain";
|
|
2818
|
+
return null;
|
|
2819
|
+
}
|
|
2820
|
+
function proposalLabel(input) {
|
|
2821
|
+
const title = text(input.title || input.proposalTitle);
|
|
2822
|
+
if (title) return title;
|
|
2823
|
+
const id = text(input.proposalId);
|
|
2824
|
+
return id ? `proposal ${id}` : "proposal";
|
|
2825
|
+
}
|
|
2826
|
+
function buildContinuumDaoMcpPurpose(action, input) {
|
|
2827
|
+
const end = suffix(input.chainId);
|
|
2828
|
+
const id = tokenLabel(input.tokenId);
|
|
2829
|
+
switch (action) {
|
|
2830
|
+
case "createLock":
|
|
2831
|
+
return `ContinuumDAO: create lock ${text(input.amountHuman) || "\u2026"} CTM for ${weeksLabel(input.lockDurationSeconds)} ${end}`;
|
|
2832
|
+
case "increaseAmount":
|
|
2833
|
+
return `ContinuumDAO: increase lock ${id} by ${text(input.amountHuman) || "\u2026"} CTM ${end}`;
|
|
2834
|
+
case "increaseUnlockTime":
|
|
2835
|
+
return `ContinuumDAO: extend lock ${id} by ${weeksLabel(input.lockDurationSeconds)} ${end}`;
|
|
2836
|
+
case "split":
|
|
2837
|
+
return `ContinuumDAO: split lock ${id}, extract ${text(input.extractedHuman) || "\u2026"} CTM ${end}`;
|
|
2838
|
+
case "merge": {
|
|
2839
|
+
const from = tokenLabel(input.fromTokenId);
|
|
2840
|
+
const into = text(input.toTokenId);
|
|
2841
|
+
return into ? `ContinuumDAO: merge lock ${from} into #${into} ${end}` : `ContinuumDAO: merge lock ${from} into \u2026 ${end}`;
|
|
2842
|
+
}
|
|
2843
|
+
case "withdraw":
|
|
2844
|
+
return `ContinuumDAO: withdraw expired lock ${id} ${end}`;
|
|
2845
|
+
case "liquidate":
|
|
2846
|
+
return `ContinuumDAO: liquidate lock ${id} ${end}`;
|
|
2847
|
+
case "delegate":
|
|
2848
|
+
return text(input.delegatee) ? `ContinuumDAO: delegate voting power to ${shortAddr(input.delegatee)} ${end}` : `ContinuumDAO: delegate voting power ${end}`;
|
|
2849
|
+
case "undelegate":
|
|
2850
|
+
return `ContinuumDAO: undelegate (return voting power to this KeyGen) ${end}`;
|
|
2851
|
+
case "transfer":
|
|
2852
|
+
return text(input.to) ? `ContinuumDAO: transfer veCTM ${id} to ${shortAddr(input.to)} ${end}` : `ContinuumDAO: transfer veCTM ${id} ${end}`;
|
|
2853
|
+
case "attach":
|
|
2854
|
+
return text(input.tokenId) ? `ContinuumDAO: attach veCTM ${id} to this node ${end}` : `ContinuumDAO: attach veCTM to this node ${end}`;
|
|
2855
|
+
case "requestDetach":
|
|
2856
|
+
return `ContinuumDAO: request detach veCTM ${id} ${end}`;
|
|
2857
|
+
case "proposeBravo": {
|
|
2858
|
+
const title = text(input.title);
|
|
2859
|
+
return title ? `ContinuumDAO: propose "${title}" (Bravo) ${end}` : `ContinuumDAO: propose governance proposal (Bravo) ${end}`;
|
|
2860
|
+
}
|
|
2861
|
+
case "proposeDelta": {
|
|
2862
|
+
const title = text(input.title);
|
|
2863
|
+
return title ? `ContinuumDAO: propose "${title}" (Delta) ${end}` : `ContinuumDAO: propose governance proposal (Delta) ${end}`;
|
|
2864
|
+
}
|
|
2865
|
+
case "castVoteBravo": {
|
|
2866
|
+
const label = proposalLabel(input);
|
|
2867
|
+
const support = bravoLabel(input.support);
|
|
2868
|
+
return support ? `ContinuumDAO: vote ${support} on "${label}" ${end}` : `ContinuumDAO: vote on "${label}" ${end}`;
|
|
2869
|
+
}
|
|
2870
|
+
case "castVoteDelta":
|
|
2871
|
+
return `ContinuumDAO: vote on "${proposalLabel(input)}" (Delta) ${end}`;
|
|
2872
|
+
case "execute":
|
|
2873
|
+
return `ContinuumDAO: execute "${proposalLabel(input)}" ${end}`;
|
|
2874
|
+
case "cancel":
|
|
2875
|
+
return `ContinuumDAO: cancel "${proposalLabel(input)}" ${end}`;
|
|
2876
|
+
case "forumSignIn": {
|
|
2877
|
+
const who = text(input.username);
|
|
2878
|
+
return who ? `ContinuumDAO: sign in to the forum as ${who} ${end}` : `ContinuumDAO: sign in to the forum ${end}`;
|
|
2879
|
+
}
|
|
2880
|
+
case "marketplaceCreateListing":
|
|
2881
|
+
return `ContinuumDAO: list veCTM ${id} for ${moneyFromWei(input.askWei, input.paymentToken)} until ${deadlineLabel(input.deadline)} ${end}`;
|
|
2882
|
+
case "marketplaceDelist":
|
|
2883
|
+
return `ContinuumDAO: delist veCTM ${id} ${end}`;
|
|
2884
|
+
case "marketplaceFulfillListing":
|
|
2885
|
+
return `ContinuumDAO: buy veCTM ${id} for ${moneyFromWei(input.priceWei, input.paymentToken)} ${end}`;
|
|
2886
|
+
case "marketplaceCreateOffering":
|
|
2887
|
+
return `ContinuumDAO: offer ${moneyFromWei(input.bidWei, input.paymentToken)} for veCTM ${id} until ${deadlineLabel(input.deadline)} ${end}`;
|
|
2888
|
+
case "marketplaceRescind":
|
|
2889
|
+
return `ContinuumDAO: rescind offer on veCTM ${id} ${end}`;
|
|
2890
|
+
case "marketplaceFulfillOffering":
|
|
2891
|
+
return `ContinuumDAO: accept offer of ${moneyFromWei(input.priceWei, input.paymentToken)} on veCTM ${id} ${end}`;
|
|
2892
|
+
case "marketplaceCreateAuction":
|
|
2893
|
+
return `ContinuumDAO: auction veCTM ${id} reserve ${moneyFromWei(input.reserveWei, input.paymentToken)}, minimum increment ${moneyFromWei(input.minIncrementWei, input.paymentToken)}, until ${deadlineLabel(input.deadline)} ${end}`;
|
|
2894
|
+
case "marketplaceCancelAuction":
|
|
2895
|
+
return `ContinuumDAO: cancel auction for veCTM ${id} ${end}`;
|
|
2896
|
+
case "marketplaceAuctionBid":
|
|
2897
|
+
return `ContinuumDAO: bid ${moneyFromWei(input.priceWei, input.paymentToken)} on veCTM ${id} ${end}`;
|
|
2898
|
+
case "marketplaceSettleAuction":
|
|
2899
|
+
return `ContinuumDAO: settle auction for veCTM ${id} ${end}`;
|
|
2900
|
+
default:
|
|
2901
|
+
return `ContinuumDAO: ${end}`;
|
|
2902
|
+
}
|
|
2903
|
+
}
|
|
2904
|
+
function preprocessContinuumDaoPurpose(action, raw) {
|
|
2905
|
+
if (!raw || typeof raw !== "object" || Array.isArray(raw)) return raw;
|
|
2906
|
+
const o = { ...raw };
|
|
2907
|
+
const supplied = text(o.purposeText ?? o.purpose);
|
|
2908
|
+
if (supplied) {
|
|
2909
|
+
o.purposeText = supplied;
|
|
2910
|
+
return o;
|
|
2911
|
+
}
|
|
2912
|
+
o.purposeText = buildContinuumDaoMcpPurpose(action, o);
|
|
2913
|
+
return o;
|
|
2914
|
+
}
|
|
2748
2915
|
var mcpServerCommonInputSchema = zod.z.object({
|
|
2749
2916
|
keyGenId: zod.z.string().min(1).describe("KeyGen id from fetch_key_gen_result / node preferred KeyGen"),
|
|
2750
2917
|
chainId: zod.z.number().int().positive().describe("EVM chain id; RPC and gas config resolved from chain registry"),
|
|
@@ -2790,6 +2957,14 @@ var MCP_NON_SUBMIT_TOOL_NAMES = /* @__PURE__ */ new Set([
|
|
|
2790
2957
|
function mcpMultisignInput(fields) {
|
|
2791
2958
|
return withMultisignKeySourceRefine(evmMultisignCommonInputSchema.extend(fields));
|
|
2792
2959
|
}
|
|
2960
|
+
function mcpContinuumDaoWriteInput(action, fields) {
|
|
2961
|
+
return withMultisignKeySourceRefine(
|
|
2962
|
+
zod.z.preprocess(
|
|
2963
|
+
(raw) => preprocessContinuumDaoPurpose(action, raw),
|
|
2964
|
+
evmMultisignCommonInputSchema.extend(fields)
|
|
2965
|
+
)
|
|
2966
|
+
);
|
|
2967
|
+
}
|
|
2793
2968
|
var mcpLidoSubmitInputSchema = mcpMultisignInput({
|
|
2794
2969
|
valueWei: zod.z.string().min(1).describe("ETH to stake (wei decimal string)"),
|
|
2795
2970
|
referral: evmAddressSchema.optional()
|
|
@@ -3231,42 +3406,45 @@ var mcpMorphoMidnightRepayInputSchema = withMultisignKeySourceRefine(
|
|
|
3231
3406
|
})
|
|
3232
3407
|
)
|
|
3233
3408
|
);
|
|
3234
|
-
var mcpContinuumDaoCreateLockInputSchema =
|
|
3409
|
+
var mcpContinuumDaoCreateLockInputSchema = mcpContinuumDaoWriteInput("createLock", {
|
|
3235
3410
|
amountHuman: zod.z.string().min(1).describe("CTM amount to lock. Must be >= VotingEscrow.minimumLock (default 1 CTM)."),
|
|
3236
3411
|
lockDurationSeconds: zod.z.union([zod.z.string(), zod.z.number()]).describe("Lock duration in seconds. Must be 1\u2013208 weeks (week-aligned on-chain)."),
|
|
3237
3412
|
ctm: evmAddressSchema.optional(),
|
|
3238
3413
|
votingEscrow: evmAddressSchema.optional()
|
|
3239
3414
|
});
|
|
3240
|
-
var mcpContinuumDaoIncreaseAmountInputSchema =
|
|
3415
|
+
var mcpContinuumDaoIncreaseAmountInputSchema = mcpContinuumDaoWriteInput("increaseAmount", {
|
|
3241
3416
|
tokenId: zod.z.union([zod.z.string(), zod.z.number()]),
|
|
3242
3417
|
amountHuman: zod.z.string().min(1),
|
|
3243
3418
|
ctm: evmAddressSchema.optional(),
|
|
3244
3419
|
votingEscrow: evmAddressSchema.optional()
|
|
3245
3420
|
});
|
|
3246
|
-
var mcpContinuumDaoIncreaseUnlockTimeInputSchema =
|
|
3421
|
+
var mcpContinuumDaoIncreaseUnlockTimeInputSchema = mcpContinuumDaoWriteInput("increaseUnlockTime", {
|
|
3247
3422
|
tokenId: zod.z.union([zod.z.string(), zod.z.number()]),
|
|
3248
3423
|
lockDurationSeconds: zod.z.union([zod.z.string(), zod.z.number()]),
|
|
3249
3424
|
votingEscrow: evmAddressSchema.optional()
|
|
3250
3425
|
});
|
|
3251
|
-
var mcpContinuumDaoSplitInputSchema =
|
|
3426
|
+
var mcpContinuumDaoSplitInputSchema = mcpContinuumDaoWriteInput("split", {
|
|
3252
3427
|
tokenId: zod.z.union([zod.z.string(), zod.z.number()]),
|
|
3253
3428
|
extractedHuman: zod.z.string().min(1).describe("CTM extracted into the new lock. Minimum 1 CTM; original lock must also keep 1 CTM."),
|
|
3254
3429
|
votingEscrow: evmAddressSchema.optional()
|
|
3255
3430
|
});
|
|
3256
|
-
var mcpContinuumDaoMergeInputSchema =
|
|
3431
|
+
var mcpContinuumDaoMergeInputSchema = mcpContinuumDaoWriteInput("merge", {
|
|
3257
3432
|
fromTokenId: zod.z.union([zod.z.string(), zod.z.number()]),
|
|
3258
3433
|
toTokenId: zod.z.union([zod.z.string(), zod.z.number()]),
|
|
3259
3434
|
votingEscrow: evmAddressSchema.optional()
|
|
3260
3435
|
});
|
|
3261
|
-
var
|
|
3436
|
+
var continuumDaoTokenIdFields = {
|
|
3262
3437
|
tokenId: zod.z.union([zod.z.string(), zod.z.number()]),
|
|
3263
3438
|
votingEscrow: evmAddressSchema.optional()
|
|
3264
|
-
}
|
|
3265
|
-
var
|
|
3439
|
+
};
|
|
3440
|
+
var mcpContinuumDaoWithdrawInputSchema = mcpContinuumDaoWriteInput("withdraw", continuumDaoTokenIdFields);
|
|
3441
|
+
var mcpContinuumDaoLiquidateInputSchema = mcpContinuumDaoWriteInput("liquidate", continuumDaoTokenIdFields);
|
|
3442
|
+
var mcpContinuumDaoTokenIdInputSchema = mcpContinuumDaoWithdrawInputSchema;
|
|
3443
|
+
var mcpContinuumDaoDelegateInputSchema = mcpContinuumDaoWriteInput("delegate", {
|
|
3266
3444
|
delegatee: evmAddressSchema,
|
|
3267
3445
|
votingEscrow: evmAddressSchema.optional()
|
|
3268
3446
|
});
|
|
3269
|
-
var mcpContinuumDaoUndelegateInputSchema =
|
|
3447
|
+
var mcpContinuumDaoUndelegateInputSchema = mcpContinuumDaoWriteInput("undelegate", {
|
|
3270
3448
|
votingEscrow: evmAddressSchema.optional()
|
|
3271
3449
|
});
|
|
3272
3450
|
var mcpContinuumDaoFetchDelegatesInputSchema = zod.z.object({
|
|
@@ -3280,12 +3458,12 @@ var mcpContinuumDaoFetchDelegatesOutputSchema = zod.z.object({
|
|
|
3280
3458
|
delegatee: evmAddressSchema,
|
|
3281
3459
|
self: zod.z.boolean()
|
|
3282
3460
|
});
|
|
3283
|
-
var mcpContinuumDaoTransferInputSchema =
|
|
3461
|
+
var mcpContinuumDaoTransferInputSchema = mcpContinuumDaoWriteInput("transfer", {
|
|
3284
3462
|
tokenId: zod.z.union([zod.z.string(), zod.z.number()]),
|
|
3285
3463
|
to: evmAddressSchema,
|
|
3286
3464
|
votingEscrow: evmAddressSchema.optional()
|
|
3287
3465
|
});
|
|
3288
|
-
var mcpContinuumDaoAttachInputSchema =
|
|
3466
|
+
var mcpContinuumDaoAttachInputSchema = mcpContinuumDaoWriteInput("attach", {
|
|
3289
3467
|
nodeKey: zod.z.string().min(1),
|
|
3290
3468
|
tokenId: zod.z.union([zod.z.string(), zod.z.number()]),
|
|
3291
3469
|
mpaWallet: evmAddressSchema,
|
|
@@ -3297,7 +3475,7 @@ var mcpContinuumDaoAttachInputSchema = mcpMultisignInput({
|
|
|
3297
3475
|
dIDType: zod.z.string().optional(),
|
|
3298
3476
|
dID: zod.z.string().optional()
|
|
3299
3477
|
});
|
|
3300
|
-
var mcpContinuumDaoRequestDetachInputSchema =
|
|
3478
|
+
var mcpContinuumDaoRequestDetachInputSchema = mcpContinuumDaoWriteInput("requestDetach", {
|
|
3301
3479
|
tokenId: zod.z.union([zod.z.string(), zod.z.number()]),
|
|
3302
3480
|
nodeProperties: evmAddressSchema
|
|
3303
3481
|
});
|
|
@@ -3305,7 +3483,13 @@ var govActionSchema = zod.z.object({
|
|
|
3305
3483
|
target: evmAddressSchema,
|
|
3306
3484
|
value: zod.z.string().optional(),
|
|
3307
3485
|
signature: zod.z.string().optional(),
|
|
3308
|
-
inputs: zod.z.array(
|
|
3486
|
+
inputs: zod.z.array(
|
|
3487
|
+
zod.z.object({
|
|
3488
|
+
name: zod.z.string().optional().describe("Required. ABI parameter name for this input."),
|
|
3489
|
+
type: zod.z.string(),
|
|
3490
|
+
value: zod.z.string()
|
|
3491
|
+
})
|
|
3492
|
+
).optional()
|
|
3309
3493
|
});
|
|
3310
3494
|
var govOptionSchema = zod.z.object({
|
|
3311
3495
|
label: zod.z.string().min(1),
|
|
@@ -3315,7 +3499,7 @@ var forumTopicKeyField = zod.z.string().min(1).describe(
|
|
|
3315
3499
|
"URL of the Governance forum thread created first with ctm_continuum_dao_forum_create_topic (decision / election / treasury / constitution / admin). Must be /topic/:tid or /t/:tid. Ideas threads and the homepage are refused."
|
|
3316
3500
|
);
|
|
3317
3501
|
var proposalTypeField = zod.z.number().int().min(0).max(4).describe("0 Admin, 1 Constitution, 2 Decision, 3 Election, 4 Treasury. Must match the forum thread section.");
|
|
3318
|
-
var mcpContinuumDaoProposeBravoInputSchema =
|
|
3502
|
+
var mcpContinuumDaoProposeBravoInputSchema = mcpContinuumDaoWriteInput("proposeBravo", {
|
|
3319
3503
|
title: zod.z.string().min(1).max(128),
|
|
3320
3504
|
description: zod.z.string().describe("Catalog description stored by POST /proposals/create."),
|
|
3321
3505
|
type: proposalTypeField,
|
|
@@ -3325,7 +3509,7 @@ var mcpContinuumDaoProposeBravoInputSchema = mcpMultisignInput({
|
|
|
3325
3509
|
forumKey: forumTopicKeyField,
|
|
3326
3510
|
forumUrl: zod.z.string().optional()
|
|
3327
3511
|
});
|
|
3328
|
-
var mcpContinuumDaoProposeDeltaInputSchema =
|
|
3512
|
+
var mcpContinuumDaoProposeDeltaInputSchema = mcpContinuumDaoWriteInput("proposeDelta", {
|
|
3329
3513
|
title: zod.z.string().min(1).max(128),
|
|
3330
3514
|
description: zod.z.string().describe("Catalog description stored by POST /proposals/create."),
|
|
3331
3515
|
type: proposalTypeField,
|
|
@@ -3535,20 +3719,23 @@ var mcpContinuumDaoSimulateProposalOutputSchema = zod.z.object({
|
|
|
3535
3719
|
}),
|
|
3536
3720
|
note: zod.z.string()
|
|
3537
3721
|
});
|
|
3538
|
-
var mcpContinuumDaoCastVoteBravoInputSchema =
|
|
3722
|
+
var mcpContinuumDaoCastVoteBravoInputSchema = mcpContinuumDaoWriteInput("castVoteBravo", {
|
|
3539
3723
|
proposalId: zod.z.union([zod.z.string(), zod.z.number()]),
|
|
3540
3724
|
support: zod.z.union([zod.z.literal(0), zod.z.literal(1), zod.z.literal(2), zod.z.string()]),
|
|
3541
3725
|
governor: evmAddressSchema.optional()
|
|
3542
3726
|
});
|
|
3543
|
-
var mcpContinuumDaoCastVoteDeltaInputSchema =
|
|
3727
|
+
var mcpContinuumDaoCastVoteDeltaInputSchema = mcpContinuumDaoWriteInput("castVoteDelta", {
|
|
3544
3728
|
proposalId: zod.z.union([zod.z.string(), zod.z.number()]),
|
|
3545
3729
|
weights: zod.z.array(zod.z.union([zod.z.string(), zod.z.number()])),
|
|
3546
3730
|
governor: evmAddressSchema.optional()
|
|
3547
3731
|
});
|
|
3548
|
-
var
|
|
3732
|
+
var continuumDaoProposalIdFields = {
|
|
3549
3733
|
proposalId: zod.z.union([zod.z.string(), zod.z.number()]),
|
|
3550
3734
|
governor: evmAddressSchema.optional()
|
|
3551
|
-
}
|
|
3735
|
+
};
|
|
3736
|
+
var mcpContinuumDaoExecuteInputSchema = mcpContinuumDaoWriteInput("execute", continuumDaoProposalIdFields);
|
|
3737
|
+
var mcpContinuumDaoCancelInputSchema = mcpContinuumDaoWriteInput("cancel", continuumDaoProposalIdFields);
|
|
3738
|
+
var mcpContinuumDaoProposalIdInputSchema = mcpContinuumDaoExecuteInputSchema;
|
|
3552
3739
|
var mcpContinuumDaoFetchVotingPowerInputSchema = zod.z.object({
|
|
3553
3740
|
chainId: zod.z.union([zod.z.string(), zod.z.number()]),
|
|
3554
3741
|
rpcUrl: zod.z.string().min(1),
|
|
@@ -4040,7 +4227,7 @@ var mcpContinuumDaoForumSignInEligibleOutputSchema = zod.z.object({
|
|
|
4040
4227
|
threshold: zod.z.string().optional().describe("MultiSignAgentWallet.veCtmThresholdPower wei"),
|
|
4041
4228
|
tokenId: zod.z.string().optional()
|
|
4042
4229
|
});
|
|
4043
|
-
var mcpContinuumDaoForumSignInInputSchema =
|
|
4230
|
+
var mcpContinuumDaoForumSignInInputSchema = mcpContinuumDaoWriteInput("forumSignIn", {
|
|
4044
4231
|
nodeKey: zod.z.string().optional().describe(
|
|
4045
4232
|
"Node key bound to this KeyGen. Always required on KeyGen forum sign-in, including when username is a custom name. The server fills it from this node when omitted. useNodeKeyUsername does not replace it."
|
|
4046
4233
|
),
|
|
@@ -5872,14 +6059,26 @@ var mcpDeriveTransferSpotInputSchema = mcpDeriveMultisignInput({
|
|
|
5872
6059
|
});
|
|
5873
6060
|
var mcpCctpFeeFieldsSchema = zod.z.object({
|
|
5874
6061
|
feeTierUsed: zod.z.enum(["low", "med", "high"]),
|
|
5875
|
-
maxFee: zod.z.string().describe(
|
|
5876
|
-
|
|
5877
|
-
|
|
6062
|
+
maxFee: zod.z.string().describe(
|
|
6063
|
+
"depositForBurnWithHook maxFee in USDC base units: selected forwardFee tier plus the fast-transfer protocol fee when transferAmountHuman is set"
|
|
6064
|
+
),
|
|
6065
|
+
maxFeeHuman: zod.z.string().describe("Human-readable maxFee (forwarding fee + protocol fee)"),
|
|
6066
|
+
forwardFeeLow: zod.z.string().describe("Iris forwarding fee only, low tier, USDC base units"),
|
|
5878
6067
|
forwardFeeLowHuman: zod.z.string(),
|
|
5879
|
-
forwardFeeMed: zod.z.string(),
|
|
6068
|
+
forwardFeeMed: zod.z.string().describe("Iris forwarding fee only, med tier, USDC base units"),
|
|
5880
6069
|
forwardFeeMedHuman: zod.z.string(),
|
|
5881
|
-
forwardFeeHigh: zod.z.string(),
|
|
6070
|
+
forwardFeeHigh: zod.z.string().describe("Iris forwarding fee only, high tier, USDC base units"),
|
|
5882
6071
|
forwardFeeHighHuman: zod.z.string(),
|
|
6072
|
+
maxFeeLow: zod.z.string().optional().describe("forwardFee low + protocol fee"),
|
|
6073
|
+
maxFeeLowHuman: zod.z.string().optional(),
|
|
6074
|
+
maxFeeMed: zod.z.string().optional().describe("forwardFee med + protocol fee"),
|
|
6075
|
+
maxFeeMedHuman: zod.z.string().optional(),
|
|
6076
|
+
maxFeeHigh: zod.z.string().optional().describe("forwardFee high + protocol fee"),
|
|
6077
|
+
maxFeeHighHuman: zod.z.string().optional(),
|
|
6078
|
+
minimumFeeBps: zod.z.number().optional().describe("Iris protocol fee rate in basis points for the selected finality row"),
|
|
6079
|
+
protocolFee: zod.z.string().optional().describe("Protocol fee in USDC base units for transferAmountHuman"),
|
|
6080
|
+
protocolFeeHuman: zod.z.string().optional(),
|
|
6081
|
+
finalityThreshold: zod.z.number().int().optional().describe("Iris fee row used. 1000 = fast transfer"),
|
|
5883
6082
|
transferAmount: zod.z.string().optional(),
|
|
5884
6083
|
transferAmountHuman: zod.z.string().optional(),
|
|
5885
6084
|
totalBurn: zod.z.string().optional().describe("transferAmount + maxFee when transferAmountHuman was provided"),
|
|
@@ -5895,8 +6094,13 @@ var mcpCctpFetchSupportedRoutesOutputSchema = jsonObjectSchema.describe(
|
|
|
5895
6094
|
var mcpCctpFetchBurnFeesInputSchema = zod.z.object({
|
|
5896
6095
|
sourceChainId: agentEvmChainIdSchema.describe("Source chain EIP-155 id (burn chain)"),
|
|
5897
6096
|
destChainId: agentEvmChainIdSchema.describe("Destination chain EIP-155 id (mint chain)"),
|
|
5898
|
-
transferAmountHuman: zod.z.string().min(1).optional().describe(
|
|
5899
|
-
|
|
6097
|
+
transferAmountHuman: zod.z.string().min(1).optional().describe(
|
|
6098
|
+
"Human USDC amount the recipient receives (6 decimals). Required for a maxFee that includes the fast-transfer protocol fee and for totalBurn. Omit only to inspect raw forwarding tiers."
|
|
6099
|
+
),
|
|
6100
|
+
feeTier: zod.z.enum(["low", "med", "high"]).optional().describe("Iris forwardFee tier; default med"),
|
|
6101
|
+
minFinalityThreshold: agentCoercedOptionalIntSchema(zod.z.number().int().positive()).describe(
|
|
6102
|
+
"Iris fee row. 1000 (default) is fast transfer and includes minimumFee bps. 2000 is standard transfer."
|
|
6103
|
+
)
|
|
5900
6104
|
});
|
|
5901
6105
|
var mcpCctpFetchBurnFeesOutputSchema = zod.z.object({
|
|
5902
6106
|
sourceChainId: zod.z.number(),
|
|
@@ -5932,7 +6136,9 @@ var mcpCctpBuildBurnMultisignInputSchema = mcpMultisignInput({
|
|
|
5932
6136
|
mintRecipient: evmAddressSchema.optional().describe("Recipient on destination chain; defaults to MPC executor address"),
|
|
5933
6137
|
feeTier: zod.z.enum(["low", "med", "high"]).optional(),
|
|
5934
6138
|
minFinalityThreshold: agentCoercedOptionalIntSchema(zod.z.number().int().positive()),
|
|
5935
|
-
feeSnapshot: jsonObjectSchema.optional().describe(
|
|
6139
|
+
feeSnapshot: jsonObjectSchema.optional().describe(
|
|
6140
|
+
"Optional output from ctm_cctp_fetch_burn_fees. Build re-quotes Iris. A snapshot maxFee below the live forward+protocol total is ignored; a higher snapshot is kept as a cap."
|
|
6141
|
+
)
|
|
5936
6142
|
});
|
|
5937
6143
|
var outcomeIdSchema = zod.z.number().int().nonnegative();
|
|
5938
6144
|
var sideSchema = zod.z.enum(["yes", "no"]);
|
|
@@ -6978,7 +7184,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
6978
7184
|
actionId: "circle-cctp.burn-forward",
|
|
6979
7185
|
protocolId: "circle-cctp",
|
|
6980
7186
|
chainCategory: "evm",
|
|
6981
|
-
description: "Create and submit mpc-auth multiSignRequest for CCTP Forwarding Service USDC transfer (approve + depositForBurnWithHook on source chain).",
|
|
7187
|
+
description: "Create and submit mpc-auth multiSignRequest for CCTP Forwarding Service USDC transfer (approve + depositForBurnWithHook on source chain). Re-quotes Iris and sets maxFee to the forwarding tier plus the fast-transfer protocol fee. A feeSnapshot cannot set a lower maxFee.",
|
|
6982
7188
|
prerequisites: [
|
|
6983
7189
|
"ctm_cctp_fetch_burn_fees (required)",
|
|
6984
7190
|
"keyGenId",
|
|
@@ -7057,7 +7263,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
7057
7263
|
description: "Build VotingEscrow.withdraw for an expired, unattached lock. Refuses if still locked or node-attached.",
|
|
7058
7264
|
prerequisites: ["keyGen", "tokenId", "lock expired", "unattached"],
|
|
7059
7265
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "buildEvmMultisignBodyContinuumDaoWithdraw" },
|
|
7060
|
-
inputZod:
|
|
7266
|
+
inputZod: mcpContinuumDaoWithdrawInputSchema
|
|
7061
7267
|
}),
|
|
7062
7268
|
defineProtocolMcpTool({
|
|
7063
7269
|
name: "ctm_continuum_dao_build_liquidate_multisign",
|
|
@@ -7067,7 +7273,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
7067
7273
|
description: "Build VotingEscrow.liquidate. Refuses if attached, liquidations disabled, locked amount <= 100 gwei, or penalty would be zero. Expired locks withdraw instead on-chain.",
|
|
7068
7274
|
prerequisites: ["keyGen", "tokenId", "liquidationsEnabled", "unattached"],
|
|
7069
7275
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "buildEvmMultisignBodyContinuumDaoLiquidate" },
|
|
7070
|
-
inputZod:
|
|
7276
|
+
inputZod: mcpContinuumDaoLiquidateInputSchema
|
|
7071
7277
|
}),
|
|
7072
7278
|
defineProtocolMcpTool({
|
|
7073
7279
|
name: "ctm_continuum_dao_build_delegate_multisign",
|
|
@@ -7126,7 +7332,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
7126
7332
|
actionId: "continuum-dao.propose-bravo",
|
|
7127
7333
|
protocolId: "continuum-dao",
|
|
7128
7334
|
chainCategory: "evm",
|
|
7129
|
-
description: "Build ContinuumDAO.propose for a Bravo (For/Against/Abstain) proposal and POST /proposals/create (pendingOnChain) before the multi-sign request is submitted. Requires description and type (0\u20134) matching the forum section. Refuses if getVotes(KeyGen) < live proposalThreshold(), the forum section does not match type, or propose() reverts. forumKey must be a Governance thread from ctm_continuum_dao_forum_create_topic. Ideas threads and the homepage are refused. Empty actions insert a no-op to the KeyGen address. Linea only. No billing legs. register_proposal
|
|
7335
|
+
description: "Build ContinuumDAO.propose for a Bravo (For/Against/Abstain) proposal and POST /proposals/create (pendingOnChain) before the multi-sign request is submitted. Requires description and type (0\u20134) matching the forum section. Each action input requires a name. Refuses if getVotes(KeyGen) < live proposalThreshold(), the forum section does not match type, or propose() reverts. forumKey must be a Governance thread from ctm_continuum_dao_forum_create_topic. Ideas threads and the homepage are refused. Empty actions insert a no-op to the KeyGen address. Linea only. No billing legs. register_proposal retries the catalog write and, on 409, updates the existing row instead of creating a second proposal.",
|
|
7130
7336
|
prerequisites: [
|
|
7131
7337
|
"keyGen",
|
|
7132
7338
|
"Linea RPC",
|
|
@@ -7144,7 +7350,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
7144
7350
|
actionId: "continuum-dao.propose-delta",
|
|
7145
7351
|
protocolId: "continuum-dao",
|
|
7146
7352
|
chainCategory: "evm",
|
|
7147
|
-
description: "Build ContinuumDAO.propose for a Delta multi-option proposal and POST /proposals/create (pendingOnChain) before the multi-sign request is submitted. Requires description and type (0\u20134) matching the forum section. Refuses if getVotes(KeyGen) < live proposalThreshold(), the forum section does not match type, or propose() reverts. forumKey must be a Governance thread from ctm_continuum_dao_forum_create_topic. Empty options get a no-op so indices increment. Linea only. No billing legs.",
|
|
7353
|
+
description: "Build ContinuumDAO.propose for a Delta multi-option proposal and POST /proposals/create (pendingOnChain) before the multi-sign request is submitted. Requires description and type (0\u20134) matching the forum section. Each action input requires a name. Refuses if getVotes(KeyGen) < live proposalThreshold(), the forum section does not match type, or propose() reverts. forumKey must be a Governance thread from ctm_continuum_dao_forum_create_topic. Empty options get a no-op so indices increment. Linea only. No billing legs. register_proposal retries the catalog write and, on 409, updates the existing row instead of creating a second proposal.",
|
|
7148
7354
|
prerequisites: [
|
|
7149
7355
|
"keyGen",
|
|
7150
7356
|
"at least 2 options",
|
|
@@ -7185,7 +7391,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
7185
7391
|
description: "Build ContinuumDAO.execute(proposalId). proposalId may be a catalog id (including 0) or the governor hash. Call after Succeeded. Queue is not implemented.",
|
|
7186
7392
|
prerequisites: ["keyGen", "proposalId", "Succeeded state"],
|
|
7187
7393
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "buildEvmMultisignBodyContinuumDaoExecute" },
|
|
7188
|
-
inputZod:
|
|
7394
|
+
inputZod: mcpContinuumDaoExecuteInputSchema
|
|
7189
7395
|
}),
|
|
7190
7396
|
defineProtocolMcpTool({
|
|
7191
7397
|
name: "ctm_continuum_dao_build_cancel_multisign",
|
|
@@ -7195,7 +7401,7 @@ var MCP_PROTOCOL_TOOL_DEFINITIONS = [
|
|
|
7195
7401
|
description: "Build ContinuumDAO.cancel(proposalId). Proposer while Pending, or the proposal guardian.",
|
|
7196
7402
|
prerequisites: ["keyGen", "proposalId"],
|
|
7197
7403
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "buildEvmMultisignBodyContinuumDaoCancel" },
|
|
7198
|
-
inputZod:
|
|
7404
|
+
inputZod: mcpContinuumDaoCancelInputSchema
|
|
7199
7405
|
}),
|
|
7200
7406
|
defineProtocolMcpTool({
|
|
7201
7407
|
name: "ctm_continuum_dao_build_forum_sign_in_multisign",
|
|
@@ -7535,7 +7741,7 @@ var mcpContinuumDaoMarketplaceSearchInputSchema = zod.z.object({
|
|
|
7535
7741
|
sort: zod.z.enum(["pricePerLockedCtm", "price", "locked", "unlock", "deadline"]).optional().describe("Default pricePerLockedCtm, cheapest first. locked defaults to most CTM. unlock and deadline default to soonest."),
|
|
7536
7742
|
sortDirection: zod.z.enum(["asc", "desc"]).optional(),
|
|
7537
7743
|
limit: zod.z.number().int().min(1).max(25).optional().describe("Ranked rows to return, default 10"),
|
|
7538
|
-
executor: evmAddressSchema.optional().describe("KeyGen address.
|
|
7744
|
+
executor: evmAddressSchema.optional().describe("KeyGen address. Listings this address sells are returned with action delist and fillable false."),
|
|
7539
7745
|
excludeOwned: zod.z.boolean().optional()
|
|
7540
7746
|
});
|
|
7541
7747
|
var mcpContinuumDaoMarketplaceFeeAlternativeInputSchema = zod.z.object({
|
|
@@ -7612,46 +7818,46 @@ var mcpContinuumDaoMarketplaceActivityOutputSchema = zod.z.object({
|
|
|
7612
7818
|
var mcpContinuumDaoMarketplaceFeeOutputSchema = zod.z.object({ source }).passthrough();
|
|
7613
7819
|
var wei = zod.z.union([zod.z.string(), zod.z.number()]);
|
|
7614
7820
|
var deadline = zod.z.union([zod.z.string(), zod.z.number()]).describe("Unix seconds");
|
|
7615
|
-
var mcpContinuumDaoMarketplaceCreateListingInputSchema =
|
|
7821
|
+
var mcpContinuumDaoMarketplaceCreateListingInputSchema = mcpContinuumDaoWriteInput("marketplaceCreateListing", {
|
|
7616
7822
|
tokenId: wei,
|
|
7617
7823
|
paymentToken: evmAddressSchema,
|
|
7618
7824
|
askWei: wei,
|
|
7619
7825
|
deadline
|
|
7620
7826
|
});
|
|
7621
|
-
var mcpContinuumDaoMarketplaceDelistInputSchema =
|
|
7622
|
-
var mcpContinuumDaoMarketplaceFulfillListingInputSchema =
|
|
7827
|
+
var mcpContinuumDaoMarketplaceDelistInputSchema = mcpContinuumDaoWriteInput("marketplaceDelist", { tokenId: wei });
|
|
7828
|
+
var mcpContinuumDaoMarketplaceFulfillListingInputSchema = mcpContinuumDaoWriteInput("marketplaceFulfillListing", {
|
|
7623
7829
|
tokenId: wei,
|
|
7624
7830
|
seller: evmAddressSchema,
|
|
7625
7831
|
paymentToken: evmAddressSchema,
|
|
7626
7832
|
priceWei: wei
|
|
7627
7833
|
});
|
|
7628
|
-
var mcpContinuumDaoMarketplaceCreateOfferingInputSchema =
|
|
7834
|
+
var mcpContinuumDaoMarketplaceCreateOfferingInputSchema = mcpContinuumDaoWriteInput("marketplaceCreateOffering", {
|
|
7629
7835
|
tokenId: wei,
|
|
7630
7836
|
paymentToken: evmAddressSchema,
|
|
7631
7837
|
bidWei: wei,
|
|
7632
7838
|
deadline
|
|
7633
7839
|
});
|
|
7634
|
-
var mcpContinuumDaoMarketplaceRescindInputSchema =
|
|
7635
|
-
var mcpContinuumDaoMarketplaceFulfillOfferingInputSchema =
|
|
7840
|
+
var mcpContinuumDaoMarketplaceRescindInputSchema = mcpContinuumDaoWriteInput("marketplaceRescind", { tokenId: wei });
|
|
7841
|
+
var mcpContinuumDaoMarketplaceFulfillOfferingInputSchema = mcpContinuumDaoWriteInput("marketplaceFulfillOffering", {
|
|
7636
7842
|
tokenId: wei,
|
|
7637
7843
|
buyer: evmAddressSchema,
|
|
7638
7844
|
paymentToken: evmAddressSchema,
|
|
7639
7845
|
priceWei: wei
|
|
7640
7846
|
});
|
|
7641
|
-
var mcpContinuumDaoMarketplaceCreateAuctionInputSchema =
|
|
7847
|
+
var mcpContinuumDaoMarketplaceCreateAuctionInputSchema = mcpContinuumDaoWriteInput("marketplaceCreateAuction", {
|
|
7642
7848
|
tokenId: wei,
|
|
7643
7849
|
paymentToken: evmAddressSchema,
|
|
7644
7850
|
deadline,
|
|
7645
7851
|
reserveWei: wei,
|
|
7646
7852
|
minIncrementWei: wei
|
|
7647
7853
|
});
|
|
7648
|
-
var mcpContinuumDaoMarketplaceCancelAuctionInputSchema =
|
|
7649
|
-
var mcpContinuumDaoMarketplaceAuctionBidInputSchema =
|
|
7854
|
+
var mcpContinuumDaoMarketplaceCancelAuctionInputSchema = mcpContinuumDaoWriteInput("marketplaceCancelAuction", { tokenId: wei });
|
|
7855
|
+
var mcpContinuumDaoMarketplaceAuctionBidInputSchema = mcpContinuumDaoWriteInput("marketplaceAuctionBid", {
|
|
7650
7856
|
tokenId: wei,
|
|
7651
7857
|
seller: evmAddressSchema,
|
|
7652
7858
|
priceWei: wei
|
|
7653
7859
|
});
|
|
7654
|
-
var mcpContinuumDaoMarketplaceSettleAuctionInputSchema =
|
|
7860
|
+
var mcpContinuumDaoMarketplaceSettleAuctionInputSchema = mcpContinuumDaoWriteInput("marketplaceSettleAuction", {
|
|
7655
7861
|
tokenId: wei,
|
|
7656
7862
|
seller: evmAddressSchema
|
|
7657
7863
|
});
|
|
@@ -7721,9 +7927,13 @@ var MCP_MARKETPLACE_TOOL_DEFINITIONS = [
|
|
|
7721
7927
|
defineRead({
|
|
7722
7928
|
name: "ctm_continuum_dao_marketplace_search",
|
|
7723
7929
|
actionId: "continuum-dao-marketplace.search",
|
|
7724
|
-
description:
|
|
7930
|
+
description: 'Rank veCTMs for sale. Returns a short list already sorted by price per locked CTM, price, locked CTM, unlock, or deadline. Filters: min/max locked CTM, unlock window, maxUnlockMonths. Pass paymentToken to compare prices. Pass executor so this KeyGen\u2019s own listings come back with action "delist" and fillable false. Call the delist builder for those. Do not buy them. Use this to choose a buy. Do not fetch the raw listing page and then offer to sort it.',
|
|
7725
7931
|
prerequisites: ["chainId 59144", "rpcUrl when lock snapshots are missing"],
|
|
7726
|
-
followUp: [
|
|
7932
|
+
followUp: [
|
|
7933
|
+
"ctm_continuum_dao_marketplace_build_delist_multisign",
|
|
7934
|
+
"ctm_continuum_dao_marketplace_build_fulfill_listing_multisign",
|
|
7935
|
+
"ctm_continuum_dao_marketplace_build_auction_bid_multisign"
|
|
7936
|
+
],
|
|
7727
7937
|
inputZod: mcpContinuumDaoMarketplaceSearchInputSchema,
|
|
7728
7938
|
outputZod: mcpContinuumDaoMarketplaceSearchOutputSchema,
|
|
7729
7939
|
exportName: "searchContinuumDaoMarketplace"
|
|
@@ -7731,9 +7941,12 @@ var MCP_MARKETPLACE_TOOL_DEFINITIONS = [
|
|
|
7731
7941
|
defineRead({
|
|
7732
7942
|
name: "ctm_continuum_dao_marketplace_fetch_listings",
|
|
7733
7943
|
actionId: "continuum-dao-marketplace.fetch-listings",
|
|
7734
|
-
description:
|
|
7944
|
+
description: 'Unfiltered page of open veCTM listings, created order, up to 100, with nextCursor. includeInactive adds past sales. Pass viewer as the KeyGen. viewerAction "delist" means that KeyGen already sells the veCTM: build a delist, not a buy. To choose a buy by price, locked CTM, or unlock time, use search instead.',
|
|
7735
7945
|
prerequisites: ["chainId 59144"],
|
|
7736
|
-
followUp: [
|
|
7946
|
+
followUp: [
|
|
7947
|
+
"ctm_continuum_dao_marketplace_build_delist_multisign",
|
|
7948
|
+
"ctm_continuum_dao_marketplace_build_fulfill_listing_multisign"
|
|
7949
|
+
],
|
|
7737
7950
|
inputZod: mcpContinuumDaoMarketplaceFetchListingsInputSchema,
|
|
7738
7951
|
outputZod: mcpContinuumDaoMarketplaceListOutputSchema,
|
|
7739
7952
|
exportName: "fetchContinuumDaoMarketplaceListings"
|
|
@@ -7751,7 +7964,7 @@ var MCP_MARKETPLACE_TOOL_DEFINITIONS = [
|
|
|
7751
7964
|
defineRead({
|
|
7752
7965
|
name: "ctm_continuum_dao_marketplace_fetch_auctions",
|
|
7753
7966
|
actionId: "continuum-dao-marketplace.fetch-auctions",
|
|
7754
|
-
description: "Live veCTM auctions
|
|
7967
|
+
description: "Live veCTM auctions. derivedStatus is Active while the auction is open, including before any bid meets the reserve. storedStatus stays Pending until a qualifying bid, then Active. Complete still needs settle. includeInactive adds sold, canceled, and expired. Each auction includes bids.",
|
|
7755
7968
|
prerequisites: ["chainId 59144"],
|
|
7756
7969
|
followUp: ["ctm_continuum_dao_marketplace_build_auction_bid_multisign", "ctm_continuum_dao_marketplace_build_settle_auction_multisign"],
|
|
7757
7970
|
inputZod: mcpContinuumDaoMarketplaceFetchAuctionsInputSchema,
|
|
@@ -7791,15 +8004,15 @@ var MCP_MARKETPLACE_TOOL_DEFINITIONS = [
|
|
|
7791
8004
|
defineWrite({
|
|
7792
8005
|
name: "ctm_continuum_dao_marketplace_build_create_listing_multisign",
|
|
7793
8006
|
actionId: "continuum-dao-marketplace.create-listing",
|
|
7794
|
-
description: "List a veCTM. Approves the marketplace for the token id when needed. Linea only.",
|
|
7795
|
-
prerequisites: ["keyGen", "tokenId owned by the KeyGen", "askWei", "deadline"],
|
|
8007
|
+
description: "List a veCTM. Approves the marketplace for the token id when needed. Refuses an attached KeyGen. Linea only.",
|
|
8008
|
+
prerequisites: ["keyGen", "tokenId owned by the KeyGen", "unattached", "askWei", "deadline"],
|
|
7796
8009
|
inputZod: mcpContinuumDaoMarketplaceCreateListingInputSchema,
|
|
7797
8010
|
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceCreateListing"
|
|
7798
8011
|
}),
|
|
7799
8012
|
defineWrite({
|
|
7800
8013
|
name: "ctm_continuum_dao_marketplace_build_delist_multisign",
|
|
7801
8014
|
actionId: "continuum-dao-marketplace.delist",
|
|
7802
|
-
description: "Delist this KeyGen\u2019s open veCTM listing.",
|
|
8015
|
+
description: "Delist this KeyGen\u2019s open veCTM listing. Use this when the KeyGen is the seller. Do not buy that listing.",
|
|
7803
8016
|
prerequisites: ["keyGen", "tokenId"],
|
|
7804
8017
|
inputZod: mcpContinuumDaoMarketplaceDelistInputSchema,
|
|
7805
8018
|
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceDelist"
|
|
@@ -7807,7 +8020,7 @@ var MCP_MARKETPLACE_TOOL_DEFINITIONS = [
|
|
|
7807
8020
|
defineWrite({
|
|
7808
8021
|
name: "ctm_continuum_dao_marketplace_build_fulfill_listing_multisign",
|
|
7809
8022
|
actionId: "continuum-dao-marketplace.fulfill-listing",
|
|
7810
|
-
description: "Buy a listed veCTM. Refuses when this KeyGen already owns it or is the seller. WETH sends msg.value.",
|
|
8023
|
+
description: "Buy a listed veCTM. Refuses when this KeyGen already owns it or is the seller, and tells you to delist instead. WETH sends msg.value.",
|
|
7811
8024
|
prerequisites: ["keyGen", "tokenId", "seller", "priceWei"],
|
|
7812
8025
|
inputZod: mcpContinuumDaoMarketplaceFulfillListingInputSchema,
|
|
7813
8026
|
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceFulfillListing"
|
|
@@ -7815,8 +8028,8 @@ var MCP_MARKETPLACE_TOOL_DEFINITIONS = [
|
|
|
7815
8028
|
defineWrite({
|
|
7816
8029
|
name: "ctm_continuum_dao_marketplace_build_create_offering_multisign",
|
|
7817
8030
|
actionId: "continuum-dao-marketplace.create-offering",
|
|
7818
|
-
description: "Offer on a veCTM this KeyGen does not own. WETH sends msg.value and still approves WETH for later fulfillment.",
|
|
7819
|
-
prerequisites: ["keyGen", "tokenId", "bidWei", "deadline"],
|
|
8031
|
+
description: "Offer on a veCTM this KeyGen does not own. Refuses an attached KeyGen. WETH sends msg.value and still approves WETH for later fulfillment.",
|
|
8032
|
+
prerequisites: ["keyGen", "tokenId", "unattached", "bidWei", "deadline"],
|
|
7820
8033
|
inputZod: mcpContinuumDaoMarketplaceCreateOfferingInputSchema,
|
|
7821
8034
|
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceCreateOffering"
|
|
7822
8035
|
}),
|
|
@@ -7840,7 +8053,7 @@ var MCP_MARKETPLACE_TOOL_DEFINITIONS = [
|
|
|
7840
8053
|
name: "ctm_continuum_dao_marketplace_build_create_auction_multisign",
|
|
7841
8054
|
actionId: "continuum-dao-marketplace.create-auction",
|
|
7842
8055
|
description: "Start an auction and escrow the veCTM. Refuses an attached KeyGen.",
|
|
7843
|
-
prerequisites: ["keyGen", "tokenId", "reserveWei", "minIncrementWei", "deadline"],
|
|
8056
|
+
prerequisites: ["keyGen", "tokenId", "unattached", "reserveWei", "minIncrementWei", "deadline"],
|
|
7844
8057
|
inputZod: mcpContinuumDaoMarketplaceCreateAuctionInputSchema,
|
|
7845
8058
|
exportName: "buildEvmMultisignBodyContinuumDaoMarketplaceCreateAuction"
|
|
7846
8059
|
}),
|
|
@@ -9165,7 +9378,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9165
9378
|
actionId: "circle-cctp.fetch-fees",
|
|
9166
9379
|
protocolId: "circle-cctp",
|
|
9167
9380
|
chainCategory: "evm",
|
|
9168
|
-
description: "Quote Circle Iris
|
|
9381
|
+
description: "Quote Circle Iris CCTP fees (?forward=true). maxFee = forwardFee[tier] + protocol fee (minimumFee bps of transferAmountHuman). Pass transferAmountHuman before building a burn. forwardFee* fields are the forwarding component only. Does NOT create a sign request.",
|
|
9169
9382
|
prerequisites: ["supported route (ctm_cctp_fetch_supported_routes)"],
|
|
9170
9383
|
followUp: ["ctm_cctp_fetch_usdc_balance", "ctm_cctp_build_burn_multisign"],
|
|
9171
9384
|
handler: { importPath: "protocols/evm/circle-cctp", exportName: "cctpFetchBurnFeesForRoute" },
|
|
@@ -9425,7 +9638,7 @@ var CORE_MCP_TOOL_DEFINITIONS = [
|
|
|
9425
9638
|
actionId: "continuum-dao.register-proposal",
|
|
9426
9639
|
protocolId: "continuum-dao",
|
|
9427
9640
|
chainCategory: "evm",
|
|
9428
|
-
description: "Retry POST /proposals/create
|
|
9641
|
+
description: "Retry the catalog write when propose did not leave a row. POST /proposals/create, and on 409 POST /proposals/repair to update title, description, forumKey, type, and actions or option labels and actions on the existing onchainId. Each action input requires a name. A Delta repair must use the on-chain nOptions and nWinners. Does not create a second proposal and does not revert a chain tx. The node signs with Ed25519.",
|
|
9429
9642
|
prerequisites: ["onchainId from hashProposal or ProposalCreated", "title", "proposer", "forumKey", "type", "configuration"],
|
|
9430
9643
|
followUp: [],
|
|
9431
9644
|
handler: { importPath: "protocols/evm/continuum-dao", exportName: "continuumDaoRegisterProposal" },
|
|
@@ -11580,9 +11793,9 @@ registerProtocolModule(hyperliquidProtocolModule);
|
|
|
11580
11793
|
// src/protocols/evm/arcus/index.ts
|
|
11581
11794
|
init_support();
|
|
11582
11795
|
init_support();
|
|
11583
|
-
|
|
11796
|
+
init_constants2();
|
|
11584
11797
|
init_api();
|
|
11585
|
-
|
|
11798
|
+
init_constants2();
|
|
11586
11799
|
var arcusProtocolModule = {
|
|
11587
11800
|
id: ARCUS_PROTOCOL_ID,
|
|
11588
11801
|
chainCategory: "evm",
|
|
@@ -12104,7 +12317,7 @@ var circleCctpProtocolModule = {
|
|
|
12104
12317
|
id: "circle-cctp.fetch-fees",
|
|
12105
12318
|
protocolId: CIRCLE_CCTP_PROTOCOL_ID,
|
|
12106
12319
|
chainCategory: "evm",
|
|
12107
|
-
description: "Quote Iris
|
|
12320
|
+
description: "Quote Iris forwarding fee plus fast-transfer protocol fee for a route",
|
|
12108
12321
|
commonParams: [],
|
|
12109
12322
|
params: {
|
|
12110
12323
|
sourceChainId: { type: "number", required: true, description: "Source EIP-155 chain id" },
|
|
@@ -12336,10 +12549,10 @@ var aerodromeProtocolModule = {
|
|
|
12336
12549
|
registerProtocolModule(aerodromeProtocolModule);
|
|
12337
12550
|
|
|
12338
12551
|
// src/protocols/evm/continuum-dao/index.ts
|
|
12339
|
-
|
|
12552
|
+
init_constants();
|
|
12340
12553
|
|
|
12341
12554
|
// src/protocols/evm/continuum-dao/marketplaceModule.ts
|
|
12342
|
-
|
|
12555
|
+
init_constants();
|
|
12343
12556
|
var common = ["keyGen", "purposeText", "useCustomGas"];
|
|
12344
12557
|
var continuumDaoMarketplaceProtocolModule = {
|
|
12345
12558
|
id: CONTINUUM_DAO_MARKETPLACE_PROTOCOL_ID,
|
|
@@ -12376,7 +12589,7 @@ var continuumDaoMarketplaceProtocolModule = {
|
|
|
12376
12589
|
};
|
|
12377
12590
|
|
|
12378
12591
|
// src/protocols/evm/continuum-dao/index.ts
|
|
12379
|
-
|
|
12592
|
+
init_constants();
|
|
12380
12593
|
init_committeeList();
|
|
12381
12594
|
init_proposalCatalog();
|
|
12382
12595
|
init_governance();
|
|
@@ -13187,16 +13400,16 @@ async function pendleCoreFetch(args) {
|
|
|
13187
13400
|
lastError = new PendleApiError(`Pendle API rate limited (429) on ${path}`, 429, path);
|
|
13188
13401
|
continue;
|
|
13189
13402
|
}
|
|
13190
|
-
const
|
|
13403
|
+
const text2 = await res.text();
|
|
13191
13404
|
if (!res.ok) {
|
|
13192
13405
|
throw new PendleApiError(
|
|
13193
|
-
`Pendle API ${res.status} ${path}: ${
|
|
13406
|
+
`Pendle API ${res.status} ${path}: ${text2.slice(0, 400)}`,
|
|
13194
13407
|
res.status,
|
|
13195
13408
|
path
|
|
13196
13409
|
);
|
|
13197
13410
|
}
|
|
13198
|
-
if (!
|
|
13199
|
-
return JSON.parse(
|
|
13411
|
+
if (!text2.trim()) return {};
|
|
13412
|
+
return JSON.parse(text2);
|
|
13200
13413
|
} catch (err) {
|
|
13201
13414
|
lastError = err;
|
|
13202
13415
|
if (err instanceof PendleApiError && err.status !== 429) throw err;
|
|
@@ -13586,15 +13799,15 @@ async function deriveRpcPost(args) {
|
|
|
13586
13799
|
cache: "no-store",
|
|
13587
13800
|
signal: AbortSignal.timeout(15e3)
|
|
13588
13801
|
});
|
|
13589
|
-
const
|
|
13590
|
-
if (!res.ok || !
|
|
13591
|
-
throw new Error(`Derive ${method} HTTP ${res.status}: ${
|
|
13802
|
+
const text2 = await res.text().catch(() => "");
|
|
13803
|
+
if (!res.ok || !text2.trim() || text2.trim() === "Not Found") {
|
|
13804
|
+
throw new Error(`Derive ${method} HTTP ${res.status}: ${text2.slice(0, 240) || "empty body"}`);
|
|
13592
13805
|
}
|
|
13593
13806
|
let json;
|
|
13594
13807
|
try {
|
|
13595
|
-
json = JSON.parse(
|
|
13808
|
+
json = JSON.parse(text2);
|
|
13596
13809
|
} catch {
|
|
13597
|
-
throw new Error(`Derive ${method} returned non-JSON: ${
|
|
13810
|
+
throw new Error(`Derive ${method} returned non-JSON: ${text2.slice(0, 160)}`);
|
|
13598
13811
|
}
|
|
13599
13812
|
const result = unwrapResult(json, method);
|
|
13600
13813
|
if (isEmptyDerivePublicResult(method, result)) {
|
|
@@ -14000,7 +14213,7 @@ init_support();
|
|
|
14000
14213
|
init_support2();
|
|
14001
14214
|
init_addresses();
|
|
14002
14215
|
init_stockTokens();
|
|
14003
|
-
|
|
14216
|
+
init_constants();
|
|
14004
14217
|
function advisor(protocolId, tokenFilter, impl) {
|
|
14005
14218
|
return { protocolId, tokenFilter, ...impl };
|
|
14006
14219
|
}
|
|
@@ -14732,12 +14945,14 @@ exports.mcpCompoundV3RepayInputSchema = mcpCompoundV3RepayInputSchema;
|
|
|
14732
14945
|
exports.mcpCompoundV3SupplyInputSchema = mcpCompoundV3SupplyInputSchema;
|
|
14733
14946
|
exports.mcpCompoundV3WithdrawInputSchema = mcpCompoundV3WithdrawInputSchema;
|
|
14734
14947
|
exports.mcpContinuumDaoAttachInputSchema = mcpContinuumDaoAttachInputSchema;
|
|
14948
|
+
exports.mcpContinuumDaoCancelInputSchema = mcpContinuumDaoCancelInputSchema;
|
|
14735
14949
|
exports.mcpContinuumDaoCastVoteBravoInputSchema = mcpContinuumDaoCastVoteBravoInputSchema;
|
|
14736
14950
|
exports.mcpContinuumDaoCastVoteDeltaInputSchema = mcpContinuumDaoCastVoteDeltaInputSchema;
|
|
14737
14951
|
exports.mcpContinuumDaoComposeProposalActionInputSchema = mcpContinuumDaoComposeProposalActionInputSchema;
|
|
14738
14952
|
exports.mcpContinuumDaoComposeProposalActionOutputSchema = mcpContinuumDaoComposeProposalActionOutputSchema;
|
|
14739
14953
|
exports.mcpContinuumDaoCreateLockInputSchema = mcpContinuumDaoCreateLockInputSchema;
|
|
14740
14954
|
exports.mcpContinuumDaoDelegateInputSchema = mcpContinuumDaoDelegateInputSchema;
|
|
14955
|
+
exports.mcpContinuumDaoExecuteInputSchema = mcpContinuumDaoExecuteInputSchema;
|
|
14741
14956
|
exports.mcpContinuumDaoExplainProposalInputSchema = mcpContinuumDaoExplainProposalInputSchema;
|
|
14742
14957
|
exports.mcpContinuumDaoExplainProposalOutputSchema = mcpContinuumDaoExplainProposalOutputSchema;
|
|
14743
14958
|
exports.mcpContinuumDaoFetchDelegatesInputSchema = mcpContinuumDaoFetchDelegatesInputSchema;
|
|
@@ -14795,6 +15010,7 @@ exports.mcpContinuumDaoForumUserPostIdsInputSchema = mcpContinuumDaoForumUserPos
|
|
|
14795
15010
|
exports.mcpContinuumDaoForumUserPostIdsOutputSchema = mcpContinuumDaoForumUserPostIdsOutputSchema;
|
|
14796
15011
|
exports.mcpContinuumDaoIncreaseAmountInputSchema = mcpContinuumDaoIncreaseAmountInputSchema;
|
|
14797
15012
|
exports.mcpContinuumDaoIncreaseUnlockTimeInputSchema = mcpContinuumDaoIncreaseUnlockTimeInputSchema;
|
|
15013
|
+
exports.mcpContinuumDaoLiquidateInputSchema = mcpContinuumDaoLiquidateInputSchema;
|
|
14798
15014
|
exports.mcpContinuumDaoMergeInputSchema = mcpContinuumDaoMergeInputSchema;
|
|
14799
15015
|
exports.mcpContinuumDaoMpaFlagInputSchema = mcpContinuumDaoMpaFlagInputSchema;
|
|
14800
15016
|
exports.mcpContinuumDaoMpaFlagOutputSchema = mcpContinuumDaoMpaFlagOutputSchema;
|
|
@@ -14823,6 +15039,8 @@ exports.mcpContinuumDaoTechnocoreBindOutputSchema = mcpContinuumDaoTechnocoreBin
|
|
|
14823
15039
|
exports.mcpContinuumDaoTokenIdInputSchema = mcpContinuumDaoTokenIdInputSchema;
|
|
14824
15040
|
exports.mcpContinuumDaoTransferInputSchema = mcpContinuumDaoTransferInputSchema;
|
|
14825
15041
|
exports.mcpContinuumDaoUndelegateInputSchema = mcpContinuumDaoUndelegateInputSchema;
|
|
15042
|
+
exports.mcpContinuumDaoWithdrawInputSchema = mcpContinuumDaoWithdrawInputSchema;
|
|
15043
|
+
exports.mcpContinuumDaoWriteInput = mcpContinuumDaoWriteInput;
|
|
14826
15044
|
exports.mcpCurveDaoBuildAddLiquidityMultisignInputSchema = mcpCurveDaoBuildAddLiquidityMultisignInputSchema;
|
|
14827
15045
|
exports.mcpCurveDaoBuildGaugeDepositMultisignInputSchema = mcpCurveDaoBuildGaugeDepositMultisignInputSchema;
|
|
14828
15046
|
exports.mcpCurveDaoBuildRemoveLiquidityMultisignInputSchema = mcpCurveDaoBuildRemoveLiquidityMultisignInputSchema;
|