@andrewkimjoseph/celina-sdk 0.4.11 → 0.5.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/README.md +4 -0
  2. package/build/analytics/mcp-tool-events.js +1 -0
  3. package/build/analytics/mcp-tool-events.js.map +1 -1
  4. package/build/services/blockchain.service.d.ts +33 -3
  5. package/build/services/blockchain.service.js +40 -21
  6. package/build/services/blockchain.service.js.map +1 -1
  7. package/build/tools/catalog.d.ts +9 -0
  8. package/build/tools/catalog.js +36 -0
  9. package/build/tools/catalog.js.map +1 -0
  10. package/build/tools/domains/aave.d.ts +2 -0
  11. package/build/tools/domains/aave.js +89 -0
  12. package/build/tools/domains/aave.js.map +1 -0
  13. package/build/tools/domains/blockchain.d.ts +2 -0
  14. package/build/tools/domains/blockchain.js +85 -0
  15. package/build/tools/domains/blockchain.js.map +1 -0
  16. package/build/tools/domains/carbon.d.ts +2 -0
  17. package/build/tools/domains/carbon.js +187 -0
  18. package/build/tools/domains/carbon.js.map +1 -0
  19. package/build/tools/domains/celeste.d.ts +2 -0
  20. package/build/tools/domains/celeste.js +42 -0
  21. package/build/tools/domains/celeste.js.map +1 -0
  22. package/build/tools/domains/contract.d.ts +2 -0
  23. package/build/tools/domains/contract.js +67 -0
  24. package/build/tools/domains/contract.js.map +1 -0
  25. package/build/tools/domains/ens.d.ts +2 -0
  26. package/build/tools/domains/ens.js +16 -0
  27. package/build/tools/domains/ens.js.map +1 -0
  28. package/build/tools/domains/gooddollar.d.ts +2 -0
  29. package/build/tools/domains/gooddollar.js +73 -0
  30. package/build/tools/domains/gooddollar.js.map +1 -0
  31. package/build/tools/domains/governance.d.ts +2 -0
  32. package/build/tools/domains/governance.js +41 -0
  33. package/build/tools/domains/governance.js.map +1 -0
  34. package/build/tools/domains/index.d.ts +1 -0
  35. package/build/tools/domains/index.js +33 -0
  36. package/build/tools/domains/index.js.map +1 -0
  37. package/build/tools/domains/mento-fx.d.ts +2 -0
  38. package/build/tools/domains/mento-fx.js +72 -0
  39. package/build/tools/domains/mento-fx.js.map +1 -0
  40. package/build/tools/domains/nft.d.ts +2 -0
  41. package/build/tools/domains/nft.js +38 -0
  42. package/build/tools/domains/nft.js.map +1 -0
  43. package/build/tools/domains/self.d.ts +2 -0
  44. package/build/tools/domains/self.js +194 -0
  45. package/build/tools/domains/self.js.map +1 -0
  46. package/build/tools/domains/staking.d.ts +2 -0
  47. package/build/tools/domains/staking.js +74 -0
  48. package/build/tools/domains/staking.js.map +1 -0
  49. package/build/tools/domains/token.d.ts +2 -0
  50. package/build/tools/domains/token.js +73 -0
  51. package/build/tools/domains/token.js.map +1 -0
  52. package/build/tools/domains/transaction.d.ts +2 -0
  53. package/build/tools/domains/transaction.js +117 -0
  54. package/build/tools/domains/transaction.js.map +1 -0
  55. package/build/tools/domains/uniswap.d.ts +2 -0
  56. package/build/tools/domains/uniswap.js +72 -0
  57. package/build/tools/domains/uniswap.js.map +1 -0
  58. package/build/tools/filter.d.ts +2 -0
  59. package/build/tools/filter.js +28 -0
  60. package/build/tools/filter.js.map +1 -0
  61. package/build/tools/index.d.ts +7 -0
  62. package/build/tools/index.js +7 -0
  63. package/build/tools/index.js.map +1 -0
  64. package/build/tools/schemas/common.d.ts +110 -0
  65. package/build/tools/schemas/common.js +81 -0
  66. package/build/tools/schemas/common.js.map +1 -0
  67. package/build/tools/swap-routing.d.ts +24 -0
  68. package/build/tools/swap-routing.js +105 -0
  69. package/build/tools/swap-routing.js.map +1 -0
  70. package/build/tools/types.d.ts +134 -0
  71. package/build/tools/types.js +2 -0
  72. package/build/tools/types.js.map +1 -0
  73. package/build/tools/utils/carbon-prepare-handler.d.ts +6 -0
  74. package/build/tools/utils/carbon-prepare-handler.js +17 -0
  75. package/build/tools/utils/carbon-prepare-handler.js.map +1 -0
  76. package/build/tools/utils/normalize-token.d.ts +2 -0
  77. package/build/tools/utils/normalize-token.js +12 -0
  78. package/build/tools/utils/normalize-token.js.map +1 -0
  79. package/build/tools/utils/wallet.d.ts +2 -0
  80. package/build/tools/utils/wallet.js +4 -0
  81. package/build/tools/utils/wallet.js.map +1 -0
  82. package/package.json +7 -1
  83. package/tests/README.md +4 -0
  84. package/tests/catalog/domains/blockchain.ts +24 -0
  85. package/tests/catalog/operations.ts +11 -1
  86. package/tests/testing-entry.ts +5 -0
package/README.md CHANGED
@@ -1,3 +1,7 @@
1
+ <p align="center">
2
+ <img src="https://raw.githubusercontent.com/andrewkimjoseph/celina-sdk/main/assets/celina-banner.png" alt="Celina — Give your LLM a wallet on Celo">
3
+ </p>
4
+
1
5
  # Celina SDK
