@continuumdao/continuum-node-sdk 1.2.13 → 1.2.14

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (125) hide show
  1. package/dist/core/agent/environment-variables.d.ts +11 -1
  2. package/dist/core/agent/environment-variables.d.ts.map +1 -1
  3. package/dist/core/agent/environment-variables.js +89 -5
  4. package/dist/core/agent/environment-variables.js.map +1 -1
  5. package/dist/core/agent/mcp-servers.d.ts +8 -4
  6. package/dist/core/agent/mcp-servers.d.ts.map +1 -1
  7. package/dist/core/agent/mcp-servers.js +138 -32
  8. package/dist/core/agent/mcp-servers.js.map +1 -1
  9. package/dist/core/agent/webhooks-catalog.d.ts +10 -0
  10. package/dist/core/agent/webhooks-catalog.d.ts.map +1 -0
  11. package/dist/core/agent/webhooks-catalog.js +19 -0
  12. package/dist/core/agent/webhooks-catalog.js.map +1 -0
  13. package/dist/core/agent/webhooks.d.ts +101 -0
  14. package/dist/core/agent/webhooks.d.ts.map +1 -0
  15. package/dist/core/agent/webhooks.js +359 -0
  16. package/dist/core/agent/webhooks.js.map +1 -0
  17. package/dist/core/keygen-id.d.ts.map +1 -1
  18. package/dist/core/keygen-id.js +8 -2
  19. package/dist/core/keygen-id.js.map +1 -1
  20. package/dist/core/keygen.d.ts.map +1 -1
  21. package/dist/core/keygen.js +31 -4
  22. package/dist/core/keygen.js.map +1 -1
  23. package/dist/core/mpc/join-multisign-request.d.ts +6 -0
  24. package/dist/core/mpc/join-multisign-request.d.ts.map +1 -0
  25. package/dist/core/mpc/join-multisign-request.js +19 -0
  26. package/dist/core/mpc/join-multisign-request.js.map +1 -0
  27. package/dist/core/mpc/schemas.d.ts +6 -0
  28. package/dist/core/mpc/schemas.d.ts.map +1 -1
  29. package/dist/core/mpc/schemas.js +20 -0
  30. package/dist/core/mpc/schemas.js.map +1 -1
  31. package/dist/core/mpc/sign-request-utils.d.ts.map +1 -1
  32. package/dist/core/mpc/sign-request-utils.js +7 -2
  33. package/dist/core/mpc/sign-request-utils.js.map +1 -1
  34. package/dist/core/registry/registry-lookup.d.ts +2 -0
  35. package/dist/core/registry/registry-lookup.d.ts.map +1 -1
  36. package/dist/core/registry/registry-lookup.js +5 -0
  37. package/dist/core/registry/registry-lookup.js.map +1 -1
  38. package/dist/evm/forge-broadcast.d.ts +8 -0
  39. package/dist/evm/forge-broadcast.d.ts.map +1 -1
  40. package/dist/evm/forge-broadcast.js +5 -5
  41. package/dist/evm/forge-broadcast.js.map +1 -1
  42. package/dist/evm/join-multisign.d.ts +15 -0
  43. package/dist/evm/join-multisign.d.ts.map +1 -0
  44. package/dist/evm/join-multisign.js +376 -0
  45. package/dist/evm/join-multisign.js.map +1 -0
  46. package/dist/index.d.ts +7 -5
  47. package/dist/index.d.ts.map +1 -1
  48. package/dist/index.js +7 -5
  49. package/dist/index.js.map +1 -1
  50. package/dist/mcp/agent-environment-variables.d.ts +4 -0
  51. package/dist/mcp/agent-environment-variables.d.ts.map +1 -0
  52. package/dist/mcp/agent-environment-variables.js +44 -0
  53. package/dist/mcp/agent-environment-variables.js.map +1 -0
  54. package/dist/mcp/agent-mcp-servers.d.ts.map +1 -1
  55. package/dist/mcp/agent-mcp-servers.js +9 -9
  56. package/dist/mcp/agent-mcp-servers.js.map +1 -1
  57. package/dist/mcp/agent-webhooks.d.ts +4 -0
  58. package/dist/mcp/agent-webhooks.d.ts.map +1 -0
  59. package/dist/mcp/agent-webhooks.js +87 -0
  60. package/dist/mcp/agent-webhooks.js.map +1 -0
  61. package/dist/mcp/defi/aave-v4-input.d.ts +17 -0
  62. package/dist/mcp/defi/aave-v4-input.d.ts.map +1 -0
  63. package/dist/mcp/defi/aave-v4-input.js +363 -0
  64. package/dist/mcp/defi/aave-v4-input.js.map +1 -0
  65. package/dist/mcp/defi/catalog-adapter.d.ts +2 -14
  66. package/dist/mcp/defi/catalog-adapter.d.ts.map +1 -1
  67. package/dist/mcp/defi/catalog-adapter.js +2 -51
  68. package/dist/mcp/defi/catalog-adapter.js.map +1 -1
  69. package/dist/mcp/defi/curve-quote-input.d.ts +9 -0
  70. package/dist/mcp/defi/curve-quote-input.d.ts.map +1 -0
  71. package/dist/mcp/defi/curve-quote-input.js +64 -0
  72. package/dist/mcp/defi/curve-quote-input.js.map +1 -0
  73. package/dist/mcp/defi/discovery.d.ts.map +1 -1
  74. package/dist/mcp/defi/discovery.js +20 -10
  75. package/dist/mcp/defi/discovery.js.map +1 -1
  76. package/dist/mcp/defi/handler.d.ts +0 -8
  77. package/dist/mcp/defi/handler.d.ts.map +1 -1
  78. package/dist/mcp/defi/handler.js +95 -4
  79. package/dist/mcp/defi/handler.js.map +1 -1
  80. package/dist/mcp/defi/input-adapter.d.ts +1 -0
  81. package/dist/mcp/defi/input-adapter.d.ts.map +1 -1
  82. package/dist/mcp/defi/input-adapter.js +69 -38
  83. package/dist/mcp/defi/input-adapter.js.map +1 -1
  84. package/dist/mcp/defi/register-protocol-tools.d.ts.map +1 -1
  85. package/dist/mcp/defi/register-protocol-tools.js +59 -8
  86. package/dist/mcp/defi/register-protocol-tools.js.map +1 -1
  87. package/dist/mcp/defi/tool-schemas.d.ts +19 -0
  88. package/dist/mcp/defi/tool-schemas.d.ts.map +1 -0
  89. package/dist/mcp/defi/tool-schemas.js +65 -0
  90. package/dist/mcp/defi/tool-schemas.js.map +1 -0
  91. package/dist/mcp/defi/uniswap-api-key.d.ts +3 -1
  92. package/dist/mcp/defi/uniswap-api-key.d.ts.map +1 -1
  93. package/dist/mcp/defi/uniswap-api-key.js +11 -2
  94. package/dist/mcp/defi/uniswap-api-key.js.map +1 -1
  95. package/dist/mcp/defi/uniswap-liquidity-input.d.ts +11 -0
  96. package/dist/mcp/defi/uniswap-liquidity-input.d.ts.map +1 -0
  97. package/dist/mcp/defi/uniswap-liquidity-input.js +179 -0
  98. package/dist/mcp/defi/uniswap-liquidity-input.js.map +1 -0
  99. package/dist/mcp/defi/uniswap-liquidity-registry.d.ts +31 -0
  100. package/dist/mcp/defi/uniswap-liquidity-registry.d.ts.map +1 -0
  101. package/dist/mcp/defi/uniswap-liquidity-registry.js +296 -0
  102. package/dist/mcp/defi/uniswap-liquidity-registry.js.map +1 -0
  103. package/dist/mcp/defi/uniswap-quote-input.d.ts +10 -0
  104. package/dist/mcp/defi/uniswap-quote-input.d.ts.map +1 -0
  105. package/dist/mcp/defi/uniswap-quote-input.js +96 -0
  106. package/dist/mcp/defi/uniswap-quote-input.js.map +1 -0
  107. package/dist/mcp/keygen.d.ts.map +1 -1
  108. package/dist/mcp/keygen.js +4 -4
  109. package/dist/mcp/keygen.js.map +1 -1
  110. package/dist/mcp/mpc.d.ts.map +1 -1
  111. package/dist/mcp/mpc.js +7 -1
  112. package/dist/mcp/mpc.js.map +1 -1
  113. package/dist/mcp/register.d.ts +1 -0
  114. package/dist/mcp/register.d.ts.map +1 -1
  115. package/dist/mcp/register.js +6 -0
  116. package/dist/mcp/register.js.map +1 -1
  117. package/dist/mcp/tool-utils.d.ts +7 -0
  118. package/dist/mcp/tool-utils.d.ts.map +1 -1
  119. package/dist/mcp/tool-utils.js +7 -0
  120. package/dist/mcp/tool-utils.js.map +1 -1
  121. package/dist/schemas/extended.d.ts +366 -40
  122. package/dist/schemas/extended.d.ts.map +1 -1
  123. package/dist/schemas/extended.js +202 -28
  124. package/dist/schemas/extended.js.map +1 -1
  125. package/package.json +3 -3
