@andrewkimjoseph/celina-sdk 0.7.14 → 0.8.1

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 (83) hide show
  1. package/README.md +6 -40
  2. package/build/analytics/mcp-tool-events.js +0 -12
  3. package/build/analytics/mcp-tool-events.js.map +1 -1
  4. package/build/analytics/wallet-extract.js +4 -3
  5. package/build/analytics/wallet-extract.js.map +1 -1
  6. package/build/config/chains.js +4 -1
  7. package/build/config/chains.js.map +1 -1
  8. package/build/config/sdk-config.d.ts +0 -4
  9. package/build/config/sdk-config.js +0 -4
  10. package/build/config/sdk-config.js.map +1 -1
  11. package/build/index.d.ts +0 -10
  12. package/build/index.js +0 -7
  13. package/build/index.js.map +1 -1
  14. package/build/services/token.service.d.ts +2 -1
  15. package/build/services/token.service.js +2 -1
  16. package/build/services/token.service.js.map +1 -1
  17. package/build/tools/catalog.d.ts +2 -0
  18. package/build/tools/catalog.js +15 -8
  19. package/build/tools/catalog.js.map +1 -1
  20. package/build/tools/domains/blockchain.js +3 -3
  21. package/build/tools/domains/blockchain.js.map +1 -1
  22. package/build/tools/domains/governance.js +3 -3
  23. package/build/tools/domains/governance.js.map +1 -1
  24. package/build/tools/domains/index.js +0 -2
  25. package/build/tools/domains/index.js.map +1 -1
  26. package/build/tools/domains/staking.js +2 -2
  27. package/build/tools/domains/staking.js.map +1 -1
  28. package/build/tools/domains/token.js +1 -1
  29. package/build/tools/domains/token.js.map +1 -1
  30. package/build/tools/filter.js +0 -13
  31. package/build/tools/filter.js.map +1 -1
  32. package/build/tools/index.d.ts +1 -2
  33. package/build/tools/index.js +1 -2
  34. package/build/tools/index.js.map +1 -1
  35. package/build/tools/schemas/common.d.ts +21 -24
  36. package/build/tools/schemas/common.js +34 -21
  37. package/build/tools/schemas/common.js.map +1 -1
  38. package/build/tools/types.d.ts +0 -26
  39. package/package.json +1 -2
  40. package/tests/README.md +2 -0
  41. package/tests/catalog/domains/chain-ext.ts +14 -14
  42. package/tests/catalog/domains/defi.ts +12 -12
  43. package/tests/catalog/operations.ts +2 -7
  44. package/build/clients/carbon-rest.d.ts +0 -17
  45. package/build/clients/carbon-rest.js +0 -59
  46. package/build/clients/carbon-rest.js.map +0 -1
  47. package/build/clients/carbon-sdk.d.ts +0 -31
  48. package/build/clients/carbon-sdk.js +0 -48
  49. package/build/clients/carbon-sdk.js.map +0 -1
  50. package/build/config/carbon.d.ts +0 -15
  51. package/build/config/carbon.js +0 -18
  52. package/build/config/carbon.js.map +0 -1
  53. package/build/services/carbon.service.d.ts +0 -73
  54. package/build/services/carbon.service.js +0 -204
  55. package/build/services/carbon.service.js.map +0 -1
  56. package/build/tools/domains/carbon.d.ts +0 -2
  57. package/build/tools/domains/carbon.js +0 -200
  58. package/build/tools/domains/carbon.js.map +0 -1
  59. package/build/tools/utils/carbon-prepare-handler.d.ts +0 -6
  60. package/build/tools/utils/carbon-prepare-handler.js +0 -17
  61. package/build/tools/utils/carbon-prepare-handler.js.map +0 -1
  62. package/build/types/carbon.d.ts +0 -31
  63. package/build/types/carbon.js +0 -2
  64. package/build/types/carbon.js.map +0 -1
  65. package/build/utils/carbon-execution.d.ts +0 -11
  66. package/build/utils/carbon-execution.js +0 -106
  67. package/build/utils/carbon-execution.js.map +0 -1
  68. package/build/utils/carbon-prepared-flow.d.ts +0 -11
  69. package/build/utils/carbon-prepared-flow.js +0 -28
  70. package/build/utils/carbon-prepared-flow.js.map +0 -1
  71. package/build/utils/carbon-rest-adapter.d.ts +0 -8
  72. package/build/utils/carbon-rest-adapter.js +0 -79
  73. package/build/utils/carbon-rest-adapter.js.map +0 -1
  74. package/build/utils/carbon-step-labels.d.ts +0 -12
  75. package/build/utils/carbon-step-labels.js +0 -180
  76. package/build/utils/carbon-step-labels.js.map +0 -1
  77. package/build/utils/carbon-token.d.ts +0 -10
  78. package/build/utils/carbon-token.js +0 -39
  79. package/build/utils/carbon-token.js.map +0 -1
  80. package/build/utils/finalize-carbon-prepare.d.ts +0 -10
  81. package/build/utils/finalize-carbon-prepare.js +0 -17
  82. package/build/utils/finalize-carbon-prepare.js.map +0 -1
  83. package/tests/catalog/domains/carbon.ts +0 -547
@@ -1,16 +1,9 @@
1
1
  import { requireWalletParamsInInputSchema } from "./schemas/wallet-params.js";