2
6
 
3
7
  Celo mainnet library for frontend apps and agents: **reads** and **unsigned transaction preparation** (no private keys).
@@ -6,6 +6,7 @@ export const MCP_TOOL_EVENT_BY_SDK_METHOD = {
6
6
  "account.getAccount": "get_account",
7
7
  "account.getWalletAddress": "get_wallet_address",
8
8
  "blockchain.getBlock": "get_block",
9
+ "blockchain.getBlockWithTransactions": "get_block",
9
10
  "blockchain.getLatestBlocks": "get_latest_blocks",
10
11
  "blockchain.getNetworkStatus": "get_network_status",
11
12
  "blockchain.getTransaction": "get_transaction",
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-tool-events.js","sourceRoot":"","sources":["../../src/analytics/mcp-tool-events.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAqC;IAC5E,oBAAoB,EAAE,aAAa;IACnC,0BAA0B,EAAE,oBAAoB;IAChD,qBAAqB,EAAE,WAAW;IAClC,4BAA4B,EAAE,mBAAmB;IACjD,6BAA6B,EAAE,oBAAoB;IACnD,2BAA2B,EAAE,iBAAiB;IAC9C,oBAAoB,EAAE,qBAAqB;IAC3C,0BAA0B,EAAE,2BAA2B;IACvD,oBAAoB,EAAE,qBAAqB;IAC3C,wBAAwB,EAAE,0BAA0B;IACpD,yBAAyB,EAAE,2BAA2B;IACtD,sBAAsB,EAAE,uBAAuB;IAC/C,oBAAoB,EAAE,qBAAqB;IAC3C,sBAAsB,EAAE,wBAAwB;IAChD,aAAa,EAAE,aAAa;IAC5B,cAAc,EAAE,cAAc;IAC9B,qBAAqB,EAAE,sBAAsB;IAC7C,yBAAyB,EAAE,0BAA0B;IACrD,uBAAuB,EAAE,wBAAwB;IACjD,sBAAsB,EAAE,uBAAuB;IAC/C,gBAAgB,EAAE,aAAa;IAC/B,mCAAmC,EAAE,gCAAgC;IACrE,gCAAgC,EAAE,kCAAkC;IACpE,mCAAmC,EAAE,0BAA0B;IAC/D,+BAA+B,EAAE,sBAAsB;IACvD,oBAAoB,EAAE,mBAAmB;IACzC,oBAAoB,EAAE,oBAAoB;IAC1C,mBAAmB,EAAE,iBAAiB;IACtC,gBAAgB,EAAE,cAAc;IAChC,6BAA6B,EAAE,0BAA0B;IACzD,4BAA4B,EAAE,yBAAyB;IACvD,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,wBAAwB,EAAE,qBAAqB;IAC/C,8BAA8B,EAAE,wBAAwB;IACxD,4BAA4B,EAAE,sBAAsB;IACpD,6BAA6B,EAAE,wBAAwB;IACvD,kCAAkC,EAAE,6BAA6B;IACjE,4BAA4B,EAAE,sBAAsB;IACpD,mBAAmB,EAAE,mBAAmB;IACxC,6BAA6B,EAAE,yBAAyB;IACxD,uBAAuB,EAAE,mBAAmB;IAC5C,oBAAoB,EAAE,gBAAgB;IACtC,0BAA0B,EAAE,eAAe;IAC3C,iCAAiC,EAAE,sBAAsB;IACzD,2BAA2B,EAAE,kBAAkB;IAC/C,sBAAsB,EAAE,uBAAuB;IAC/C,sBAAsB,EAAE,mBAAmB;CACnC,CAAC"}
1
+ {"version":3,"file":"mcp-tool-events.js","sourceRoot":"","sources":["../../src/analytics/mcp-tool-events.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAqC;IAC5E,oBAAoB,EAAE,aAAa;IACnC,0BAA0B,EAAE,oBAAoB;IAChD,qBAAqB,EAAE,WAAW;IAClC,qCAAqC,EAAE,WAAW;IAClD,4BAA4B,EAAE,mBAAmB;IACjD,6BAA6B,EAAE,oBAAoB;IACnD,2BAA2B,EAAE,iBAAiB;IAC9C,oBAAoB,EAAE,qBAAqB;IAC3C,0BAA0B,EAAE,2BAA2B;IACvD,oBAAoB,EAAE,qBAAqB;IAC3C,wBAAwB,EAAE,0BAA0B;IACpD,yBAAyB,EAAE,2BAA2B;IACtD,sBAAsB,EAAE,uBAAuB;IAC/C,oBAAoB,EAAE,qBAAqB;IAC3C,sBAAsB,EAAE,wBAAwB;IAChD,aAAa,EAAE,aAAa;IAC5B,cAAc,EAAE,cAAc;IAC9B,qBAAqB,EAAE,sBAAsB;IAC7C,yBAAyB,EAAE,0BAA0B;IACrD,uBAAuB,EAAE,wBAAwB;IACjD,sBAAsB,EAAE,uBAAuB;IAC/C,gBAAgB,EAAE,aAAa;IAC/B,mCAAmC,EAAE,gCAAgC;IACrE,gCAAgC,EAAE,kCAAkC;IACpE,mCAAmC,EAAE,0BAA0B;IAC/D,+BAA+B,EAAE,sBAAsB;IACvD,oBAAoB,EAAE,mBAAmB;IACzC,oBAAoB,EAAE,oBAAoB;IAC1C,mBAAmB,EAAE,iBAAiB;IACtC,gBAAgB,EAAE,cAAc;IAChC,6BAA6B,EAAE,0BAA0B;IACzD,4BAA4B,EAAE,yBAAyB;IACvD,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,sBAAsB,EAAE,mBAAmB;IAC3C,wBAAwB,EAAE,qBAAqB;IAC/C,8BAA8B,EAAE,wBAAwB;IACxD,4BAA4B,EAAE,sBAAsB;IACpD,6BAA6B,EAAE,wBAAwB;IACvD,kCAAkC,EAAE,6BAA6B;IACjE,4BAA4B,EAAE,sBAAsB;IACpD,mBAAmB,EAAE,mBAAmB;IACxC,6BAA6B,EAAE,yBAAyB;IACxD,uBAAuB,EAAE,mBAAmB;IAC5C,oBAAoB,EAAE,gBAAgB;IACtC,0BAA0B,EAAE,eAAe;IAC3C,iCAAiC,EAAE,sBAAsB;IACzD,2BAA2B,EAAE,kBAAkB;IAC/C,sBAAsB,EAAE,uBAAuB;IAC/C,sBAAsB,EAAE,mBAAmB;CACnC,CAAC"}
@@ -35,7 +35,21 @@ export declare class BlockchainService {
35
35
  gasUtilization: number;
36
36
  miner: `0x${string}`;
37
37
  transactionCount: number;
38
- transactions: `0x${string}`[] | undefined;
38
+ transactions: (`0x${string}` | {
39
+ hash: `0x${string}`;
40
+ from: `0x${string}`;
41
+ to: `0x${string}` | null;
42
+ value: string;
43
+ valueCelo: number;
44
+ nonce: number;
45
+ gas: string;
46
+ gasPrice: string | undefined;
47
+ gasPriceGwei: number | undefined;
48
+ input: `0x${string}`;
49
+ blockNumber: string | undefined;
50
+ transactionIndex: number | null | undefined;
51
+ type: string | undefined;
52
+ })[] | undefined;
39
53
  }>;
40
54
  /**
41
55
  * List recent blocks ending at the chain tip (newest last in the array).
@@ -66,12 +80,28 @@ export declare class BlockchainService {
66
80
  valueCelo: number;
67
81
  nonce: number;
68
82
  gas: string;
83
+ gasPrice: string | undefined;
84
+ gasPriceGwei: number | undefined;
85
+ input: `0x${string}`;
86
+ blockNumber: string | undefined;
87
+ transactionIndex: number | null | undefined;
88
+ type: string | undefined;
89
+ } | {
90
+ status?: string | undefined;
69
91
  gasUsed: string;
70
92
  gasEfficiency: number;
93
+ hash: `0x${string}`;
94
+ from: `0x${string}`;
95
+ to: `0x${string}` | null;
96
+ value: string;
97
+ valueCelo: number;
98
+ nonce: number;
99
+ gas: string;
71
100
  gasPrice: string | undefined;
72
101
  gasPriceGwei: number | undefined;
73
102
  input: `0x${string}`;
74
- blockNumber: string;
75
- status: "success" | "reverted";
103
+ blockNumber: string | undefined;
104
+ transactionIndex: number | null | undefined;
105
+ type: string | undefined;
76
106
  }>;
77
107
  }
@@ -1,3 +1,32 @@
1
+ function serializeTransactionSummary(tx, extras) {
2
+ const base = {
3
+ hash: tx.hash,
4
+ from: tx.from,
5
+ to: tx.to,
6
+ value: tx.value.toString(),
7
+ valueCelo: Number(tx.value) / 1e18,
8
+ nonce: tx.nonce,
9
+ gas: tx.gas.toString(),
10
+ gasPrice: tx.gasPrice?.toString(),
11
+ gasPriceGwei: tx.gasPrice ? Number(tx.gasPrice) / 1e9 : undefined,
12
+ input: tx.input,
13
+ blockNumber: tx.blockNumber?.toString(),
14
+ transactionIndex: tx.transactionIndex,
15
+ type: tx.type,
16
+ };
17
+ if (!extras) {
18
+ return base;
19
+ }
20
+ const gasEfficiency = tx.gas > 0n
21
+ ? Number((extras.gasUsed * 10000n) / tx.gas) / 100
22
+ : 0;
23
+ return {
24
+ ...base,
25
+ gasUsed: extras.gasUsed.toString(),
26
+ gasEfficiency,
27
+ ...(extras.status !== undefined ? { status: extras.status } : {}),
28
+ };
29
+ }
1
30
  /** Celo mainnet block and transaction queries. */
2
31
  export class BlockchainService {
3
32
  clientFactory;
@@ -35,16 +64,16 @@ export class BlockchainService {
35
64
  const blockParams = typeof blockId === "number"
36
65
  ? {
37
66
  blockNumber: BigInt(blockId),
38
- includeTransactions: includeTransactions,
67
+ includeTransactions,
39
68
  }
40
69
  : blockId === "latest" || blockId === "pending"
41
70
  ? {
42
71
  blockTag: blockId,
43
- includeTransactions: includeTransactions,
72
+ includeTransactions,
44
73
  }
45
74
  : {
46
75
  blockHash: blockId,
47
- includeTransactions: includeTransactions,
76
+ includeTransactions,
48
77
  };
49
78
  const block = await client.getBlock(blockParams);
50
79
  if (!block) {
@@ -63,7 +92,11 @@ export class BlockchainService {
63
92
  gasUtilization,
64
93
  miner: block.miner,
65
94
  transactionCount: block.transactions.length,
66
- transactions: includeTransactions ? block.transactions : undefined,
95
+ transactions: includeTransactions
96
+ ? block.transactions.map((tx) => typeof tx === "string"
97
+ ? tx
98
+ : serializeTransactionSummary(tx))
99
+ : undefined,
67
100
  };
68
101
  }
69
102
  /**
@@ -109,24 +142,10 @@ export class BlockchainService {
109
142
  if (!tx) {
110
143
  throw new Error(`Transaction not found: ${hash}`);
111
144
  }
112
- const gasUsed = receipt?.gasUsed ?? 0n;
113
- const gasEfficiency = tx.gas > 0n ? Number((gasUsed * 10000n) / tx.gas) / 100 : 0;
114
- return {
115
- hash: tx.hash,
116
- from: tx.from,
117
- to: tx.to,
118
- value: tx.value.toString(),
119
- valueCelo: Number(tx.value) / 1e18,
120
- nonce: tx.nonce,
121
- gas: tx.gas.toString(),
122
- gasUsed: gasUsed.toString(),
123
- gasEfficiency,
124
- gasPrice: tx.gasPrice?.toString(),
125
- gasPriceGwei: tx.gasPrice ? Number(tx.gasPrice) / 1e9 : undefined,
126
- input: tx.input,
127
- blockNumber: tx.blockNumber?.toString(),
145
+ return serializeTransactionSummary(tx, {
146
+ gasUsed: receipt?.gasUsed ?? 0n,
128
147
  status: receipt?.status,
129
- };
148
+ });
130
149
  }
131
150
  }
132
151
  //# sourceMappingURL=blockchain.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"blockchain.service.js","sourceRoot":"","sources":["../../src/services/blockchain.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blockchain.service.js","sourceRoot":"","sources":["../../src/services/blockchain.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { FilterToolsOptions, ToolDefinition, ToolFamily } from "./types.js";
2
+ export declare const ALL_TOOL_DEFINITIONS: ToolDefinition[];
3
+ export declare function getToolNames(options?: FilterToolsOptions): string[];
4
+ export declare function getMcpToolNames(options?: Omit<FilterToolsOptions, "surface">): string[];
5
+ export declare function getCelesteToolNames(options?: Omit<FilterToolsOptions, "surface">): string[];
6
+ export declare function getToolsByFamily(family: ToolFamily): ToolDefinition[];
7
+ export declare function getToolDefinition(name: string): ToolDefinition | undefined;
8
+ export declare function assertSnakeCaseInputKeys(definition: ToolDefinition): void;
9
+ export declare function validateToolCatalogSnakeCase(): void;
@@ -0,0 +1,36 @@
1
+ import { allDomainToolDefinitions } from "./domains/index.js";
2
+ import { filterToolDefinitions } from "./filter.js";
3
+ export const ALL_TOOL_DEFINITIONS = allDomainToolDefinitions;
4
+ export function getToolNames(options = {}) {
5
+ return filterToolDefinitions(ALL_TOOL_DEFINITIONS, options).map((d) => d.name);
6
+ }
7
+ export function getMcpToolNames(options = {}) {
8
+ return getToolNames({ ...options, surface: "mcp" });
9
+ }
10
+ export function getCelesteToolNames(options = {}) {
11
+ return getToolNames({ ...options, surface: "celeste" });
12
+ }
13
+ export function getToolsByFamily(family) {
14
+ return filterToolDefinitions(ALL_TOOL_DEFINITIONS, { families: [family] });
15
+ }
16
+ export function getToolDefinition(name) {
17
+ return ALL_TOOL_DEFINITIONS.find((d) => d.name === name);
18
+ }
19
+ export function assertSnakeCaseInputKeys(definition) {
20
+ const shape = definition.inputSchema;
21
+ if (!shape || typeof shape !== "object" || !("shape" in shape)) {
22
+ return;
23
+ }
24
+ const keys = Object.keys(shape.shape);
25
+ for (const key of keys) {
26
+ if (key !== key.toLowerCase() || key.includes("-")) {
27
+ throw new Error(`Tool "${definition.name}" input key "${key}" must be snake_case.`);
28
+ }
29
+ }
30
+ }
31
+ export function validateToolCatalogSnakeCase() {
32
+ for (const def of ALL_TOOL_DEFINITIONS) {
33
+ assertSnakeCaseInputKeys(def);
34
+ }
35
+ }
36
+ //# sourceMappingURL=catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/tools/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGpD,MAAM,CAAC,MAAM,oBAAoB,GAAqB,wBAAwB,CAAC;AAE/E,MAAM,UAAU,YAAY,CAAC,UAA8B,EAAE;IAC3D,OAAO,qBAAqB,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;AACjF,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,UAA+C,EAAE;IAEjD,OAAO,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,mBAAmB,CACjC,UAA+C,EAAE;IAEjD,OAAO,YAAY,CAAC,EAAE,GAAG,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AAC1D,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,MAAkB;IACjD,OAAO,qBAAqB,CAAC,oBAAoB,EAAE,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAC7E,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,wBAAwB,CAAC,UAA0B;IACjE,MAAM,KAAK,GAAG,UAAU,CAAC,WAAW,CAAC;IACrC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,EAAE,CAAC;QAC/D,OAAO;IACT,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAE,KAA4C,CAAC,KAAK,CAAC,CAAC;IAC9E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,GAAG,KAAK,GAAG,CAAC,WAAW,EAAE,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACnD,MAAM,IAAI,KAAK,CACb,SAAS,UAAU,CAAC,IAAI,gBAAgB,GAAG,uBAAuB,CACnE,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,4BAA4B;IAC1C,KAAK,MAAM,GAAG,IAAI,oBAAoB,EAAE,CAAC;QACvC,wBAAwB,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { ToolDefinition } from "../types.js";
2
+ export declare const aaveToolDefinitions: ToolDefinition[];
@@ -0,0 +1,89 @@
1
+ import { z } from "zod";
2
+ import { AAVE_SUPPORTED_SYMBOLS, resolveAaveAsset, } from "../../config/aave.js";
3
+ import { optionalWalletAddressSchema, tokenSymbolSchema } from "../schemas/common.js";
4
+ import { resolveWalletFromRuntime } from "../utils/wallet.js";
5
+ const supported = AAVE_SUPPORTED_SYMBOLS.join(", ");
6
+ const aaveTokenField = tokenSymbolSchema.describe(`Aave asset symbol on Celo (${supported}). Pass the symbol only.`);
7
+ export const aaveToolDefinitions = [
8
+ {
9
+ name: "supply_aave",
10
+ description: `Supply tokens to Aave V3 on Celo. Supported: ${supported}. Requires CELO_PRIVATE_KEY.`,
11
+ inputSchema: z.object({
12
+ token: aaveTokenField,
13
+ amount: z.string(),
14
+ }),
15
+ families: ["execute"],
16
+ surfaces: ["mcp"],
17
+ mcp: {
18
+ title: "Supply Aave",
19
+ annotations: { destructiveHint: true, openWorldHint: true },
20
+ },
21
+ handler: async (runtime, input) => {
22
+ const aave = runtime.executors?.aave;
23
+ if (!aave)
24
+ throw new Error("Aave executor not configured.");
25
+ const asset = resolveAaveAsset(input.token);
26
+ return aave.supply(asset.symbol, input.amount);
27
+ },
28
+ },
29
+ {
30
+ name: "withdraw_aave",
31
+ description: `Withdraw tokens from Aave V3 on Celo. Supported: ${supported}. Requires CELO_PRIVATE_KEY.`,
32
+ inputSchema: z.object({
33
+ token: aaveTokenField,
34
+ amount: z.string().optional(),
35
+ withdraw_max: z.boolean().optional(),
36
+ }),
37
+ families: ["execute"],
38
+ surfaces: ["mcp"],
39
+ mcp: {
40
+ title: "Withdraw Aave",
41
+ annotations: { destructiveHint: true, openWorldHint: true },
42
+ },
43
+ handler: async (runtime, input) => {
44
+ const aave = runtime.executors?.aave;
45
+ if (!aave)
46
+ throw new Error("Aave executor not configured.");
47
+ const asset = resolveAaveAsset(input.token);
48
+ return aave.withdraw(asset.symbol, input.amount, input.withdraw_max);
49
+ },
50
+ },
51
+ {
52
+ name: "prepare_aave_supply",
53
+ description: "Prepare unsigned Aave V3 supply steps. User signs in wallet.",
54
+ inputSchema: z.object({
55
+ token: z.string(),
56
+ amount: z.string(),
57
+ from: optionalWalletAddressSchema,
58
+ }),
59
+ families: ["prepare"],
60
+ surfaces: ["celeste"],
61
+ handler: async (runtime, input) => {
62
+ const sender = resolveWalletFromRuntime(runtime, {
63
+ from: input.from,
64
+ });
65
+ const asset = resolveAaveAsset(input.token);
66
+ return runtime.celina.aave.prepareSupply(sender, asset.symbol, input.amount);
67
+ },
68
+ },
69
+ {
70
+ name: "prepare_aave_withdraw",
71
+ description: "Prepare unsigned Aave V3 withdraw. User signs in wallet.",
72
+ inputSchema: z.object({
73
+ token: z.string(),
74
+ amount: z.string().optional(),
75
+ withdraw_max: z.boolean().optional(),
76
+ from: optionalWalletAddressSchema,
77
+ }),
78
+ families: ["prepare"],
79
+ surfaces: ["celeste"],
80
+ handler: async (runtime, input) => {
81
+ const sender = resolveWalletFromRuntime(runtime, {
82
+ from: input.from,
83
+ });
84
+ const asset = resolveAaveAsset(input.token);
85
+ return runtime.celina.aave.prepareWithdraw(sender, asset.symbol, input.amount, input.withdraw_max);
86
+ },
87
+ },
88
+ ];
89
+ //# sourceMappingURL=aave.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aave.js","sourceRoot":"","sources":["../../../src/tools/domains/aave.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ToolDefinition } from "../types.js";
2
+ export declare const blockchainToolDefinitions: ToolDefinition[];
@@ -0,0 +1,85 @@
1
+ import { z } from "zod";
2
+ import { blockIdSchema, optionalWalletAddressSchema, } from "../schemas/common.js";
3
+ import { resolveWalletFromRuntime } from "../utils/wallet.js";
4
+ const readOnly = {
5
+ readOnlyHint: true,
6
+ idempotentHint: true,
7
+ };
8
+ export const blockchainToolDefinitions = [
9
+ {
10
+ name: "get_network_status",
11
+ description: "Returns Celo mainnet chain ID, latest block, and gas price.",
12
+ inputSchema: z.object({}),
13
+ families: ["read"],
14
+ mcp: { title: "Get Network Status", annotations: readOnly },
15
+ handler: async (runtime) => runtime.celina.blockchain.getNetworkStatus(),
16
+ },
17
+ {
18
+ name: "get_block",
19
+ description: "Fetch a Celo mainnet block by number, hash, or latest.",
20
+ inputSchema: z.object({
21
+ block_id: blockIdSchema,
22
+ include_transactions: z.boolean().optional(),
23
+ }),
24
+ families: ["read"],
25
+ mcp: { title: "Get Block", annotations: readOnly },
26
+ handler: async (runtime, input) => runtime.celina.blockchain.getBlock(input.block_id, {
27
+ includeTransactions: input.include_transactions,
28
+ }),
29
+ },
30
+ {
31
+ name: "get_latest_blocks",
32
+ description: "Fetch the most recent blocks on Celo mainnet.",
33
+ inputSchema: z.object({
34
+ count: z.number().int().min(1).max(100).optional(),
35
+ offset: z.number().int().min(0).optional(),
36
+ }),
37
+ families: ["read"],
38
+ mcp: { title: "Get Latest Blocks", annotations: readOnly },
39
+ handler: async (runtime, input) => runtime.celina.blockchain.getLatestBlocks(input.count ?? 5, input.offset ?? 0),
40
+ },
41
+ {
42
+ name: "get_transaction",
43
+ description: "Fetch a transaction and receipt by hash on Celo mainnet.",
44
+ inputSchema: z.object({
45
+ hash: z.string().regex(/^0x[a-fA-F0-9]{64}$/),
46
+ }),
47
+ families: ["read"],
48
+ mcp: { title: "Get Transaction", annotations: readOnly },
49
+ handler: async (runtime, input) => runtime.celina.blockchain.getTransaction(input.hash),
50
+ },
51
+ {
52
+ name: "get_wallet_address",
53
+ description: "Returns the wallet address derived from CELO_PRIVATE_KEY in the MCP server env.",
54
+ inputSchema: z.object({}),
55
+ families: ["read"],
56
+ surfaces: ["mcp"],
57
+ mcp: { title: "Get Wallet Address", annotations: readOnly },
58
+ handler: async (runtime) => {
59
+ if (!runtime.mcpWallet?.hasWallet) {
60
+ throw new Error("No wallet configured. Set CELO_PRIVATE_KEY in the server env.");
61
+ }
62
+ return {
63
+ wallet_address: runtime.mcpWallet.address,
64
+ has_wallet: true,
65
+ source: "CELO_PRIVATE_KEY",
66
+ };
67
+ },
68
+ },
69
+ {
70
+ name: "get_account",
71
+ description: "Returns native CELO balance, nonce, and whether the address is a contract.",
72
+ inputSchema: z.object({
73
+ address: optionalWalletAddressSchema,
74
+ }),
75
+ families: ["read"],
76
+ mcp: { title: "Get Account", annotations: readOnly },
77
+ handler: async (runtime, input) => {
78
+ const target = resolveWalletFromRuntime(runtime, {
79
+ address: input.address,
80
+ });
81
+ return runtime.celina.account.getAccount(target);
82
+ },
83
+ },
84
+ ];
85
+ //# sourceMappingURL=blockchain.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blockchain.js","sourceRoot":"","sources":["../../../src/tools/domains/blockchain.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ToolDefinition } from "../types.js";
2
+ export declare const carbonToolDefinitions: ToolDefinition[];
@@ -0,0 +1,187 @@
1
+ import { z } from "zod";
2
+ import { carbonWriteSchema, optionalWalletAddressSchema, } from "../schemas/common.js";
3
+ import { runCarbonPrepare } from "../utils/carbon-prepare-handler.js";
4
+ import { resolveWalletFromRuntime } from "../utils/wallet.js";
5
+ const readOnly = { readOnlyHint: true };
6
+ const tokenPairSchema = z.object({
7
+ base_token: z.string(),
8
+ quote_token: z.string(),
9
+ });
10
+ const CARBON_PREPARE_SUFFIX = " Returns unsigned steps (approvals + Carbon tx) and warnings. Prices are quote per base; buy budget in quote, sell budget in base.";
11
+ function carbonPrepare(name, title, description, prepareFn, options) {
12
+ return {
13
+ name,
14
+ description: description + CARBON_PREPARE_SUFFIX,
15
+ inputSchema: carbonWriteSchema,
16
+ families: ["prepare"],
17
+ mcp: { title, annotations: { openWorldHint: true } },
18
+ handler: (runtime, input) => runCarbonPrepare(runtime, name, (body) => prepareFn(runtime, body), input, options),
19
+ };
20
+ }
21
+ function carbonExecute(name, title, description, executeKey) {
22
+ return {
23
+ name,
24
+ description: description +
25
+ " Requires CELO_PRIVATE_KEY in MCP server env. Signs and broadcasts locally.",
26
+ inputSchema: z.object({}).passthrough(),
27
+ families: ["execute"],
28
+ surfaces: ["mcp"],
29
+ mcp: {
30
+ title,
31
+ annotations: { destructiveHint: true, openWorldHint: true },
32
+ },
33
+ handler: async (runtime, input) => {
34
+ const write = runtime.executors?.carbonWrite;
35
+ if (!write)
36
+ throw new Error("Carbon write executor not configured.");
37
+ const fn = write[executeKey];
38
+ return fn(input);
39
+ },
40
+ };
41
+ }
42
+ export const carbonToolDefinitions = [
43
+ {
44
+ name: "get_carbon_strategies",
45
+ description: "Fetch active Carbon DeFi maker strategies for a wallet on Celo.",
46
+ inputSchema: z.object({
47
+ wallet_address: optionalWalletAddressSchema,
48
+ }),
49
+ families: ["read"],
50
+ mcp: { title: "Get Carbon Strategies", annotations: readOnly },
51
+ handler: async (runtime, input) => {
52
+ const wallet = resolveWalletFromRuntime(runtime, {
53
+ wallet_address: input.wallet_address,
54
+ });
55
+ return runtime.celina.carbon.getStrategies(wallet);
56
+ },
57
+ },
58
+ {
59
+ name: "get_carbon_strategy",
60
+ description: "Look up a Carbon strategy by ID on Celo.",
61
+ inputSchema: z.object({
62
+ strategy_id: z.string(),
63
+ }),
64
+ families: ["read"],
65
+ mcp: { title: "Get Carbon Strategy", annotations: readOnly },
66
+ handler: async (runtime, input) => runtime.celina.carbon.getStrategy(input.strategy_id),
67
+ },
68
+ {
69
+ name: "get_carbon_trade_quote",
70
+ description: "Quote a taker swap against Carbon maker liquidity on Celo.",
71
+ inputSchema: z
72
+ .object({
73
+ source_token: z.string(),
74
+ target_token: z.string(),
75
+ amount: z.string(),
76
+ is_trade_by_target: z.boolean().optional(),
77
+ })
78
+ .passthrough(),
79
+ families: ["read"],
80
+ mcp: { title: "Get Carbon Trade Quote", annotations: readOnly },
81
+ handler: async (runtime, input) => runtime.celina.carbon.getTradeQuote(input),
82
+ },
83
+ {
84
+ name: "explore_carbon_pair",
85
+ description: "Market liquidity and top strategies for a token pair on Carbon.",
86
+ inputSchema: tokenPairSchema,
87
+ families: ["read"],
88
+ mcp: { title: "Explore Carbon Pair", annotations: readOnly },
89
+ handler: async (runtime, input) => runtime.celina.carbon.explorePair(input),
90
+ },
91
+ {
92
+ name: "resolve_carbon_token",
93
+ description: "Resolve a token symbol or name to its Celo contract address.",
94
+ inputSchema: z.object({ token: z.string() }),
95
+ families: ["read"],
96
+ mcp: { title: "Resolve Carbon Token", annotations: readOnly },
97
+ handler: async (runtime, input) => runtime.celina.carbon.resolveToken(input.token),
98
+ },
99
+ {
100
+ name: "get_carbon_activity",
101
+ description: "Trade and event history for a wallet or strategy on Carbon.",
102
+ inputSchema: z.object({}).passthrough(),
103
+ families: ["read"],
104
+ mcp: { title: "Get Carbon Activity", annotations: readOnly },
105
+ handler: async (runtime, input) => {
106
+ const wallet_address = resolveWalletFromRuntime(runtime, {
107
+ wallet_address: input.wallet_address,
108
+ });
109
+ return runtime.celina.carbon.getActivity({ ...input, wallet_address });
110
+ },
111
+ },
112
+ {
113
+ name: "find_carbon_opportunities",
114
+ description: "Find discount buys and premium sells vs market on a Carbon pair.",
115
+ inputSchema: tokenPairSchema.passthrough(),
116
+ families: ["read"],
117
+ mcp: { title: "Find Carbon Opportunities", annotations: readOnly },
118
+ handler: async (runtime, input) => runtime.celina.carbon.findOpportunities(input),
119
+ },
120
+ {
121
+ name: "get_carbon_protocol_stats",
122
+ description: "Carbon protocol-wide TVL, volume, and fees on Celo.",
123
+ inputSchema: z.object({}).passthrough(),
124
+ families: ["read"],
125
+ mcp: { title: "Get Carbon Protocol Stats", annotations: readOnly },
126
+ handler: async (runtime, input) => runtime.celina.carbon.getProtocolStats(input),
127
+ },
128
+ {
129
+ name: "get_carbon_price_history",
130
+ description: "Historical OHLC candles for a Carbon pair on Celo.",
131
+ inputSchema: z.object({}).passthrough(),
132
+ families: ["read"],
133
+ mcp: { title: "Get Carbon Price History", annotations: readOnly },
134
+ handler: async (runtime, input) => runtime.celina.carbon.getPriceHistory(input),
135
+ },
136
+ {
137
+ name: "simulate_carbon_strategy",
138
+ description: "Backtest a Carbon strategy against historical prices.",
139
+ inputSchema: z.object({}).passthrough(),
140
+ families: ["read"],
141
+ mcp: { title: "Simulate Carbon Strategy", annotations: readOnly },
142
+ handler: async (runtime, input) => runtime.celina.carbon.simulateStrategy(input),
143
+ },
144
+ {
145
+ name: "carbon_help",
146
+ description: "Per-tool guidance for Carbon DeFi operations on Celo.",
147
+ inputSchema: z.object({ topic: z.string().optional() }),
148
+ families: ["read"],
149
+ mcp: { title: "Carbon Help", annotations: readOnly },
150
+ handler: async (runtime, input) => runtime.celina.carbon.help(input.topic),
151
+ },
152
+ {
153
+ name: "carbon_learn",
154
+ description: "Carbon DeFi protocol education topics on Celo.",
155
+ inputSchema: z.object({ topic: z.string().optional() }),
156
+ families: ["read"],
157
+ mcp: { title: "Carbon Learn", annotations: readOnly },
158
+ handler: async (runtime, input) => runtime.celina.carbon.learn(input.topic),
159
+ },
160
+ carbonPrepare("prepare_carbon_limit_order", "Prepare Carbon Limit Order", "Create a one-time Carbon limit order on Celo.", (runtime, body) => runtime.celina.carbon.prepareLimitOrder(body), { marketPriceFallback: true }),
161
+ carbonPrepare("prepare_carbon_range_order", "Prepare Carbon Range Order", "Create a Carbon range order on Celo.", (runtime, body) => runtime.celina.carbon.prepareRangeOrder(body), { marketPriceFallback: true }),
162
+ carbonPrepare("prepare_carbon_recurring_strategy", "Prepare Carbon Recurring Strategy", "Create a recurring buy/sell Carbon strategy on Celo.", (runtime, body) => runtime.celina.carbon.prepareRecurringStrategy(body), { marketPriceFallback: true }),
163
+ carbonPrepare("prepare_carbon_concentrated_strategy", "Prepare Carbon Concentrated Strategy", "Create concentrated two-sided Carbon liquidity on Celo.", (runtime, body) => runtime.celina.carbon.prepareConcentratedStrategy(body), { concentrated: true, marketPriceFallback: true }),
164
+ carbonPrepare("prepare_carbon_full_range_strategy", "Prepare Carbon Full Range Strategy", "Create full-range Carbon liquidity on Celo.", (runtime, body) => runtime.celina.carbon.prepareFullRangeStrategy(body), { marketPriceFallback: true }),
165
+ carbonPrepare("prepare_carbon_reprice_strategy", "Prepare Carbon Reprice", "Update price ranges of an existing Carbon strategy on Celo.", (runtime, body) => runtime.celina.carbon.prepareRepriceStrategy(body)),
166
+ carbonPrepare("prepare_carbon_edit_strategy", "Prepare Carbon Edit Strategy", "Edit prices and budgets of a Carbon strategy on Celo.", (runtime, body) => runtime.celina.carbon.prepareEditStrategy(body)),
167
+ carbonPrepare("prepare_carbon_deposit_budget", "Prepare Carbon Deposit", "Add funds to a Carbon strategy on Celo.", (runtime, body) => runtime.celina.carbon.prepareDepositBudget(body)),
168
+ carbonPrepare("prepare_carbon_withdraw_budget", "Prepare Carbon Withdraw", "Withdraw funds from a Carbon strategy on Celo.", (runtime, body) => runtime.celina.carbon.prepareWithdrawBudget(body)),
169
+ carbonPrepare("prepare_carbon_pause_strategy", "Prepare Carbon Pause", "Pause a Carbon strategy on Celo.", (runtime, body) => runtime.celina.carbon.preparePauseStrategy(body)),
170
+ carbonPrepare("prepare_carbon_resume_strategy", "Prepare Carbon Resume", "Resume a paused Carbon strategy on Celo.", (runtime, body) => runtime.celina.carbon.prepareResumeStrategy(body)),
171
+ carbonPrepare("prepare_carbon_delete_strategy", "Prepare Carbon Delete", "Permanently close a Carbon strategy on Celo.", (runtime, body) => runtime.celina.carbon.prepareDeleteStrategy(body)),
172
+ carbonPrepare("prepare_carbon_trade", "Prepare Carbon Trade", "Build an unsigned taker swap against Carbon liquidity on Celo.", (runtime, body) => runtime.celina.carbon.prepareTrade(body)),
173
+ carbonExecute("execute_carbon_limit_order", "Execute Carbon Limit Order", "Create and broadcast a Carbon limit order on Celo.", "executeLimitOrder"),
174
+ carbonExecute("execute_carbon_range_order", "Execute Carbon Range Order", "Create and broadcast a Carbon range order on Celo.", "executeRangeOrder"),
175
+ carbonExecute("execute_carbon_recurring_strategy", "Execute Carbon Recurring Strategy", "Create and broadcast a recurring Carbon strategy on Celo.", "executeRecurringStrategy"),
176
+ carbonExecute("execute_carbon_concentrated_strategy", "Execute Carbon Concentrated Strategy", "Create and broadcast concentrated Carbon liquidity on Celo.", "executeConcentratedStrategy"),
177
+ carbonExecute("execute_carbon_full_range_strategy", "Execute Carbon Full Range Strategy", "Create and broadcast full-range Carbon liquidity on Celo.", "executeFullRangeStrategy"),
178
+ carbonExecute("execute_carbon_reprice_strategy", "Execute Carbon Reprice", "Update price ranges of a Carbon strategy on Celo.", "executeRepriceStrategy"),
179
+ carbonExecute("execute_carbon_edit_strategy", "Execute Carbon Edit Strategy", "Edit a Carbon strategy on Celo.", "executeEditStrategy"),
180
+ carbonExecute("execute_carbon_deposit_budget", "Execute Carbon Deposit", "Add funds to a Carbon strategy on Celo.", "executeDepositBudget"),
181
+ carbonExecute("execute_carbon_withdraw_budget", "Execute Carbon Withdraw", "Withdraw funds from a Carbon strategy on Celo.", "executeWithdrawBudget"),
182
+ carbonExecute("execute_carbon_pause_strategy", "Execute Carbon Pause", "Pause a Carbon strategy on Celo.", "executePauseStrategy"),
183
+ carbonExecute("execute_carbon_resume_strategy", "Execute Carbon Resume", "Resume a paused Carbon strategy on Celo.", "executeResumeStrategy"),
184
+ carbonExecute("execute_carbon_delete_strategy", "Execute Carbon Delete", "Permanently close a Carbon strategy on Celo.", "executeDeleteStrategy"),
185
+ carbonExecute("execute_carbon_trade", "Execute Carbon Trade", "Execute a taker swap against Carbon liquidity on Celo.", "executeTrade"),
186
+ ];
187
+ //# sourceMappingURL=carbon.js.map