@@ -1,10 +1,10 @@
1
1
  import { getMcpToolDefinitions } from '@continuumdao/ctm-mpc-defi/agent';
2
- import { z } from 'zod';
3
2
  import { executeDefiMcpTool } from './handler.js';
4
3
  import { MCP_NON_SUBMIT_TOOL_NAMES } from './catalog-adapter.js';
5
4
  import { MULTISIGN_CREATE_GAS_GUIDANCE } from '../mpc-gas-docs.js';
6
5
  import { UNISWAP_V4_API_KEY_TOOL_NAMES, UNISWAP_API_KEY_ENV, UNISWAP_API_KEY_SIGNUP_URL, } from './uniswap-api-key.js';
7
- const looseInputSchema = z.record(z.string(), z.unknown());
6
+ import { defiToolInputSchema, defiToolOutputSchema } from './tool-schemas.js';
7
+ import { isAaveV4MultisignTool } from './aave-v4-input.js';
8
8
  /** Register every DeFi catalog tool; calls are gated by DefiProtocolContext.load state. */
9
9
  export function registerAllDefiProtocolTools(server, config, defiContext) {
10
10
  const byProtocol = new Map();
@@ -23,9 +23,50 @@ export function registerAllDefiProtocolTools(server, config, defiContext) {
23
23
  function registerDefiTool(server, config, defiContext, tool) {
24
24
  const description = [
25
25
  tool.description,
26
- !MCP_NON_SUBMIT_TOOL_NAMES.has(tool.name) ? MULTISIGN_CREATE_GAS_GUIDANCE : '',
26
+ !MCP_NON_SUBMIT_TOOL_NAMES.has(tool.name)
27
+ ? `Pass keyGenId + chainId + purposeText (server resolves keyGen, executorAddress, rpcUrl from get_chain_registry rpcGateway, chainDetail). Do not pass rpcUrl. ${MULTISIGN_CREATE_GAS_GUIDANCE}`
28
+ : '',
27
29
  UNISWAP_V4_API_KEY_TOOL_NAMES.has(tool.name)
28
- ? `Uses ${UNISWAP_API_KEY_ENV} from Node → AI Agent → Variables (get a key at ${UNISWAP_API_KEY_SIGNUP_URL}). Do not pass uniswapApiKey in tool input.`
30
+ ? `Uses ${UNISWAP_API_KEY_ENV} from Node → AI Agent → Variables (get a key at ${UNISWAP_API_KEY_SIGNUP_URL}). The server injects the API key automatically — do not pass uniswapApiKey. Check configuration with list_environment_variables.${tool.name === 'ctm_uniswap_v4_quote'
31
+ ? ' Pass keyGenId (preferred KeyGen id) or swapper. Quote defaults match the node app: permit2Disabled true, slippage 0.5, native ETH tokenIn 0x0.'
32
+ : ''}`
33
+ : '',
34
+ tool.name === 'ctm_curve_dao_quote' ||
35
+ tool.name === 'ctm_curve_dao_build_swap_multisign'
36
+ ? 'Call get_defi_protocol_skill({ protocolId: "curve-dao" }). Quote: native 0xeeee/0x0. Build: tokenIn is ERC-20 (wrapped native for ETH in). rpcUrl from chain registry — do not pass rpcUrl.'
37
+ : '',
38
+ tool.name === 'ctm_uniswap_v4_quote' ||
39
+ tool.name === 'ctm_uniswap_v4_create_swap' ||
40
+ tool.name === 'ctm_uniswap_v4_build_swap_multisign'
41
+ ? 'Call get_defi_protocol_skill({ protocolId: "uniswap-v4" }). Three-step: quote → create_swap → build_swap_multisign. Native ETH tokenIn: 0x0. amount on quote is base units (wei).'
42
+ : '',
43
+ tool.name === 'ctm_uniswap_v4_lp_create_position' ||
44
+ tool.name === 'ctm_uniswap_v4_build_mint_liquidity_multisign'
45
+ ? 'LP mint: lp_create_position → build_mint_liquidity_multisign. Pass keyGenId (resolves walletAddress). existingPool or newPool + priceBounds/tickBounds + independentToken (base units). Native ETH: 0x0; pass nativeWrapped on build when needed. After execute: ctm_uniswap_v4_register_position_from_mint_tx (auto-adds ERC721 to token registry).'
46
+ : '',
47
+ tool.name === 'ctm_uniswap_v4_lp_increase' ||
48
+ tool.name === 'ctm_uniswap_v4_build_increase_liquidity_multisign'
49
+ ? 'LP increase: lp_increase → build_increase_liquidity_multisign. Requires nftTokenId from lp_list_positions (token registry ERC721 entries only — no blockchain scan). If missing, register via register_position_nft, add_to_token_registry, or app block scan.'
50
+ : '',
51
+ tool.name === 'ctm_uniswap_v4_lp_decrease' ||
52
+ tool.name === 'ctm_uniswap_v4_build_decrease_liquidity_multisign'
53
+ ? 'LP decrease: lp_decrease (liquidityPercentageToDecrease 1–100) → build_decrease_liquidity_multisign.'
54
+ : '',
55
+ tool.name === 'ctm_uniswap_v4_lp_collect' ||
56
+ tool.name === 'ctm_uniswap_v4_build_collect_fees_multisign'
57
+ ? 'Collect fees: lp_collect → build_collect_fees_multisign. V4 uses zero-liquidity decrease + TAKE_PAIR (no separate staking).'
58
+ : '',
59
+ tool.name === 'ctm_uniswap_v4_lp_list_positions'
60
+ ? 'List V4 position NFTs from the node token registry (ERC721 Position Manager entries). Pass keyGenId + chainId — no RPC log scan. Empty list? register_position_nft or register_position_from_mint_tx after mint, add_to_token_registry (ERC721), or use the app Manage tab block scan.'
61
+ : '',
62
+ tool.name === 'ctm_uniswap_v4_register_position_nft'
63
+ ? 'Add a known position tokenId to the token registry (management-signed ERC721). Use when lp_list_positions does not show a position you own.'
64
+ : '',
65
+ tool.name === 'ctm_uniswap_v4_register_position_from_mint_tx'
66
+ ? 'Parse a completed mint tx receipt and add the new position NFT to the token registry. Call after build_mint_liquidity_multisign executes.'
67
+ : '',
68
+ isAaveV4MultisignTool(tool.name)
69
+ ? 'Call get_defi_protocol_skill({ protocolId: "aave-v4" }) for hubs/spokes and lending workflows. Pass underlying + amountHuman + marketId (optional). spoke is auto-resolved. Native ETH: underlying 0x0. Borrow: underlying = debt token; optional collateralUnderlying. Withdraw/borrow run health-factor preview unless skipHealthPreview; borderline risk needs acknowledgeHealthRisk: true.'
29
70
  : '',
30
71
  tool.prerequisites.length
31
72
  ? `Prerequisites: ${tool.prerequisites.join('; ')}`
@@ -34,11 +75,21 @@ function registerDefiTool(server, config, defiContext, tool) {
34
75
  ]
35
76
  .filter(Boolean)
36
77
  .join('\n');
37
- server.registerTool(tool.name, {
78
+ // Cast avoids TS2589 when vendored ctm-mpc-defi Zod types cross package boundaries.
79
+ const schemaSource = tool;
80
+ registerDefiToolOnServer(server, tool.name, {
38
81
  description,
39
- inputSchema: looseInputSchema,
40
- outputSchema: z.record(z.string(), z.unknown()),
41
- }, async (input) => executeDefiMcpTool(config, defiContext, tool, input));
82
+ inputSchema: defiToolInputSchema(schemaSource),
83
+ outputSchema: defiToolOutputSchema(schemaSource),
84
+ handler: input => executeDefiMcpTool(config, defiContext, tool, input),
85
+ });
86
+ }
87
+ function registerDefiToolOnServer(server, name, registration) {
88
+ server.registerTool(name, {
89
+ description: registration.description,
90
+ inputSchema: registration.inputSchema,
91
+ outputSchema: registration.outputSchema,
92
+ }, registration.handler);
42
93
  }
43
94
  export function markProtocolLoaded(defiContext, protocolId) {
44
95
  const toolNames = getMcpToolDefinitions()
@@ -1 +1 @@
1
- {"version":3,"file":"register-protocol-tools.js","sourceRoot":"","sources":["../../../src/mcp/defi/register-protocol-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register-protocol-tools.js","sourceRoot":"","sources":["../../../src/mcp/defi/register-protocol-tools.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { AnySchema } from '@modelcontextprotocol/sdk/server/zod-compat.js';
2
+ type DefiToolSchemaSource = {
3
+ name: string;
4
+ inputZod: AnySchema;
5
+ outputZod: AnySchema;
6
+ };
7
+ /**
8
+ * MCP registration schema derived from ctm-mpc-defi Zod (same package instance only).
9
+ * Never .extend() with SDK zod — that breaks parse (keyValidator._parse is not a function).
10
+ */
11
+ export declare function defiToolInputSchema(tool: DefiToolSchemaSource): AnySchema;
12
+ /**
13
+ * MCP output registration — package `z.record()` outputs (e.g. quote JSON) are not
14
+ * object schemas; normalizeObjectSchema returns undefined and output validation
15
+ * crashes (reading '_zod' of undefined). Handler still validates via parseMcpToolOutput.
16
+ */
17
+ export declare function defiToolOutputSchema(tool: DefiToolSchemaSource): AnySchema;
18
+ export {};
19
+ //# sourceMappingURL=tool-schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-schemas.d.ts","sourceRoot":"","sources":["../../../src/mcp/defi/tool-schemas.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gDAAgD,CAAC;AAe9E,KAAK,oBAAoB,GAAG;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,SAAS,CAAC;IACpB,SAAS,EAAE,SAAS,CAAC;CACrB,CAAC;AA8BF;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,SAAS,CAgCzE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,oBAAoB,GAAG,SAAS,CAK1E"}
@@ -0,0 +1,65 @@
1
+ import { normalizeObjectSchema } from '@modelcontextprotocol/sdk/server/zod-compat.js';
2
+ import { MCP_LOOSE_OBJECT_SCHEMA } from '../tool-utils.js';
3
+ import { UNISWAP_V4_API_KEY_TOOL_NAMES } from './uniswap-api-key.js';
4
+ import { UNISWAP_V4_QUOTE_TOOL_NAME } from './uniswap-quote-input.js';
5
+ import { UNISWAP_V4_LP_LIST_POSITIONS_TOOL_NAME, UNISWAP_V4_LP_PREP_TOOL_NAMES, } from './uniswap-liquidity-input.js';
6
+ import { UNISWAP_V4_REGISTER_POSITION_FROM_MINT_TX_TOOL_NAME, UNISWAP_V4_REGISTER_POSITION_NFT_TOOL_NAME, } from './uniswap-liquidity-registry.js';
7
+ import { isAaveV4MultisignTool } from './aave-v4-input.js';
8
+ /** Fields resolved server-side from keyGenId + chain registry before parseMcpToolInput. */
9
+ const MULTISIGN_ENRICHMENT_OPTIONAL_KEYS = {
10
+ keyGen: true,
11
+ rpcUrl: true,
12
+ executorAddress: true,
13
+ chainDetail: true,
14
+ };
15
+ function isZodObject(schema) {
16
+ return (typeof schema.omit === 'function' &&
17
+ typeof schema.partial === 'function' &&
18
+ typeof schema.passthrough === 'function' &&
19
+ typeof schema.shape === 'object');
20
+ }
21
+ function hasMultisignEnrichmentShape(schema) {
22
+ return 'keyGen' in schema.shape;
23
+ }
24
+ /**
25
+ * MCP registration schema derived from ctm-mpc-defi Zod (same package instance only).
26
+ * Never .extend() with SDK zod — that breaks parse (keyValidator._parse is not a function).
27
+ */
28
+ export function defiToolInputSchema(tool) {
29
+ if (!isZodObject(tool.inputZod)) {
30
+ return tool.inputZod;
31
+ }
32
+ let zodObject = tool.inputZod;
33
+ if (UNISWAP_V4_API_KEY_TOOL_NAMES.has(tool.name)) {
34
+ zodObject = zodObject.omit({ uniswapApiKey: true });
35
+ }
36
+ if (hasMultisignEnrichmentShape(zodObject)) {
37
+ // Agent passes keyGenId; handler enriches to keyGen/rpcUrl/executorAddress/chainDetail.
38
+ const partial = zodObject.partial(MULTISIGN_ENRICHMENT_OPTIONAL_KEYS);
39
+ zodObject = partial.passthrough();
40
+ if (isAaveV4MultisignTool(tool.name) && 'spoke' in zodObject.shape) {
41
+ // Server resolves spoke from Aave v4 API (marketId + underlying).
42
+ zodObject = zodObject.partial({ spoke: true });
43
+ }
44
+ }
45
+ else if (tool.name === UNISWAP_V4_QUOTE_TOOL_NAME ||
46
+ UNISWAP_V4_LP_PREP_TOOL_NAMES.has(tool.name) ||
47
+ tool.name === UNISWAP_V4_LP_LIST_POSITIONS_TOOL_NAME ||
48
+ tool.name === UNISWAP_V4_REGISTER_POSITION_NFT_TOOL_NAME ||
49
+ tool.name === UNISWAP_V4_REGISTER_POSITION_FROM_MINT_TX_TOOL_NAME) {
50
+ zodObject = zodObject.passthrough();
51
+ }
52
+ return zodObject;
53
+ }
54
+ /**
55
+ * MCP output registration — package `z.record()` outputs (e.g. quote JSON) are not
56
+ * object schemas; normalizeObjectSchema returns undefined and output validation
57
+ * crashes (reading '_zod' of undefined). Handler still validates via parseMcpToolOutput.
58
+ */
59
+ export function defiToolOutputSchema(tool) {
60
+ if (!normalizeObjectSchema(tool.outputZod)) {
61
+ return MCP_LOOSE_OBJECT_SCHEMA;
62
+ }
63
+ return tool.outputZod;
64
+ }
65
+ //# sourceMappingURL=tool-schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-schemas.js","sourceRoot":"","sources":["../../../src/mcp/defi/tool-schemas.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,qBAAqB,EAAC,MAAM,gDAAgD,CAAC;AACrF,OAAO,EAAC,uBAAuB,EAAC,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAC,6BAA6B,EAAC,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAC,0BAA0B,EAAC,MAAM,0BAA0B,CAAC;AACpE,OAAO,EACN,sCAAsC,EACtC,6BAA6B,GAC7B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACN,mDAAmD,EACnD,0CAA0C,GAC1C,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAC,qBAAqB,EAAC,MAAM,oBAAoB,CAAC;AAezD,2FAA2F;AAC3F,MAAM,kCAAkC,GAAG;IAC1C,MAAM,EAAE,IAAI;IACZ,MAAM,EAAE,IAAI;IACZ,eAAe,EAAE,IAAI;IACrB,WAAW,EAAE,IAAI;CACR,CAAC;AAEX,SAAS,WAAW,CAAC,MAAiB;IACrC,OAAO,CACN,OAAQ,MAA2B,CAAC,IAAI,KAAK,UAAU;QACvD,OAAQ,MAA8B,CAAC,OAAO,KAAK,UAAU;QAC7D,OAAQ,MAAkC,CAAC,WAAW,KAAK,UAAU;QACrE,OAAQ,MAA4B,CAAC,KAAK,KAAK,QAAQ,CACvD,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAAC,MAAqB;IACzD,OAAO,QAAQ,IAAI,MAAM,CAAC,KAAK,CAAC;AACjC,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CAAC,IAA0B;IAC7D,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC,QAAQ,CAAC;IACtB,CAAC;IAED,IAAI,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;IAE9B,IAAI,6BAA6B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QAClD,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,EAAC,aAAa,EAAE,IAAI,EAAC,CAAqB,CAAC;IACvE,CAAC;IAED,IAAI,2BAA2B,CAAC,SAAS,CAAC,EAAE,CAAC;QAC5C,wFAAwF;QACxF,MAAM,OAAO,GAAG,SAAS,CAAC,OAAO,CAChC,kCAAkC,CACjB,CAAC;QACnB,SAAS,GAAG,OAAO,CAAC,WAAW,EAAsB,CAAC;QACtD,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,OAAO,IAAI,SAAS,CAAC,KAAK,EAAE,CAAC;YACpE,kEAAkE;YAClE,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,EAAC,KAAK,EAAE,IAAI,EAAC,CAAqB,CAAC;QAClE,CAAC;IACF,CAAC;SAAM,IACN,IAAI,CAAC,IAAI,KAAK,0BAA0B;QACxC,6BAA6B,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QAC5C,IAAI,CAAC,IAAI,KAAK,sCAAsC;QACpD,IAAI,CAAC,IAAI,KAAK,0CAA0C;QACxD,IAAI,CAAC,IAAI,KAAK,mDAAmD,EAChE,CAAC;QACF,SAAS,GAAG,SAAS,CAAC,WAAW,EAAsB,CAAC;IACzD,CAAC;IAED,OAAO,SAAS,CAAC;AAClB,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAA0B;IAC9D,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,SAAsB,CAAC,EAAE,CAAC;QACzD,OAAO,uBAAoC,CAAC;IAC7C,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC;AACvB,CAAC"}
@@ -2,10 +2,12 @@ import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
2
2
  import type { NodeSdkConfig } from '../../config/schema.js';
3
3
  export declare const UNISWAP_API_KEY_ENV = "UNISWAP_API_KEY";
4
4
  export declare const UNISWAP_API_KEY_SIGNUP_URL = "https://developers.uniswap.org/dashboard/welcome";
5
- /** Uniswap V4 MCP tools that call the Trade API and require an x-api-key. */
5
+ /** Uniswap V4 MCP tools that call the Trade / LP API and require an x-api-key. */
6
6
  export declare const UNISWAP_V4_API_KEY_TOOL_NAMES: Set<string>;
7
7
  export declare function missingUniswapApiKeyCallToolResult(): CallToolResult;
8
8
  export declare function resolveUniswapApiKey(config: NodeSdkConfig): Promise<string | undefined>;
9
+ /** Whether UNISWAP_API_KEY is set (value is never returned). */
10
+ export declare function isUniswapApiKeyConfigured(config: NodeSdkConfig): Promise<boolean>;
9
11
  export declare function injectUniswapApiKeyForTool(config: NodeSdkConfig, toolName: string, input: Record<string, unknown>): Promise<{
10
12
  ok: true;
11
13
  input: Record<string, unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"uniswap-api-key.d.ts","sourceRoot":"","sources":["../../../src/mcp/defi/uniswap-api-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,oCAAoC,CAAC;AAEvE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAE1D,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAErD,eAAO,MAAM,0BAA0B,qDACY,CAAC;AAEpD,6EAA6E;AAC7E,eAAO,MAAM,6BAA6B,aAGxC,CAAC;AAEH,wBAAgB,kCAAkC,IAAI,cAAc,CAcnE;AAED,wBAAsB,oBAAoB,CACzC,MAAM,EAAE,aAAa,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAS7B;AAED,wBAAsB,0BAA0B,CAC/C,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CACT;IAAC,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAC,GAAG;IAAC,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAC,CAChF,CAiBA"}
1
+ {"version":3,"file":"uniswap-api-key.d.ts","sourceRoot":"","sources":["../../../src/mcp/defi/uniswap-api-key.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,oCAAoC,CAAC;AAEvE,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAE1D,eAAO,MAAM,mBAAmB,oBAAoB,CAAC;AAErD,eAAO,MAAM,0BAA0B,qDACY,CAAC;AAEpD,kFAAkF;AAClF,eAAO,MAAM,6BAA6B,aAOxC,CAAC;AAEH,wBAAgB,kCAAkC,IAAI,cAAc,CAenE;AAED,wBAAsB,oBAAoB,CACzC,MAAM,EAAE,aAAa,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAS7B;AAED,gEAAgE;AAChE,wBAAsB,yBAAyB,CAC9C,MAAM,EAAE,aAAa,GACnB,OAAO,CAAC,OAAO,CAAC,CAElB;AAED,wBAAsB,0BAA0B,CAC/C,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CACT;IAAC,EAAE,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAC,GAAG;IAAC,EAAE,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,cAAc,CAAA;CAAC,CAChF,CAiBA"}
@@ -1,10 +1,14 @@
1
1
  import { getEnvironmentVariable } from '../../core/agent/environment-variables.js';
2
2
  export const UNISWAP_API_KEY_ENV = 'UNISWAP_API_KEY';
3
3
  export const UNISWAP_API_KEY_SIGNUP_URL = 'https://developers.uniswap.org/dashboard/welcome';
4
- /** Uniswap V4 MCP tools that call the Trade API and require an x-api-key. */
4
+ /** Uniswap V4 MCP tools that call the Trade / LP API and require an x-api-key. */
5
5
  export const UNISWAP_V4_API_KEY_TOOL_NAMES = new Set([
6
6
  'ctm_uniswap_v4_quote',
7
7
  'ctm_uniswap_v4_create_swap',
8
+ 'ctm_uniswap_v4_lp_create_position',
9
+ 'ctm_uniswap_v4_lp_increase',
10
+ 'ctm_uniswap_v4_lp_decrease',
11
+ 'ctm_uniswap_v4_lp_collect',
8
12
  ]);
9
13
  export function missingUniswapApiKeyCallToolResult() {
10
14
  return {
@@ -13,8 +17,9 @@ export function missingUniswapApiKeyCallToolResult() {
13
17
  type: 'text',
14
18
  text: [
15
19
  'Uniswap V4 Trade API requires an API key.',
16
- `Add environment variable ${UNISWAP_API_KEY_ENV} in the Node page → AI Agent → Variables tab.`,
20
+ `Add environment variable ${UNISWAP_API_KEY_ENV} in the Node page → AI Agent → Variables tab (add_environment_variable MCP tool).`,
17
21
  `Create a key at ${UNISWAP_API_KEY_SIGNUP_URL}`,
22
+ `Check configuration with list_environment_variables — do not pass uniswapApiKey in tool input.`,
18
23
  ].join('\n'),
19
24
  },
20
25
  ],
@@ -31,6 +36,10 @@ export async function resolveUniswapApiKey(config) {
31
36
  const value = result.data.value.trim();
32
37
  return value || undefined;
33
38
  }
39
+ /** Whether UNISWAP_API_KEY is set (value is never returned). */
40
+ export async function isUniswapApiKeyConfigured(config) {
41
+ return (await resolveUniswapApiKey(config)) !== undefined;
42
+ }
34
43
  export async function injectUniswapApiKeyForTool(config, toolName, input) {
35
44
  if (!UNISWAP_V4_API_KEY_TOOL_NAMES.has(toolName)) {
36
45
  return { ok: true, input };
@@ -1 +1 @@
1
- {"version":3,"file":"uniswap-api-key.js","sourceRoot":"","sources":["../../../src/mcp/defi/uniswap-api-key.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,sBAAsB,EAAC,MAAM,2CAA2C,CAAC;AAGjF,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAErD,MAAM,CAAC,MAAM,0BAA0B,GACtC,kDAAkD,CAAC;AAEpD,6EAA6E;AAC7E,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAAC;IACpD,sBAAsB;IACtB,4BAA4B;CAC5B,CAAC,CAAC;AAEH,MAAM,UAAU,kCAAkC;IACjD,OAAO;QACN,OAAO,EAAE;YACR;gBACC,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE;oBACL,2CAA2C;oBAC3C,4BAA4B,mBAAmB,+CAA+C;oBAC9F,mBAAmB,0BAA0B,EAAE;iBAC/C,CAAC,IAAI,CAAC,IAAI,CAAC;aACZ;SACD;QACD,OAAO,EAAE,IAAI;KACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,MAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE;QACnD,IAAI,EAAE,mBAAmB;KACzB,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACvC,OAAO,KAAK,IAAI,SAAS,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC/C,MAAqB,EACrB,QAAgB,EAChB,KAA8B;IAI9B,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClD,OAAO,EAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAC,CAAC;IAC1B,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kCAAkC,EAAE,EAAC,CAAC;IAClE,CAAC;IAED,OAAO;QACN,EAAE,EAAE,IAAI;QACR,KAAK,EAAE;YACN,GAAG,KAAK;YACR,aAAa,EAAE,MAAM;SACrB;KACD,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"uniswap-api-key.js","sourceRoot":"","sources":["../../../src/mcp/defi/uniswap-api-key.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,sBAAsB,EAAC,MAAM,2CAA2C,CAAC;AAGjF,MAAM,CAAC,MAAM,mBAAmB,GAAG,iBAAiB,CAAC;AAErD,MAAM,CAAC,MAAM,0BAA0B,GACtC,kDAAkD,CAAC;AAEpD,kFAAkF;AAClF,MAAM,CAAC,MAAM,6BAA6B,GAAG,IAAI,GAAG,CAAC;IACpD,sBAAsB;IACtB,4BAA4B;IAC5B,mCAAmC;IACnC,4BAA4B;IAC5B,4BAA4B;IAC5B,2BAA2B;CAC3B,CAAC,CAAC;AAEH,MAAM,UAAU,kCAAkC;IACjD,OAAO;QACN,OAAO,EAAE;YACR;gBACC,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE;oBACL,2CAA2C;oBAC3C,4BAA4B,mBAAmB,mFAAmF;oBAClI,mBAAmB,0BAA0B,EAAE;oBAC/C,gGAAgG;iBAChG,CAAC,IAAI,CAAC,IAAI,CAAC;aACZ;SACD;QACD,OAAO,EAAE,IAAI;KACb,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACzC,MAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,sBAAsB,CAAC,MAAM,EAAE;QACnD,IAAI,EAAE,mBAAmB;KACzB,CAAC,CAAC;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IACvC,OAAO,KAAK,IAAI,SAAS,CAAC;AAC3B,CAAC;AAED,gEAAgE;AAChE,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC9C,MAAqB;IAErB,OAAO,CAAC,MAAM,oBAAoB,CAAC,MAAM,CAAC,CAAC,KAAK,SAAS,CAAC;AAC3D,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC/C,MAAqB,EACrB,QAAgB,EAChB,KAA8B;IAI9B,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClD,OAAO,EAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAC,CAAC;IAC1B,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,EAAE,CAAC;QACb,OAAO,EAAC,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,kCAAkC,EAAE,EAAC,CAAC;IAClE,CAAC;IAED,OAAO;QACN,EAAE,EAAE,IAAI;QACR,KAAK,EAAE;YACN,GAAG,KAAK;YACR,aAAa,EAAE,MAAM;SACrB;KACD,CAAC;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { NodeSdkConfig } from '../../config/schema.js';
2
+ import type { SdkResult } from '../../core/result.js';
3
+ export declare const UNISWAP_V4_LP_PREP_TOOL_NAMES: Set<string>;
4
+ export declare const UNISWAP_V4_LP_LIST_POSITIONS_TOOL_NAME = "ctm_uniswap_v4_lp_list_positions";
5
+ /** Adapt Uniswap V4 LP prep tools (create/increase/decrease/claim). */
6
+ export declare function adaptUniswapLiquidityPrepMcpInput(config: NodeSdkConfig, toolName: string, input: Record<string, unknown>): Promise<SdkResult<Record<string, unknown>>>;
7
+ /** Adapt list-positions: keyGenId → walletAddress (token registry only; no rpcUrl). */
8
+ export declare function adaptUniswapLiquidityListPositionsMcpInput(config: NodeSdkConfig, toolName: string, input: Record<string, unknown>): Promise<SdkResult<Record<string, unknown>>>;
9
+ export declare function isUniswapLiquidityPrepTool(toolName: string): boolean;
10
+ export declare function isUniswapLiquidityListPositionsTool(toolName: string): boolean;
11
+ //# sourceMappingURL=uniswap-liquidity-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniswap-liquidity-input.d.ts","sourceRoot":"","sources":["../../../src/mcp/defi/uniswap-liquidity-input.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAC1D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAIpD,eAAO,MAAM,6BAA6B,aAKxC,CAAC;AAEH,eAAO,MAAM,sCAAsC,qCAAqC,CAAC;AAwFzF,uEAAuE;AACvE,wBAAsB,iCAAiC,CACtD,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAsD7C;AAED,uFAAuF;AACvF,wBAAsB,0CAA0C,CAC/D,MAAM,EAAE,aAAa,EACrB,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,CAuC7C;AAED,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpE;AAED,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE7E"}
@@ -0,0 +1,179 @@
1
+ import { zeroAddress } from 'viem';
2
+ import { parseUniswapChainId } from '@continuumdao/ctm-mpc-defi/protocols/evm/uniswap-v4';
3
+ import { enrichMultisignContext } from './input-adapter.js';
4
+ import { assertUniswapV4PositionNftInRegistry } from './uniswap-liquidity-registry.js';
5
+ export const UNISWAP_V4_LP_PREP_TOOL_NAMES = new Set([
6
+ 'ctm_uniswap_v4_lp_create_position',
7
+ 'ctm_uniswap_v4_lp_increase',
8
+ 'ctm_uniswap_v4_lp_decrease',
9
+ 'ctm_uniswap_v4_lp_collect',
10
+ ]);
11
+ export const UNISWAP_V4_LP_LIST_POSITIONS_TOOL_NAME = 'ctm_uniswap_v4_lp_list_positions';
12
+ const LP_PREP_TOOLS_REQUIRING_REGISTRY_NFT = new Map([
13
+ ['ctm_uniswap_v4_lp_increase', 'nftTokenId'],
14
+ ['ctm_uniswap_v4_lp_decrease', 'nftTokenId'],
15
+ ['ctm_uniswap_v4_lp_collect', 'tokenId'],
16
+ ]);
17
+ const MULTISIGN_ENRICHMENT_KEYS = [
18
+ 'keyGenId',
19
+ 'executorAddress',
20
+ 'rpcUrl',
21
+ 'chainDetail',
22
+ 'useCustomGas',
23
+ 'customGasChainDetails',
24
+ ];
25
+ function normalizeNativeTokenAddress(token) {
26
+ if (typeof token !== 'string')
27
+ return token;
28
+ const trimmed = token.trim();
29
+ if (!trimmed)
30
+ return token;
31
+ const lower = trimmed.toLowerCase();
32
+ if (lower === 'eth' ||
33
+ lower === 'native' ||
34
+ lower === 'native_eth' ||
35
+ lower === zeroAddress.toLowerCase()) {
36
+ return zeroAddress;
37
+ }
38
+ return token;
39
+ }
40
+ function normalizeLpAddresses(input) {
41
+ if (input.existingPool && typeof input.existingPool === 'object') {
42
+ const pool = { ...input.existingPool };
43
+ pool.token0Address = normalizeNativeTokenAddress(pool.token0Address);
44
+ pool.token1Address = normalizeNativeTokenAddress(pool.token1Address);
45
+ input.existingPool = pool;
46
+ }
47
+ if (input.newPool && typeof input.newPool === 'object') {
48
+ const pool = { ...input.newPool };
49
+ pool.token0Address = normalizeNativeTokenAddress(pool.token0Address);
50
+ pool.token1Address = normalizeNativeTokenAddress(pool.token1Address);
51
+ input.newPool = pool;
52
+ }
53
+ if (input.independentToken && typeof input.independentToken === 'object') {
54
+ const tok = { ...input.independentToken };
55
+ tok.tokenAddress = normalizeNativeTokenAddress(tok.tokenAddress);
56
+ input.independentToken = tok;
57
+ }
58
+ if (input.token0Address != null) {
59
+ input.token0Address = normalizeNativeTokenAddress(input.token0Address);
60
+ }
61
+ if (input.token1Address != null) {
62
+ input.token1Address = normalizeNativeTokenAddress(input.token1Address);
63
+ }
64
+ }
65
+ async function resolveWalletFromKeyGen(config, input) {
66
+ const keyGenId = typeof input.keyGenId === 'string' && input.keyGenId.trim()
67
+ ? input.keyGenId.trim()
68
+ : undefined;
69
+ if (!keyGenId) {
70
+ return { ok: true, data: input };
71
+ }
72
+ const enriched = await enrichMultisignContext(config, {
73
+ keyGenId,
74
+ chainId: input.chainId,
75
+ });
76
+ if (!enriched.ok) {
77
+ return enriched;
78
+ }
79
+ const adapted = { ...input };
80
+ if (typeof adapted.walletAddress !== 'string' ||
81
+ !String(adapted.walletAddress).trim()) {
82
+ adapted.walletAddress = enriched.data.executorAddress;
83
+ }
84
+ adapted.chainId = enriched.data.chainId;
85
+ return { ok: true, data: adapted };
86
+ }
87
+ /** Adapt Uniswap V4 LP prep tools (create/increase/decrease/claim). */
88
+ export async function adaptUniswapLiquidityPrepMcpInput(config, toolName, input) {
89
+ if (!UNISWAP_V4_LP_PREP_TOOL_NAMES.has(toolName)) {
90
+ return { ok: true, data: input };
91
+ }
92
+ const adapted = { ...input };
93
+ normalizeLpAddresses(adapted);
94
+ if (adapted.slippageTolerance == null) {
95
+ adapted.slippageTolerance = 0.5;
96
+ }
97
+ if (adapted.chainId != null) {
98
+ try {
99
+ adapted.chainId = parseUniswapChainId(adapted.chainId);
100
+ }
101
+ catch {
102
+ /* keep original for Zod to reject */
103
+ }
104
+ }
105
+ const walletResolved = await resolveWalletFromKeyGen(config, adapted);
106
+ if (!walletResolved.ok) {
107
+ return walletResolved;
108
+ }
109
+ const out = walletResolved.data;
110
+ if (typeof out.keyGen === 'object' && out.keyGen !== null) {
111
+ delete out.keyGen;
112
+ }
113
+ for (const key of MULTISIGN_ENRICHMENT_KEYS) {
114
+ delete out[key];
115
+ }
116
+ const nftField = LP_PREP_TOOLS_REQUIRING_REGISTRY_NFT.get(toolName);
117
+ if (nftField && out.chainId != null) {
118
+ const rawId = out[nftField];
119
+ if (rawId != null && String(rawId).trim()) {
120
+ let chainId;
121
+ try {
122
+ chainId = parseUniswapChainId(out.chainId);
123
+ }
124
+ catch {
125
+ return { ok: true, data: out };
126
+ }
127
+ const inRegistry = await assertUniswapV4PositionNftInRegistry(config, {
128
+ chainId,
129
+ tokenId: String(rawId),
130
+ });
131
+ if (!inRegistry.ok) {
132
+ return inRegistry;
133
+ }
134
+ }
135
+ }
136
+ return { ok: true, data: out };
137
+ }
138
+ /** Adapt list-positions: keyGenId → walletAddress (token registry only; no rpcUrl). */
139
+ export async function adaptUniswapLiquidityListPositionsMcpInput(config, toolName, input) {
140
+ if (toolName !== UNISWAP_V4_LP_LIST_POSITIONS_TOOL_NAME) {
141
+ return { ok: true, data: input };
142
+ }
143
+ const adapted = { ...input };
144
+ const keyGenId = typeof adapted.keyGenId === 'string' && adapted.keyGenId.trim()
145
+ ? adapted.keyGenId.trim()
146
+ : undefined;
147
+ if (keyGenId) {
148
+ const enriched = await enrichMultisignContext(config, {
149
+ keyGenId,
150
+ chainId: adapted.chainId,
151
+ });
152
+ if (!enriched.ok) {
153
+ return enriched;
154
+ }
155
+ if (typeof adapted.walletAddress !== 'string' ||
156
+ !String(adapted.walletAddress).trim()) {
157
+ adapted.walletAddress = enriched.data.executorAddress;
158
+ }
159
+ adapted.chainId = enriched.data.chainId;
160
+ }
161
+ if (adapted.chainId != null) {
162
+ try {
163
+ adapted.chainId = parseUniswapChainId(adapted.chainId);
164
+ }
165
+ catch {
166
+ /* Zod */
167
+ }
168
+ }
169
+ delete adapted.keyGenId;
170
+ delete adapted.rpcUrl;
171
+ return { ok: true, data: adapted };
172
+ }
173
+ export function isUniswapLiquidityPrepTool(toolName) {
174
+ return UNISWAP_V4_LP_PREP_TOOL_NAMES.has(toolName);
175
+ }
176
+ export function isUniswapLiquidityListPositionsTool(toolName) {
177
+ return toolName === UNISWAP_V4_LP_LIST_POSITIONS_TOOL_NAME;
178
+ }
179
+ //# sourceMappingURL=uniswap-liquidity-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniswap-liquidity-input.js","sourceRoot":"","sources":["../../../src/mcp/defi/uniswap-liquidity-input.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { type Address } from 'viem';
2
+ import type { NodeSdkConfig } from '../../config/schema.js';
3
+ import type { SdkResult } from '../../core/result.js';
4
+ export declare const UNISWAP_V4_REGISTER_POSITION_NFT_TOOL_NAME = "ctm_uniswap_v4_register_position_nft";
5
+ export declare const UNISWAP_V4_REGISTER_POSITION_FROM_MINT_TX_TOOL_NAME = "ctm_uniswap_v4_register_position_from_mint_tx";
6
+ export declare function isUniswapRegisterPositionNftTool(toolName: string): boolean;
7
+ export declare function isUniswapRegisterPositionFromMintTxTool(toolName: string): boolean;
8
+ export declare function listUniswapV4PositionsFromTokenRegistryMcp(config: NodeSdkConfig, input: Record<string, unknown>): Promise<SdkResult<{
9
+ source: 'token_registry';
10
+ positions: unknown[];
11
+ }>>;
12
+ export declare function assertUniswapV4PositionNftInRegistry(config: NodeSdkConfig, args: {
13
+ chainId: number;
14
+ tokenId: string;
15
+ positionManager?: Address;
16
+ }): Promise<SdkResult<{
17
+ tokenId: string;
18
+ positionManager: Address;
19
+ }>>;
20
+ export declare function registerUniswapV4PositionNftMcp(config: NodeSdkConfig, input: Record<string, unknown>): Promise<SdkResult<{
21
+ message: string;
22
+ tokenId: string;
23
+ positionManager: Address;
24
+ }>>;
25
+ export declare function registerUniswapV4PositionFromMintTxMcp(config: NodeSdkConfig, input: Record<string, unknown>): Promise<SdkResult<{
26
+ message: string;
27
+ tokenId: string;
28
+ positionManager: Address;
29
+ registered: boolean;
30
+ }>>;
31
+ //# sourceMappingURL=uniswap-liquidity-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"uniswap-liquidity-registry.d.ts","sourceRoot":"","sources":["../../../src/mcp/defi/uniswap-liquidity-registry.ts"],"names":[],"mappings":"AAAA,OAAO,EAKN,KAAK,OAAO,EACZ,MAAM,MAAM,CAAC;AAOd,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,wBAAwB,CAAC;AAU1D,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAC;AAQpD,eAAO,MAAM,0CAA0C,yCAChB,CAAC;AACxC,eAAO,MAAM,mDAAmD,kDAChB,CAAC;AAEjD,wBAAgB,gCAAgC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAE1E;AAED,wBAAgB,uCAAuC,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEjF;AA4ED,wBAAsB,0CAA0C,CAC/D,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC,SAAS,CAAC;IAAC,MAAM,EAAE,gBAAgB,CAAC;IAAC,SAAS,EAAE,OAAO,EAAE,CAAA;CAAC,CAAC,CAAC,CAuBtE;AAED,wBAAsB,oCAAoC,CACzD,MAAM,EAAE,aAAa,EACrB,IAAI,EAAE;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,eAAe,CAAC,EAAE,OAAO,CAAA;CAAC,GACjE,OAAO,CAAC,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAC,CAAC,CAAC,CAmCjE;AAsED,wBAAsB,+BAA+B,CACpD,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CACT,SAAS,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,eAAe,EAAE,OAAO,CAAA;CAAC,CAAC,CACvE,CA0BA;AAED,wBAAsB,sCAAsC,CAC3D,MAAM,EAAE,aAAa,EACrB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CACT,SAAS,CAAC;IACT,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,OAAO,CAAC;IACzB,UAAU,EAAE,OAAO,CAAC;CACpB,CAAC,CACF,CA8EA"}