2
- const CARBON_PREPARE_PREFIX = "prepare_carbon_";
3
- const CARBON_EXECUTE_PREFIX = "execute_carbon_";
4
2
  const ESTIMATE_PREFIX = "estimate_";
5
- /** Tools where hosted MCP accepts wallet params OR an alternate identifier. */
6
- const HOSTED_WALLET_ALTERNATIVES = {
7
- get_carbon_activity: ["strategy_id"],
8
- };
9
3
  function requireExplicitWalletAddresses(definitions) {
10
4
  return definitions.map((def) => {
11
5
  const inputSchema = requireWalletParamsInInputSchema(def.inputSchema, {
12
6
  toolName: def.name,
13
- walletAlternatives: HOSTED_WALLET_ALTERNATIVES[def.name],
14
7
  });
15
8
  if (inputSchema === def.inputSchema) {
16
9
  return def;
@@ -34,12 +27,6 @@ export function filterToolDefinitions(definitions, options = {}) {
34
27
  if (options.names?.length && !options.names.includes(def.name)) {
35
28
  return false;
36
29
  }
37
- if (def.name.startsWith(CARBON_PREPARE_PREFIX) && options.carbonPrepareEnabled === false) {
38
- return false;
39
- }
40
- if (def.name.startsWith(CARBON_EXECUTE_PREFIX) && options.carbonExecuteEnabled === false) {
41
- return false;
42
- }
43
30
  if (def.name.startsWith(ESTIMATE_PREFIX) && options.estimateToolsEnabled === false) {
44
31
  return false;
45
32
  }
@@ -1 +1 @@
1
- {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/tools/filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"filter.js","sourceRoot":"","sources":["../../src/tools/filter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAG9E,MAAM,eAAe,GAAG,WAAW,CAAC;AAEpC,SAAS,8BAA8B,CACrC,WAA6B;IAE7B,OAAO,WAAW,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;QAC7B,MAAM,WAAW,GAAG,gCAAgC,CAAC,GAAG,CAAC,WAAW,EAAE;YACpE,QAAQ,EAAE,GAAG,CAAC,IAAI;SACnB,CAAC,CAAC;QACH,IAAI,WAAW,KAAK,GAAG,CAAC,WAAW,EAAE,CAAC;YACpC,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,EAAE,GAAG,GAAG,EAAE,WAAW,EAAE,CAAC;IACjC,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,WAA6B,EAC7B,UAA8B,EAAE;IAEhC,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE;QAC1C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;YACpD,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBACxC,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC5D,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,IAAI,OAAO,CAAC,KAAK,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/D,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,IAAI,OAAO,CAAC,oBAAoB,KAAK,KAAK,EAAE,CAAC;YACnF,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,OAAO,CAAC,qBAAqB,KAAK,KAAK,IAAI,GAAG,CAAC,WAAW,EAAE,MAAM,EAAE,CAAC;YACvE,IACE,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,kBAAkB,CAAC;gBAC5C,GAAG,CAAC,WAAW,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAClD,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QAED,IACE,OAAO,CAAC,uBAAuB,KAAK,KAAK;YACzC,GAAG,CAAC,WAAW,EAAE,QAAQ,CAAC,cAAc,CAAC,EACzC,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,qBAAqB,KAAK,KAAK,EAAE,CAAC;QAC5C,OAAO,8BAA8B,CAAC,QAAQ,CAAC,CAAC;IAClD,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -1,7 +1,6 @@
1
- export { ALL_TOOL_DEFINITIONS, getToolNames, getMcpToolNames, getBrowserToolNames, getToolsByFamily, getToolDefinition, validateToolCatalogSnakeCase, } from "./catalog.js";
1
+ export { ALL_TOOL_DEFINITIONS, getToolNames, getMcpToolNames, getBrowserToolNames, getToolsByFamily, getToolDefinition, validateToolCatalogSnakeCase, assertSnakeCaseRecordKeys, getToolInputSchemaShape, } from "./catalog.js";
2
2
  export { filterToolDefinitions } from "./filter.js";
3
3
  export { getSwapQuoteWithFallback, prepareSwapWithFallback, type SwapProtocol, type SwapQuoteResult, type SwapPrepareParams, } from "./swap-routing.js";
4
4
  export * from "./schemas/common.js";
5
5
  export type { FilterToolsOptions, McpToolAnnotations, McpToolMeta, ToolDefinition, ToolFamily, ToolRuntime, ToolRuntimeExecutors, ToolRuntimeHooks, ToolSurface, WalletInput, } from "./types.js";
6
6
  export { normalizeRegistryTokenInput } from "./utils/normalize-token.js";
7
- export { runCarbonPrepare } from "./utils/carbon-prepare-handler.js";
@@ -1,7 +1,6 @@
1
- export { ALL_TOOL_DEFINITIONS, getToolNames, getMcpToolNames, getBrowserToolNames, getToolsByFamily, getToolDefinition, validateToolCatalogSnakeCase, } from "./catalog.js";
1
+ export { ALL_TOOL_DEFINITIONS, getToolNames, getMcpToolNames, getBrowserToolNames, getToolsByFamily, getToolDefinition, validateToolCatalogSnakeCase, assertSnakeCaseRecordKeys, getToolInputSchemaShape, } from "./catalog.js";
2
2
  export { filterToolDefinitions } from "./filter.js";
3
3
  export { getSwapQuoteWithFallback, prepareSwapWithFallback, } from "./swap-routing.js";
4
4
  export * from "./schemas/common.js";
5
5
  export { normalizeRegistryTokenInput } from "./utils/normalize-token.js";
6
- export { runCarbonPrepare } from "./utils/carbon-prepare-handler.js";
7
6
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,4BAA4B,GAC7B,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,wBAAwB,EACxB,uBAAuB,GAIxB,MAAM,mBAAmB,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AAapC,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,oBAAoB,EACpB,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,4BAA4B,EAC5B,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EACL,wBAAwB,EACxB,uBAAuB,GAIxB,MAAM,mBAAmB,CAAC;AAC3B,cAAc,qBAAqB,CAAC;AAapC,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC"}
@@ -7,28 +7,25 @@ export declare const WALLET_PARAM_KEYS: readonly ["address", "wallet_address", "
7
7
  export declare const addressOrEnsSchema: z.ZodString;
8
8
  export declare const blockIdSchema: z.ZodEffects<z.ZodUnion<[z.ZodLiteral<"latest">, z.ZodLiteral<"pending">, z.ZodNumber, z.ZodString]>, string | number, unknown>;
9
9
  export declare const positiveIntSchema: z.ZodEffects<z.ZodNumber, number, unknown>;
10
+ export declare const nonNegativeIntSchema: z.ZodEffects<z.ZodNumber, number, unknown>;
11
+ export declare const coercedNumberSchema: z.ZodEffects<z.ZodNumber, number, unknown>;
12
+ export declare const slippageToleranceSchema: z.ZodEffects<z.ZodNumber, number, unknown>;
13
+ /** Optional positive integer with an upper bound (e.g. page_size caps). */
14
+ export declare function optionalBoundedPositiveInt(max: number): z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
15
+ /** Optional positive integer with min/max (e.g. get_latest_blocks count). */
16
+ export declare function optionalBoundedPositiveIntRange(min: number, max: number): z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
10
17
  export declare const tokenSymbolSchema: z.ZodString;
11
18
  export declare const ensNameSchema: z.ZodString;
12
19
  export declare const httpRequestPathSchema: z.ZodEffects<z.ZodEffects<z.ZodEffects<z.ZodString, string, string>, string, string>, string, unknown>;
13
20
  export declare const tokenIdSchema: z.ZodString;
14
21
  export declare const abiSchema: z.ZodArray<z.ZodRecord<z.ZodString, z.ZodUnknown>, "many">;
15
22
  export declare const paginationFields: {
16
- readonly page: z.ZodOptional<z.ZodNumber>;
17
- readonly page_size: z.ZodOptional<z.ZodNumber>;
18
- readonly offset: z.ZodOptional<z.ZodNumber>;
19
- readonly limit: z.ZodOptional<z.ZodNumber>;
23
+ readonly page: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
24
+ readonly page_size: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
25
+ readonly offset: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
26
+ readonly limit: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
20
27
  };
21
28
  export declare const hexDataSchema: z.ZodOptional<z.ZodString>;
22
- export declare const carbonWriteSchema: z.ZodObject<{
23
- wallet_address: z.ZodOptional<z.ZodString>;
24
- from: z.ZodOptional<z.ZodString>;
25
- }, "passthrough", z.ZodTypeAny, z.objectOutputType<{
26
- wallet_address: z.ZodOptional<z.ZodString>;
27
- from: z.ZodOptional<z.ZodString>;
28
- }, z.ZodTypeAny, "passthrough">, z.objectInputType<{
29
- wallet_address: z.ZodOptional<z.ZodString>;
30
- from: z.ZodOptional<z.ZodString>;
31
- }, z.ZodTypeAny, "passthrough">>;
32
29
  export declare const mentoFxQuoteSchema: z.ZodObject<{
33
30
  token_in: z.ZodString;
34
31
  token_out: z.ZodString;
@@ -52,8 +49,8 @@ export declare const mentoFxWalletSchema: z.ZodObject<{
52
49
  from: z.ZodOptional<z.ZodString>;
53
50
  } & {
54
51
  recipient: z.ZodOptional<z.ZodString>;
55
- slippage_tolerance: z.ZodOptional<z.ZodNumber>;
56
- deadline_minutes: z.ZodOptional<z.ZodNumber>;
52
+ slippage_tolerance: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
53
+ deadline_minutes: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
57
54
  }, "strip", z.ZodTypeAny, {
58
55
  amount: string;
59
56
  token_in: string;
@@ -68,8 +65,8 @@ export declare const mentoFxWalletSchema: z.ZodObject<{
68
65
  token_out: string;
69
66
  from?: string | undefined;
70
67
  recipient?: string | undefined;
71
- slippage_tolerance?: number | undefined;
72
- deadline_minutes?: number | undefined;
68
+ slippage_tolerance?: unknown;
69
+ deadline_minutes?: unknown;
73
70
  }>;
74
71
  export declare const uniswapQuoteSchema: z.ZodObject<{
75
72
  token_in: z.ZodString;
@@ -94,8 +91,8 @@ export declare const uniswapWalletSchema: z.ZodObject<{
94
91
  from: z.ZodOptional<z.ZodString>;
95
92
  } & {
96
93
  recipient: z.ZodOptional<z.ZodString>;
97
- slippage_tolerance: z.ZodOptional<z.ZodNumber>;
98
- deadline_minutes: z.ZodOptional<z.ZodNumber>;
94
+ slippage_tolerance: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
95
+ deadline_minutes: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
99
96
  }, "strip", z.ZodTypeAny, {
100
97
  amount: string;
101
98
  token_in: string;
@@ -110,8 +107,8 @@ export declare const uniswapWalletSchema: z.ZodObject<{
110
107
  token_out: string;
111
108
  from?: string | undefined;
112
109
  recipient?: string | undefined;
113
- slippage_tolerance?: number | undefined;
114
- deadline_minutes?: number | undefined;
110
+ slippage_tolerance?: unknown;
111
+ deadline_minutes?: unknown;
115
112
  }>;
116
113
  export declare const goodDollarReserveQuoteSchema: z.ZodObject<{
117
114
  token_in: z.ZodString;
@@ -136,7 +133,7 @@ export declare const goodDollarReserveWalletSchema: z.ZodObject<{
136
133
  from: z.ZodOptional<z.ZodString>;
137
134
  } & {
138
135
  recipient: z.ZodOptional<z.ZodString>;
139
- slippage_tolerance: z.ZodOptional<z.ZodNumber>;
136
+ slippage_tolerance: z.ZodOptional<z.ZodEffects<z.ZodNumber, number, unknown>>;
140
137
  }, "strip", z.ZodTypeAny, {
141
138
  amount: string;
142
139
  token_in: string;
@@ -150,5 +147,5 @@ export declare const goodDollarReserveWalletSchema: z.ZodObject<{
150
147
  token_out: string;
151
148
  from?: string | undefined;
152
149
  recipient?: string | undefined;
153
- slippage_tolerance?: number | undefined;
150
+ slippage_tolerance?: unknown;
154
151
  }>;
@@ -41,6 +41,16 @@ function normalizePositiveInt(value) {
41
41
  }
42
42
  return value;
43
43
  }
44
+ function normalizeDecimalNumber(value) {
45
+ if (typeof value === "string") {
46
+ const trimmed = value.trim();
47
+ if (/^-?\d+(\.\d+)?$/.test(trimmed)) {
48
+ return Number(trimmed);
49
+ }
50
+ return trimmed;
51
+ }
52
+ return value;
53
+ }
44
54
  export const blockIdSchema = z.preprocess(normalizeBlockId, z.union([
45
55
  z.literal("latest"),
46
56
  z.literal("pending"),
@@ -48,6 +58,21 @@ export const blockIdSchema = z.preprocess(normalizeBlockId, z.union([
48
58
  z.string().regex(/^0x[a-fA-F0-9]+$/, "Invalid block hash"),
49
59
  ]));
50
60
  export const positiveIntSchema = z.preprocess(normalizePositiveInt, z.number().int().positive());
61
+ export const nonNegativeIntSchema = z.preprocess(normalizePositiveInt, z.number().int().min(0));
62
+ export const coercedNumberSchema = z.preprocess(normalizeDecimalNumber, z.number());
63
+ export const slippageToleranceSchema = z.preprocess(normalizeDecimalNumber, z.number().min(0).max(20));
64
+ /** Optional positive integer with an upper bound (e.g. page_size caps). */
65
+ export function optionalBoundedPositiveInt(max) {
66
+ return z
67
+ .preprocess(normalizePositiveInt, z.number().int().min(1).max(max))
68
+ .optional();
69
+ }
70
+ /** Optional positive integer with min/max (e.g. get_latest_blocks count). */
71
+ export function optionalBoundedPositiveIntRange(min, max) {
72
+ return z
73
+ .preprocess(normalizePositiveInt, z.number().int().min(min).max(max))
74
+ .optional();
75
+ }
51
76
  export const tokenSymbolSchema = z
52
77
  .string()
53
78
  .describe("Celo mainnet token symbol (e.g. CELO, USDm, USDC, USDT)");
@@ -73,22 +98,16 @@ export const abiSchema = z
73
98
  .min(1)
74
99
  .describe("Contract ABI as a JSON array");
75
100
  export const paginationFields = {
76
- page: z.number().int().min(1).optional(),
77
- page_size: z.number().int().min(1).optional(),
78
- offset: z.number().int().min(0).optional(),
79
- limit: z.number().int().min(1).optional(),
101
+ page: positiveIntSchema.optional(),
102
+ page_size: positiveIntSchema.optional(),
103
+ offset: nonNegativeIntSchema.optional(),
104
+ limit: positiveIntSchema.optional(),
80
105
  };
81
106
  export const hexDataSchema = z
82
107
  .string()
83
108
  .regex(/^0x[a-fA-F0-9]*$/)
84
109
  .optional()
85
110
  .describe("Optional transaction calldata (hex)");
86
- export const carbonWriteSchema = z
87
- .object({
88
- wallet_address: optionalWalletAddressSchema,
89
- from: addressSchema.optional(),
90
- })
91
- .passthrough();
92
111
  export const mentoFxQuoteSchema = z.object({
93
112
  token_in: tokenSymbolSchema.describe("Input token symbol or address"),
94
113
  token_out: tokenSymbolSchema.describe("Output token symbol or address"),
@@ -99,16 +118,10 @@ export const mentoFxWalletSchema = mentoFxQuoteSchema.extend({
99
118
  recipient: addressSchema
100
119
  .optional()
101
120
  .describe("Address that receives output tokens (defaults to signer)"),
102
- slippage_tolerance: z
103
- .number()
104
- .min(0)
105
- .max(20)
121
+ slippage_tolerance: slippageToleranceSchema
106
122
  .optional()
107
123
  .describe("Max slippage in percent (default 0.5)"),
108
- deadline_minutes: z
109
- .number()
110
- .int()
111
- .positive()
124
+ deadline_minutes: positiveIntSchema
112
125
  .optional()
113
126
  .describe("Transaction deadline in minutes (default 5)"),
114
127
  });
@@ -120,8 +133,8 @@ export const uniswapQuoteSchema = z.object({
120
133
  });
121
134
  export const uniswapWalletSchema = uniswapQuoteSchema.extend({
122
135
  recipient: addressSchema.optional(),
123
- slippage_tolerance: z.number().min(0).max(20).optional(),
124
- deadline_minutes: z.number().int().positive().optional(),
136
+ slippage_tolerance: slippageToleranceSchema.optional(),
137
+ deadline_minutes: positiveIntSchema.optional(),
125
138
  });
126
139
  export const goodDollarReserveQuoteSchema = z.object({
127
140
  token_in: tokenSymbolSchema.describe("GoodDollar or G$"),
@@ -131,6 +144,6 @@ export const goodDollarReserveQuoteSchema = z.object({
131
144
  });
132
145
  export const goodDollarReserveWalletSchema = goodDollarReserveQuoteSchema.extend({
133
146
  recipient: addressSchema.optional(),
134
- slippage_tolerance: z.number().min(0).max(20).optional(),
147
+ slippage_tolerance: slippageToleranceSchema.optional(),
135
148
  });
136
149
  //# sourceMappingURL=common.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/tools/schemas/common.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"common.js","sourceRoot":"","sources":["../../../src/tools/schemas/common.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import type { z } from "zod";
2
2
  import type { CelinaClient } from "../index.js";
3
- import type { CarbonWriteBody } from "../services/carbon.service.js";
4
3
  export type ToolSurface = "mcp" | "browser";
5
4
  export type ToolFamily = "read" | "prepare" | "execute";
6
5
  export type ToolEnvRequirement = "CELO_PRIVATE_KEY" | "SELF_AGENT_PRIVATE_KEY" | "SELF_SESSION";
@@ -27,13 +26,6 @@ export type ToolRuntimeHooks = {
27
26
  token: string;
28
27
  amount: string;
29
28
  }) => Promise<void>;
30
- carbon?: {
31
- validateBody?: (toolName: string, body: CarbonWriteBody) => void;
32
- prepare?: (toolName: string, sender: `0x${string}`, prepareFn: (body: CarbonWriteBody) => Promise<unknown>, body: CarbonWriteBody, options?: {
33
- marketPriceFallback?: boolean;
34
- concentrated?: boolean;
35
- }) => Promise<unknown>;
36
- };
37
29
  };
38
30
  export type TransactionExecutors = {
39
31
  estimateSend: (to: `0x${string}`, token: string, amount: string) => Promise<unknown>;
@@ -67,21 +59,6 @@ export type AaveExecutors = {
67
59
  supply: (token: string, amount: string) => Promise<unknown>;
68
60
  withdraw: (token: string, amount?: string, withdrawMax?: boolean) => Promise<unknown>;
69
61
  };
70
- export type CarbonWriteExecutors = {
71
- executeLimitOrder: (body: Record<string, unknown>) => Promise<unknown>;
72
- executeRangeOrder: (body: Record<string, unknown>) => Promise<unknown>;
73
- executeRecurringStrategy: (body: Record<string, unknown>) => Promise<unknown>;
74
- executeConcentratedStrategy: (body: Record<string, unknown>) => Promise<unknown>;
75
- executeFullRangeStrategy: (body: Record<string, unknown>) => Promise<unknown>;
76
- executeRepriceStrategy: (body: Record<string, unknown>) => Promise<unknown>;
77
- executeEditStrategy: (body: Record<string, unknown>) => Promise<unknown>;
78
- executeDepositBudget: (body: Record<string, unknown>) => Promise<unknown>;
79
- executeWithdrawBudget: (body: Record<string, unknown>) => Promise<unknown>;
80
- executePauseStrategy: (body: Record<string, unknown>) => Promise<unknown>;
81
- executeResumeStrategy: (body: Record<string, unknown>) => Promise<unknown>;
82
- executeDeleteStrategy: (body: Record<string, unknown>) => Promise<unknown>;
83
- executeTrade: (body: Record<string, unknown>) => Promise<unknown>;
84
- };
85
62
  export type GoodDollarWriteExecutors = {
86
63
  claimDailyUbi: () => Promise<unknown>;
87
64
  estimateReserveSwap: (tokenIn: string, tokenOut: string, amount: string, options?: {
@@ -110,7 +87,6 @@ export type ToolRuntimeExecutors = {
110
87
  mentoFx?: MentoFxExecutors;
111
88
  uniswap?: UniswapExecutors;
112
89
  aave?: AaveExecutors;
113
- carbonWrite?: CarbonWriteExecutors;
114
90
  gooddollarWrite?: GoodDollarWriteExecutors;
115
91
  self?: SelfExecutors;
116
92
  };
@@ -139,8 +115,6 @@ export type FilterToolsOptions = {
139
115
  surface?: ToolSurface;
140
116
  families?: ToolFamily[];
141
117
  names?: string[];
142
- carbonPrepareEnabled?: boolean;
143
- carbonExecuteEnabled?: boolean;
144
118
  /** When false, omit tools that require CELO_PRIVATE_KEY or SELF_AGENT_PRIVATE_KEY. Default true. */
145
119
  serverKeyToolsEnabled?: boolean;
146
120
  /** When false, omit Self registration session tools. Default true. */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@andrewkimjoseph/celina-sdk",
3
- "version": "0.7.14",
3
+ "version": "0.8.1",
4
4
  "description": "Celina SDK — Celo mainnet reads and unsigned transaction preparation for frontend apps.",
5
5
  "type": "module",
6
6
  "sideEffects": false,
@@ -77,7 +77,6 @@
77
77
  "zod": "^3.24.3",
78
78
  "@amplitude/analytics-node": "^1.5.21",
79
79
  "@noble/ed25519": "^3.1.0",
80
- "@bancor/carbon-sdk": "0.0.130-DEV",
81
80
  "@mento-protocol/mento-sdk": "^3.2.8",
82
81
  "@uniswap/sdk-core": "^7.16.1",
83
82
  "@uniswap/universal-router-sdk": "^5.5.1",
package/tests/README.md CHANGED
@@ -63,6 +63,8 @@ Writes and destructive Self flows are **off by default** so `npm test` does not
63
63
 
64
64
  At least one of `sdk` or `mcp` must be set. SDK-only prepare methods (no MCP tool yet) still belong in the catalog for SDK regression.
65
65
 
66
+ **Naming:** `sdk.invoke` uses the **camelCase** TypeScript client API (`pageSize`, `tokenIn`, …). `mcp.arguments` must use **snake_case tool input keys only** (`page_size`, `token_in`, …) — never copy SDK option names into MCP arguments. Unit tests enforce this for every `MCP_OPERATIONS` entry.
67
+
66
68
  ## Fixtures
67
69
 
68
70
  Stable mainnet constants live in `tests/fixtures/mainnet.ts`. A recent transaction hash is resolved once per process from the latest block.
@@ -13,7 +13,7 @@ export const governanceOperations: OperationSpec[] = [
13
13
  },
14
14
  mcp: {
15
15
  tool: "get_governance_proposals",
16
- arguments: () => ({ page: 1, pageSize: 5 }),
16
+ arguments: () => ({ page: 1, page_size: 5 }),
17
17
  },
18
18
  assert: (result) => {
19
19
  const obj = assertHasKeys(result, ["proposals", "pagination"]);
@@ -30,7 +30,7 @@ export const governanceOperations: OperationSpec[] = [
30
30
  },
31
31
  mcp: {
32
32
  tool: "get_proposal_details",
33
- arguments: (fx) => ({ proposalId: fx.proposalId }),
33
+ arguments: (fx) => ({ proposal_id: fx.proposalId }),
34
34
  },
35
35
  assert: (result) => {
36
36
  assertHasKeys(result, ["proposal"]);
@@ -79,7 +79,7 @@ export const stakingOperations: OperationSpec[] = [
79
79
  },
80
80
  mcp: {
81
81
  tool: "get_validator_groups",
82
- arguments: () => ({ page: 1, pageSize: 5 }),
82
+ arguments: () => ({ page: 1, page_size: 5 }),
83
83
  },
84
84
  assert: (result) => {
85
85
  const obj = assertHasKeys(result, ["groups"]);
@@ -96,7 +96,7 @@ export const stakingOperations: OperationSpec[] = [
96
96
  },
97
97
  mcp: {
98
98
  tool: "get_validator_group_details",
99
- arguments: (fx) => ({ groupAddress: fx.validatorGroup }),
99
+ arguments: (fx) => ({ group_address: fx.validatorGroup }),
100
100
  },
101
101
  assert: (result) => {
102
102
  assertHasKeys(result, ["address", "name"]);
@@ -131,8 +131,8 @@ export const nftOperations: OperationSpec[] = [
131
131
  mcp: {
132
132
  tool: "get_nft_info",
133
133
  arguments: (fx) => ({
134
- contractAddress: fx.saidContract,
135
- tokenId: fx.saidTokenId,
134
+ contract_address: fx.saidContract,
135
+ token_id: fx.saidTokenId,
136
136
  }),
137
137
  },
138
138
  assert: (result) => {
@@ -150,7 +150,7 @@ export const nftOperations: OperationSpec[] = [
150
150
  mcp: {
151
151
  tool: "get_nft_balance",
152
152
  arguments: (fx) => ({
153
- contractAddress: fx.saidContract,
153
+ contract_address: fx.saidContract,
154
154
  address: fx.saidOwner,
155
155
  }),
156
156
  },
@@ -177,10 +177,10 @@ export const contractOperations: OperationSpec[] = [
177
177
  mcp: {
178
178
  tool: "call_contract_function",
179
179
  arguments: (fx) => ({
180
- contractAddress: fx.usdm,
180
+ contract_address: fx.usdm,
181
181
  abi: fx.erc20SymbolAbi,
182
- functionName: "symbol",
183
- functionArgs: [],
182
+ function_name: "symbol",
183
+ function_args: [],
184
184
  }),
185
185
  },
186
186
  assert: (result) => {
@@ -205,11 +205,11 @@ export const contractOperations: OperationSpec[] = [
205
205
  mcp: {
206
206
  tool: "estimate_contract_gas",
207
207
  arguments: (fx) => ({
208
- contractAddress: fx.usdm,
208
+ contract_address: fx.usdm,
209
209
  abi: fx.erc20SymbolAbi,
210
- functionName: "symbol",
211
- functionArgs: [],
212
- fromAddress: fx.signerAddress ?? fx.wallet,
210
+ function_name: "symbol",
211
+ function_args: [],
212
+ from_address: fx.signerAddress ?? fx.wallet,
213
213
  }),
214
214
  },
215
215
  assert: (result) => {
@@ -18,8 +18,8 @@ export const mentoFxOperations: OperationSpec[] = [
18
18
  mcp: {
19
19
  tool: "get_mento_fx_quote",
20
20
  arguments: () => ({
21
- tokenIn: "USDm",
22
- tokenOut: "EURm",
21
+ token_in: "USDm",
22
+ token_out: "EURm",
23
23
  amount: "1",
24
24
  }),
25
25
  },
@@ -39,8 +39,8 @@ export const mentoFxOperations: OperationSpec[] = [
39
39
  mcp: {
40
40
  tool: "estimate_mento_fx",
41
41
  arguments: () => ({
42
- tokenIn: "USDm",
43
- tokenOut: "EURm",
42
+ token_in: "USDm",
43
+ token_out: "EURm",
44
44
  amount: "1",
45
45
  }),
46
46
  },
@@ -69,8 +69,8 @@ export const mentoFxOperations: OperationSpec[] = [
69
69
  mcp: {
70
70
  tool: "execute_mento_fx",
71
71
  arguments: () => ({
72
- tokenIn: "USDm",
73
- tokenOut: "EURm",
72
+ token_in: "USDm",
73
+ token_out: "EURm",
74
74
  amount: "0.01",
75
75
  }),
76
76
  },
@@ -91,8 +91,8 @@ export const uniswapOperations: OperationSpec[] = [
91
91
  mcp: {
92
92
  tool: "get_uniswap_quote",
93
93
  arguments: () => ({
94
- tokenIn: "CELO",
95
- tokenOut: "USDC",
94
+ token_in: "CELO",
95
+ token_out: "USDC",
96
96
  amount: "0.001",
97
97
  }),
98
98
  },
@@ -117,8 +117,8 @@ export const uniswapOperations: OperationSpec[] = [
117
117
  mcp: {
118
118
  tool: "estimate_uniswap_swap",
119
119
  arguments: () => ({
120
- tokenIn: "CELO",
121
- tokenOut: "USDC",
120
+ token_in: "CELO",
121
+ token_out: "USDC",
122
122
  amount: "0.001",
123
123
  }),
124
124
  },
@@ -152,8 +152,8 @@ export const uniswapOperations: OperationSpec[] = [
152
152
  mcp: {
153
153
  tool: "execute_uniswap_swap",
154
154
  arguments: () => ({
155
- tokenIn: "CELO",
156
- tokenOut: "USDC",
155
+ token_in: "CELO",
156
+ token_out: "USDC",
157
157
  amount: "0.001",
158
158
  }),
159
159
  },
@@ -15,7 +15,6 @@ import {
15
15
  stakingOperations,
16
16
  } from "./domains/chain-ext.js";
17
17
  import { selfOperations } from "./domains/self.js";
18
- import { carbonOperations } from "./domains/carbon.js";
19
18
  import { getMcpToolNames } from "../../src/tools/catalog.js";
20
19
  import type { OperationSpec } from "./types.js";
21
20
 
@@ -33,7 +32,6 @@ export const OPERATIONS: OperationSpec[] = [
33
32
  ...nftOperations,
34
33
  ...contractOperations,
35
34
  ...selfOperations,
36
- ...carbonOperations,
37
35
  ];
38
36
 
39
37
  export const MCP_OPERATIONS = OPERATIONS.filter(
@@ -46,11 +44,8 @@ export const SDK_OPERATIONS = OPERATIONS.filter(
46
44
  Boolean(spec.sdk),
47
45
  );
48
46
 
49
- /** MCP tool names from the SDK tools catalog (stdio: prepare + execute Carbon). */
50
- export const MCP_TOOL_NAMES = getMcpToolNames({
51
- carbonPrepareEnabled: true,
52
- carbonExecuteEnabled: true,
53
- });
47
+ /** MCP tool names from the SDK tools catalog. */
48
+ export const MCP_TOOL_NAMES = getMcpToolNames();
54
49
 
55
50
  /** @deprecated Use MCP_TOOL_NAMES — kept for tests that import the operations-derived list. */
56
51
  export const MCP_TOOL_NAMES_FROM_OPERATIONS = MCP_OPERATIONS.map(
@@ -1,17 +0,0 @@
1
- import type { CarbonRestSuccess } from "../types/carbon.js";
2
- export declare class CarbonRestError extends Error {
3
- readonly toolName: string;
4
- readonly statusCode?: number | undefined;
5
- constructor(message: string, toolName: string, statusCode?: number | undefined);
6
- }
7
- export type CarbonRestBody = Record<string, unknown>;
8
- export declare class CarbonRestClient {
9
- private readonly baseUrl;
10
- private readonly timeoutMs;
11
- constructor(baseUrl?: string, timeoutMs?: number);
12
- private url;
13
- /**
14
- * POST to Carbon MCP REST. Always injects `chain: celo` unless caller overrides.
15
- */
16
- postTool<T extends CarbonRestSuccess = CarbonRestSuccess>(toolName: string, body?: CarbonRestBody): Promise<T>;
17
- }
@@ -1,59 +0,0 @@
1
- import { CARBON_CHAIN, DEFAULT_CARBON_REST_BASE_URL } from "../config/carbon.js";
2
- const DEFAULT_TIMEOUT_MS = 60_000;
3
- export class CarbonRestError extends Error {
4
- toolName;
5
- statusCode;
6
- constructor(message, toolName, statusCode) {
7
- super(message);
8
- this.toolName = toolName;
9
- this.statusCode = statusCode;
10
- this.name = "CarbonRestError";
11
- }
12
- }
13
- export class CarbonRestClient {
14
- baseUrl;
15
- timeoutMs;
16
- constructor(baseUrl = DEFAULT_CARBON_REST_BASE_URL, timeoutMs = DEFAULT_TIMEOUT_MS) {
17
- this.baseUrl = baseUrl;
18
- this.timeoutMs = timeoutMs;
19
- }
20
- url(toolName) {
21
- const base = this.baseUrl.replace(/\/$/, "");
22
- return `${base}/tools/${toolName}`;
23
- }
24
- /**
25
- * POST to Carbon MCP REST. Always injects `chain: celo` unless caller overrides.
26
- */
27
- async postTool(toolName, body = {}) {
28
- const payload = {
29
- chain: CARBON_CHAIN,
30
- ...body,
31
- };
32
- const response = await fetch(this.url(toolName), {
33
- method: "POST",
34
- headers: { "Content-Type": "application/json" },
35
- body: JSON.stringify(payload),
36
- signal: AbortSignal.timeout(this.timeoutMs),
37
- });
38
- const text = await response.text();
39
- let json;
40
- try {
41
- json = text ? JSON.parse(text) : {};
42
- }
43
- catch {
44
- throw new CarbonRestError(`Carbon API returned non-JSON (${response.status})`, toolName, response.status);
45
- }
46
- if (json.error && typeof json.error === "string") {
47
- throw new CarbonRestError(json.error, toolName, response.status);
48
- }
49
- if (json.status === "not_found") {
50
- const msg = typeof json.message === "string" ? json.message : "Carbon API not found";
51
- throw new CarbonRestError(msg, toolName, response.status);
52
- }
53
- if (!response.ok) {
54
- throw new CarbonRestError(`Carbon API HTTP ${response.status}`, toolName, response.status);
55
- }
56
- return json;
57
- }
58
- }
59
- //# sourceMappingURL=carbon-rest.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"carbon-rest.js","sourceRoot":"","sources":["../../src/clients/carbon-rest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,4BAA4B,EAAE,MAAM,qBAAqB,CAAC;AAGjF,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,MAAM,OAAO,eAAgB,SAAQ,KAAK;IAG7B;IACA;IAHX,YACE,OAAe,EACN,QAAgB,EAChB,UAAmB;QAE5B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHN,aAAQ,GAAR,QAAQ,CAAQ;QAChB,eAAU,GAAV,UAAU,CAAS;QAG5B,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAID,MAAM,OAAO,gBAAgB;IAER;IACA;IAFnB,YACmB,UAAkB,4BAA4B,EAC9C,YAAoB,kBAAkB;QADtC,YAAO,GAAP,OAAO,CAAuC;QAC9C,cAAS,GAAT,SAAS,CAA6B;IACtD,CAAC;IAEI,GAAG,CAAC,QAAgB;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QAC7C,OAAO,GAAG,IAAI,UAAU,QAAQ,EAAE,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,QAAQ,CACZ,QAAgB,EAChB,OAAuB,EAAE;QAEzB,MAAM,OAAO,GAAG;YACd,KAAK,EAAE,YAAY;YACnB,GAAG,IAAI;SACR,CAAC;QAEF,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE;YAC/C,MAAM,EAAE,MAAM;YACd,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;YAC/C,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;YAC7B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;SAC5C,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnC,IAAI,IAA6B,CAAC;QAClC,IAAI,CAAC;YACH,IAAI,GAAG,IAAI,CAAC,CAAC,CAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAA6B,CAAC,CAAC,CAAC,EAAE,CAAC;QACnE,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,eAAe,CACvB,iCAAiC,QAAQ,CAAC,MAAM,GAAG,EACnD,QAAQ,EACR,QAAQ,CAAC,MAAM,CAChB,CAAC;QACJ,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACjD,MAAM,IAAI,eAAe,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QACnE,CAAC;QAED,IAAI,IAAI,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;YAChC,MAAM,GAAG,GACP,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,sBAAsB,CAAC;YAC3E,MAAM,IAAI,eAAe,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;QAC5D,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,eAAe,CACvB,mBAAmB,QAAQ,CAAC,MAAM,EAAE,EACpC,QAAQ,EACR,QAAQ,CAAC,MAAM,CAChB,CAAC;QACJ,CAAC;QAED,OAAO,IAAS,CAAC;IACnB,CAAC;CACF"}