@andrewkimjoseph/celina-sdk 0.4.12 → 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 (80) hide show
  1. package/README.md +4 -0
  2. package/build/tools/catalog.d.ts +9 -0
  3. package/build/tools/catalog.js +36 -0
  4. package/build/tools/catalog.js.map +1 -0
  5. package/build/tools/domains/aave.d.ts +2 -0
  6. package/build/tools/domains/aave.js +89 -0
  7. package/build/tools/domains/aave.js.map +1 -0
  8. package/build/tools/domains/blockchain.d.ts +2 -0
  9. package/build/tools/domains/blockchain.js +85 -0
  10. package/build/tools/domains/blockchain.js.map +1 -0
  11. package/build/tools/domains/carbon.d.ts +2 -0
  12. package/build/tools/domains/carbon.js +187 -0
  13. package/build/tools/domains/carbon.js.map +1 -0
  14. package/build/tools/domains/celeste.d.ts +2 -0
  15. package/build/tools/domains/celeste.js +42 -0
  16. package/build/tools/domains/celeste.js.map +1 -0
  17. package/build/tools/domains/contract.d.ts +2 -0
  18. package/build/tools/domains/contract.js +67 -0
  19. package/build/tools/domains/contract.js.map +1 -0
  20. package/build/tools/domains/ens.d.ts +2 -0
  21. package/build/tools/domains/ens.js +16 -0
  22. package/build/tools/domains/ens.js.map +1 -0
  23. package/build/tools/domains/gooddollar.d.ts +2 -0
  24. package/build/tools/domains/gooddollar.js +73 -0
  25. package/build/tools/domains/gooddollar.js.map +1 -0
  26. package/build/tools/domains/governance.d.ts +2 -0
  27. package/build/tools/domains/governance.js +41 -0
  28. package/build/tools/domains/governance.js.map +1 -0
  29. package/build/tools/domains/index.d.ts +1 -0
  30. package/build/tools/domains/index.js +33 -0
  31. package/build/tools/domains/index.js.map +1 -0
  32. package/build/tools/domains/mento-fx.d.ts +2 -0
  33. package/build/tools/domains/mento-fx.js +72 -0
  34. package/build/tools/domains/mento-fx.js.map +1 -0
  35. package/build/tools/domains/nft.d.ts +2 -0
  36. package/build/tools/domains/nft.js +38 -0
  37. package/build/tools/domains/nft.js.map +1 -0
  38. package/build/tools/domains/self.d.ts +2 -0
  39. package/build/tools/domains/self.js +194 -0
  40. package/build/tools/domains/self.js.map +1 -0
  41. package/build/tools/domains/staking.d.ts +2 -0
  42. package/build/tools/domains/staking.js +74 -0
  43. package/build/tools/domains/staking.js.map +1 -0
  44. package/build/tools/domains/token.d.ts +2 -0
  45. package/build/tools/domains/token.js +73 -0
  46. package/build/tools/domains/token.js.map +1 -0
  47. package/build/tools/domains/transaction.d.ts +2 -0
  48. package/build/tools/domains/transaction.js +117 -0
  49. package/build/tools/domains/transaction.js.map +1 -0
  50. package/build/tools/domains/uniswap.d.ts +2 -0
  51. package/build/tools/domains/uniswap.js +72 -0
  52. package/build/tools/domains/uniswap.js.map +1 -0
  53. package/build/tools/filter.d.ts +2 -0
  54. package/build/tools/filter.js +28 -0
  55. package/build/tools/filter.js.map +1 -0
  56. package/build/tools/index.d.ts +7 -0
  57. package/build/tools/index.js +7 -0
  58. package/build/tools/index.js.map +1 -0
  59. package/build/tools/schemas/common.d.ts +110 -0
  60. package/build/tools/schemas/common.js +81 -0
  61. package/build/tools/schemas/common.js.map +1 -0
  62. package/build/tools/swap-routing.d.ts +24 -0
  63. package/build/tools/swap-routing.js +105 -0
  64. package/build/tools/swap-routing.js.map +1 -0
  65. package/build/tools/types.d.ts +134 -0
  66. package/build/tools/types.js +2 -0
  67. package/build/tools/types.js.map +1 -0
  68. package/build/tools/utils/carbon-prepare-handler.d.ts +6 -0
  69. package/build/tools/utils/carbon-prepare-handler.js +17 -0
  70. package/build/tools/utils/carbon-prepare-handler.js.map +1 -0
  71. package/build/tools/utils/normalize-token.d.ts +2 -0
  72. package/build/tools/utils/normalize-token.js +12 -0
  73. package/build/tools/utils/normalize-token.js.map +1 -0
  74. package/build/tools/utils/wallet.d.ts +2 -0
  75. package/build/tools/utils/wallet.js +4 -0
  76. package/build/tools/utils/wallet.js.map +1 -0
  77. package/package.json +7 -1
  78. package/tests/README.md +4 -0
  79. package/tests/catalog/operations.ts +11 -1
  80. package/tests/testing-entry.ts +5 -0
@@ -0,0 +1,73 @@
1
+ import { z } from "zod";
2
+ import { 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 gooddollarToolDefinitions = [
9
+ {
10
+ name: "get_gooddollar_whitelisting_info",
11
+ description: "Check GoodDollar IdentityV4 whitelist status for a wallet.",
12
+ inputSchema: z.object({
13
+ address: optionalWalletAddressSchema,
14
+ }),
15
+ families: ["read"],
16
+ mcp: { title: "Get GoodDollar Whitelisting Info", annotations: readOnly },
17
+ handler: async (runtime, input) => {
18
+ const target = resolveWalletFromRuntime(runtime, {
19
+ address: input.address,
20
+ });
21
+ return runtime.celina.gooddollar.getWhitelistingInfo(target);
22
+ },
23
+ },
24
+ {
25
+ name: "get_gooddollar_ubi_entitlement",
26
+ description: "Daily GoodDollar UBI claim eligibility: whitelist root, claimable G$, already claimed.",
27
+ inputSchema: z.object({
28
+ address: optionalWalletAddressSchema,
29
+ }),
30
+ families: ["read"],
31
+ mcp: { title: "Get GoodDollar UBI Entitlement", annotations: readOnly },
32
+ handler: async (runtime, input) => {
33
+ const target = resolveWalletFromRuntime(runtime, {
34
+ address: input.address,
35
+ });
36
+ return runtime.celina.gooddollar.getUbiClaimEligibility(target);
37
+ },
38
+ },
39
+ {
40
+ name: "claim_daily_gooddollar_ubi",
41
+ description: "Claim today's GoodDollar UBI for the MCP server wallet. Requires CELO_PRIVATE_KEY.",
42
+ inputSchema: z.object({}),
43
+ families: ["execute"],
44
+ surfaces: ["mcp"],
45
+ mcp: {
46
+ title: "Claim Daily GoodDollar UBI",
47
+ annotations: { destructiveHint: true, openWorldHint: true },
48
+ },
49
+ handler: async (runtime) => {
50
+ const write = runtime.executors?.gooddollarWrite;
51
+ if (!write) {
52
+ throw new Error("GoodDollar write executor not configured.");
53
+ }
54
+ return write.claimDailyUbi();
55
+ },
56
+ },
57
+ {
58
+ name: "prepare_claim_daily_gooddollar_ubi",
59
+ description: "Prepare unsigned GoodDollar daily UBI claim. User must sign in wallet.",
60
+ inputSchema: z.object({
61
+ from: optionalWalletAddressSchema,
62
+ }),
63
+ families: ["prepare"],
64
+ surfaces: ["celeste"],
65
+ handler: async (runtime, input) => {
66
+ const sender = resolveWalletFromRuntime(runtime, {
67
+ from: input.from,
68
+ });
69
+ return runtime.celina.gooddollar.prepareClaimUbi(sender);
70
+ },
71
+ },
72
+ ];
73
+ //# sourceMappingURL=gooddollar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gooddollar.js","sourceRoot":"","sources":["../../../src/tools/domains/gooddollar.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ToolDefinition } from "../types.js";
2
+ export declare const governanceToolDefinitions: ToolDefinition[];
@@ -0,0 +1,41 @@
1
+ import { z } from "zod";
2
+ import { paginationFields } from "../schemas/common.js";
3
+ export const governanceToolDefinitions = [
4
+ {
5
+ name: "get_governance_proposals",
6
+ description: "Returns Celo governance proposals with pagination. Set include_metadata=false for faster responses.",
7
+ inputSchema: z.object({
8
+ include_inactive: z.boolean().optional(),
9
+ include_metadata: z.boolean().optional(),
10
+ ...paginationFields,
11
+ page_size: z.number().int().min(1).max(20).optional(),
12
+ }),
13
+ families: ["read"],
14
+ mcp: {
15
+ title: "Get Governance Proposals",
16
+ annotations: { readOnlyHint: true, idempotentHint: true },
17
+ },
18
+ handler: async (runtime, input) => runtime.celina.governance.getGovernanceProposals({
19
+ includeInactive: input.include_inactive,
20
+ includeMetadata: input.include_metadata,
21
+ page: input.page,
22
+ pageSize: input.page_size,
23
+ offset: input.offset,
24
+ limit: input.limit,
25
+ }),
26
+ },
27
+ {
28
+ name: "get_proposal_details",
29
+ description: "Returns detailed information about a Celo governance proposal.",
30
+ inputSchema: z.object({
31
+ proposal_id: z.number().int().min(0),
32
+ }),
33
+ families: ["read"],
34
+ mcp: {
35
+ title: "Get Proposal Details",
36
+ annotations: { readOnlyHint: true, idempotentHint: true },
37
+ },
38
+ handler: async (runtime, input) => runtime.celina.governance.getProposalDetails(input.proposal_id),
39
+ },
40
+ ];
41
+ //# sourceMappingURL=governance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"governance.js","sourceRoot":"","sources":["../../../src/tools/domains/governance.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAGxD,MAAM,CAAC,MAAM,yBAAyB,GAAqB;IACzD;QACE,IAAI,EAAE,0BAA0B;QAChC,WAAW,EACT,qGAAqG;QACvG,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YACxC,gBAAgB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;YACxC,GAAG,gBAAgB;YACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,EAAE;SACtD,CAAC;QACF,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,GAAG,EAAE;YACH,KAAK,EAAE,0BAA0B;YACjC,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1D;QACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAChC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,sBAAsB,CAAC;YAC/C,eAAe,EAAE,KAAK,CAAC,gBAAuC;YAC9D,eAAe,EAAE,KAAK,CAAC,gBAAuC;YAC9D,IAAI,EAAE,KAAK,CAAC,IAA0B;YACtC,QAAQ,EAAE,KAAK,CAAC,SAA+B;YAC/C,MAAM,EAAE,KAAK,CAAC,MAA4B;YAC1C,KAAK,EAAE,KAAK,CAAC,KAA2B;SACzC,CAAC;KACL;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EACT,gEAAgE;QAClE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;SACrC,CAAC;QACF,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,GAAG,EAAE;YACH,KAAK,EAAE,sBAAsB;YAC7B,WAAW,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,IAAI,EAAE;SAC1D;QACD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAChC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,KAAK,CAAC,WAAqB,CAAC;KAC5E;CACF,CAAC"}
@@ -0,0 +1 @@
1
+ export declare const allDomainToolDefinitions: import("../types.js").ToolDefinition[];
@@ -0,0 +1,33 @@
1
+ import { aaveToolDefinitions } from "./aave.js";
2
+ import { blockchainToolDefinitions } from "./blockchain.js";
3
+ import { carbonToolDefinitions } from "./carbon.js";
4
+ import { celesteToolDefinitions } from "./celeste.js";
5
+ import { contractToolDefinitions } from "./contract.js";
6
+ import { ensToolDefinitions } from "./ens.js";
7
+ import { gooddollarToolDefinitions } from "./gooddollar.js";
8
+ import { governanceToolDefinitions } from "./governance.js";
9
+ import { mentoFxToolDefinitions } from "./mento-fx.js";
10
+ import { nftToolDefinitions } from "./nft.js";
11
+ import { selfToolDefinitions } from "./self.js";
12
+ import { stakingToolDefinitions } from "./staking.js";
13
+ import { tokenToolDefinitions } from "./token.js";
14
+ import { transactionToolDefinitions } from "./transaction.js";
15
+ import { uniswapToolDefinitions } from "./uniswap.js";
16
+ export const allDomainToolDefinitions = [
17
+ ...blockchainToolDefinitions,
18
+ ...tokenToolDefinitions,
19
+ ...transactionToolDefinitions,
20
+ ...mentoFxToolDefinitions,
21
+ ...uniswapToolDefinitions,
22
+ ...aaveToolDefinitions,
23
+ ...ensToolDefinitions,
24
+ ...gooddollarToolDefinitions,
25
+ ...governanceToolDefinitions,
26
+ ...stakingToolDefinitions,
27
+ ...nftToolDefinitions,
28
+ ...contractToolDefinitions,
29
+ ...selfToolDefinitions,
30
+ ...carbonToolDefinitions,
31
+ ...celesteToolDefinitions,
32
+ ];
33
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/tools/domains/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,yBAAyB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,sBAAsB,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,UAAU,CAAC;AAC9C,OAAO,EAAE,mBAAmB,EAAE,MAAM,WAAW,CAAC;AAChD,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAEtD,MAAM,CAAC,MAAM,wBAAwB,GAAG;IACtC,GAAG,yBAAyB;IAC5B,GAAG,oBAAoB;IACvB,GAAG,0BAA0B;IAC7B,GAAG,sBAAsB;IACzB,GAAG,sBAAsB;IACzB,GAAG,mBAAmB;IACtB,GAAG,kBAAkB;IACrB,GAAG,yBAAyB;IAC5B,GAAG,yBAAyB;IAC5B,GAAG,sBAAsB;IACzB,GAAG,kBAAkB;IACrB,GAAG,uBAAuB;IAC1B,GAAG,mBAAmB;IACtB,GAAG,qBAAqB;IACxB,GAAG,sBAAsB;CAC1B,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { ToolDefinition } from "../types.js";
2
+ export declare const mentoFxToolDefinitions: ToolDefinition[];
@@ -0,0 +1,72 @@
1
+ import { mentoFxQuoteSchema, mentoFxWalletSchema, } from "../schemas/common.js";
2
+ import { normalizeRegistryTokenInput } from "../utils/normalize-token.js";
3
+ import { resolveWalletFromRuntime } from "../utils/wallet.js";
4
+ function mapMentoWalletOptions(input) {
5
+ return {
6
+ recipient: input.recipient,
7
+ slippageTolerance: input.slippage_tolerance,
8
+ deadlineMinutes: input.deadline_minutes,
9
+ };
10
+ }
11
+ export const mentoFxToolDefinitions = [
12
+ {
13
+ name: "get_mento_fx_quote",
14
+ description: "Mento FX oracle quote for a token pair on mainnet. Read-only.",
15
+ inputSchema: mentoFxQuoteSchema,
16
+ families: ["read"],
17
+ mcp: { title: "Get Mento FX Quote", annotations: { readOnlyHint: true } },
18
+ handler: async (runtime, input) => {
19
+ const from = input.from
20
+ ? resolveWalletFromRuntime(runtime, { from: input.from })
21
+ : undefined;
22
+ return runtime.celina.mentoFx.getFxQuote(normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, from);
23
+ },
24
+ },
25
+ {
26
+ name: "estimate_mento_fx",
27
+ description: "Estimate gas for a Mento FX conversion including approval if needed.",
28
+ inputSchema: mentoFxWalletSchema,
29
+ families: ["read"],
30
+ mcp: { title: "Estimate Mento FX", annotations: { readOnlyHint: true } },
31
+ handler: async (runtime, input) => {
32
+ const sender = resolveWalletFromRuntime(runtime, {
33
+ from: input.from,
34
+ });
35
+ if (runtime.executors?.mentoFx) {
36
+ return runtime.executors.mentoFx.estimate(normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, { ...mapMentoWalletOptions(input), recipient: input.recipient ?? sender });
37
+ }
38
+ return runtime.celina.mentoFx.estimateFx(sender, normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, mapMentoWalletOptions(input));
39
+ },
40
+ },
41
+ {
42
+ name: "execute_mento_fx",
43
+ description: "Execute a Mento FX conversion on mainnet. Requires CELO_PRIVATE_KEY.",
44
+ inputSchema: mentoFxWalletSchema,
45
+ families: ["execute"],
46
+ surfaces: ["mcp"],
47
+ mcp: {
48
+ title: "Execute Mento FX",
49
+ annotations: { destructiveHint: true, openWorldHint: true },
50
+ },
51
+ handler: async (runtime, input) => {
52
+ const fx = runtime.executors?.mentoFx;
53
+ if (!fx)
54
+ throw new Error("Mento FX executor not configured.");
55
+ return fx.execute(normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, mapMentoWalletOptions(input));
56
+ },
57
+ },
58
+ {
59
+ name: "prepare_mento_fx",
60
+ description: "Prepare Mento FX swap only. For general swaps after get_swap_quote, use prepare_swap.",
61
+ inputSchema: mentoFxWalletSchema,
62
+ families: ["prepare"],
63
+ surfaces: ["celeste"],
64
+ handler: async (runtime, input) => {
65
+ const sender = resolveWalletFromRuntime(runtime, {
66
+ from: input.from,
67
+ });
68
+ return runtime.celina.mentoFx.prepareFx(sender, normalizeRegistryTokenInput(input.token_in), normalizeRegistryTokenInput(input.token_out), input.amount, mapMentoWalletOptions(input));
69
+ },
70
+ },
71
+ ];
72
+ //# sourceMappingURL=mento-fx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mento-fx.js","sourceRoot":"","sources":["../../../src/tools/domains/mento-fx.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ToolDefinition } from "../types.js";
2
+ export declare const nftToolDefinitions: ToolDefinition[];
@@ -0,0 +1,38 @@
1
+ import { z } from "zod";
2
+ import { addressSchema, optionalWalletAddressSchema, tokenIdSchema, } from "../schemas/common.js";
3
+ import { resolveWalletFromRuntime } from "../utils/wallet.js";
4
+ const readOnly = {
5
+ readOnlyHint: true,
6
+ idempotentHint: true,
7
+ };
8
+ export const nftToolDefinitions = [
9
+ {
10
+ name: "get_nft_info",
11
+ description: "NFT token information including metadata for ERC-721 or ERC-1155.",
12
+ inputSchema: z.object({
13
+ contract_address: addressSchema,
14
+ token_id: tokenIdSchema,
15
+ }),
16
+ families: ["read"],
17
+ mcp: { title: "Get NFT Info", annotations: readOnly },
18
+ handler: async (runtime, input) => runtime.celina.nft.getNftInfo(input.contract_address, input.token_id),
19
+ },
20
+ {
21
+ name: "get_nft_balance",
22
+ description: "NFT balance for an address. Token ID required for ERC-1155.",
23
+ inputSchema: z.object({
24
+ contract_address: addressSchema,
25
+ address: optionalWalletAddressSchema,
26
+ token_id: tokenIdSchema.optional(),
27
+ }),
28
+ families: ["read"],
29
+ mcp: { title: "Get NFT Balance", annotations: readOnly },
30
+ handler: async (runtime, input) => {
31
+ const target = resolveWalletFromRuntime(runtime, {
32
+ address: input.address,
33
+ });
34
+ return runtime.celina.nft.getNftBalance(input.contract_address, target, input.token_id);
35
+ },
36
+ },
37
+ ];
38
+ //# sourceMappingURL=nft.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nft.js","sourceRoot":"","sources":["../../../src/tools/domains/nft.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,aAAa,EACb,2BAA2B,EAC3B,aAAa,GACd,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAAE,wBAAwB,EAAE,MAAM,oBAAoB,CAAC;AAE9D,MAAM,QAAQ,GAAG;IACf,YAAY,EAAE,IAAI;IAClB,cAAc,EAAE,IAAI;CACZ,CAAC;AAEX,MAAM,CAAC,MAAM,kBAAkB,GAAqB;IAClD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,mEAAmE;QACrE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,gBAAgB,EAAE,aAAa;YAC/B,QAAQ,EAAE,aAAa;SACxB,CAAC;QACF,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,GAAG,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,WAAW,EAAE,QAAQ,EAAE;QACrD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,CAChC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,UAAU,CAC3B,KAAK,CAAC,gBAAiC,EACvC,KAAK,CAAC,QAAkB,CACzB;KACJ;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EACT,6DAA6D;QAC/D,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC;YACpB,gBAAgB,EAAE,aAAa;YAC/B,OAAO,EAAE,2BAA2B;YACpC,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE;SACnC,CAAC;QACF,QAAQ,EAAE,CAAC,MAAM,CAAC;QAClB,GAAG,EAAE,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,QAAQ,EAAE;QACxD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE;YAChC,MAAM,MAAM,GAAG,wBAAwB,CAAC,OAAO,EAAE;gBAC/C,OAAO,EAAE,KAAK,CAAC,OAA6B;aAC7C,CAAC,CAAC;YACH,OAAO,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,aAAa,CACrC,KAAK,CAAC,gBAAiC,EACvC,MAAM,EACN,KAAK,CAAC,QAA8B,CACrC,CAAC;QACJ,CAAC;KACF;CACF,CAAC"}
@@ -0,0 +1,2 @@
1
+ import type { ToolDefinition } from "../types.js";
2
+ export declare const selfToolDefinitions: ToolDefinition[];
@@ -0,0 +1,194 @@
1
+ import { selfDemoUrl } from "../../config/self.js";
2
+ import { z } from "zod";
3
+ import { addressSchema } from "../schemas/common.js";
4
+ const SELF_DEMO_VERIFY_URL = selfDemoUrl("/api/demo/verify");
5
+ const selfRegistrationModeSchema = z
6
+ .enum([
7
+ "linked",
8
+ "wallet-free",
9
+ "smartwallet",
10
+ "self-custody",
11
+ "ed25519",
12
+ "ed25519-linked",
13
+ ])
14
+ .optional();
15
+ function requireSelf(runtime) {
16
+ const self = runtime.executors?.self;
17
+ if (!self) {
18
+ throw new Error("Self executor not configured.");
19
+ }
20
+ return self;
21
+ }
22
+ export const selfToolDefinitions = [
23
+ {
24
+ name: "verify_self_agent",
25
+ description: "Verify whether an agent address is backed by a real human on Self Agent ID (Celo mainnet).",
26
+ inputSchema: z.object({
27
+ agent_address: addressSchema,
28
+ require_age: z.union([z.literal(0), z.literal(18), z.literal(21)]).optional(),
29
+ require_ofac: z.boolean().optional(),
30
+ require_self_provider: z.boolean().optional(),
31
+ }),
32
+ families: ["read"],
33
+ surfaces: ["mcp"],
34
+ mcp: {
35
+ title: "Verify Self Agent",
36
+ annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
37
+ },
38
+ handler: async (runtime, input) => requireSelf(runtime).verifyAgent({
39
+ agentAddress: input.agent_address,
40
+ requireAge: input.require_age,
41
+ requireOfac: input.require_ofac,
42
+ requireSelfProvider: input.require_self_provider,
43
+ }),
44
+ },
45
+ {
46
+ name: "lookup_self_agent",
47
+ description: "Look up a Self Agent ID by numeric on-chain ID.",
48
+ inputSchema: z.object({
49
+ agent_id: z.number().int().positive(),
50
+ }),
51
+ families: ["read"],
52
+ surfaces: ["mcp"],
53
+ mcp: {
54
+ title: "Look Up Self Agent",
55
+ annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
56
+ },
57
+ handler: async (runtime, input) => requireSelf(runtime).lookupAgent(input.agent_id),
58
+ },
59
+ {
60
+ name: "verify_self_request",
61
+ description: "Verify incoming HTTP request headers signed by a Self Agent.",
62
+ inputSchema: z.object({
63
+ agent_signature: z.string().regex(/^0x[a-fA-F0-9]+$/),
64
+ agent_timestamp: z.string(),
65
+ method: z.string(),
66
+ path: z.string(),
67
+ body: z.string().optional(),
68
+ keytype: z.string().optional(),
69
+ agent_key: z.string().regex(/^0x[a-fA-F0-9]+$/).optional(),
70
+ }),
71
+ families: ["read"],
72
+ surfaces: ["mcp"],
73
+ mcp: {
74
+ title: "Verify Self Agent Request",
75
+ annotations: { readOnlyHint: true, idempotentHint: true },
76
+ },
77
+ handler: async (runtime, input) => requireSelf(runtime).verifyRequest(input),
78
+ },
79
+ {
80
+ name: "register_self_agent",
81
+ description: "Start Self Agent ID registration. Returns qr_code_url and deep_link — present BOTH to the user.",
82
+ inputSchema: z.object({
83
+ mode: selfRegistrationModeSchema,
84
+ minimum_age: z.union([z.literal(0), z.literal(18), z.literal(21)]).optional(),
85
+ ofac: z.boolean().optional(),
86
+ human_address: addressSchema.optional(),
87
+ agent_name: z.string().optional(),
88
+ agent_description: z.string().optional(),
89
+ }),
90
+ families: ["execute"],
91
+ surfaces: ["mcp"],
92
+ mcp: {
93
+ title: "Register Self Agent",
94
+ annotations: { destructiveHint: true, openWorldHint: true },
95
+ responseKind: "self_session",
96
+ },
97
+ handler: async (runtime, input) => requireSelf(runtime).registerAgent({
98
+ mode: input.mode,
99
+ minimumAge: input.minimum_age,
100
+ ofac: input.ofac,
101
+ humanAddress: input.human_address,
102
+ agentName: input.agent_name,
103
+ agentDescription: input.agent_description,
104
+ }),
105
+ },
106
+ {
107
+ name: "check_self_registration",
108
+ description: "Poll a pending Self registration, proof refresh, or deregistration session.",
109
+ inputSchema: z.object({
110
+ session_id: z.string(),
111
+ }),
112
+ families: ["read"],
113
+ surfaces: ["mcp"],
114
+ mcp: {
115
+ title: "Check Self Registration",
116
+ annotations: { readOnlyHint: true, idempotentHint: true, openWorldHint: true },
117
+ },
118
+ handler: async (runtime, input) => requireSelf(runtime).checkRegistration(input.session_id),
119
+ },
120
+ {
121
+ name: "get_self_identity",
122
+ description: "Return the configured Self agent identity. Requires SELF_AGENT_PRIVATE_KEY.",
123
+ inputSchema: z.object({}),
124
+ families: ["read"],
125
+ surfaces: ["mcp"],
126
+ mcp: {
127
+ title: "Get Self Agent Identity",
128
+ annotations: { readOnlyHint: true, idempotentHint: true },
129
+ },
130
+ handler: async (runtime) => requireSelf(runtime).getIdentity(),
131
+ },
132
+ {
133
+ name: "refresh_self_proof",
134
+ description: "Start a human proof refresh after on-chain proof expiry. Returns qr_code_url and deep_link.",
135
+ inputSchema: z.object({
136
+ agent_id: z.number().int().positive().optional(),
137
+ }),
138
+ families: ["execute"],
139
+ surfaces: ["mcp"],
140
+ mcp: {
141
+ title: "Refresh Self Proof",
142
+ annotations: { openWorldHint: true },
143
+ responseKind: "self_session",
144
+ },
145
+ handler: async (runtime, input) => requireSelf(runtime).refreshProof({ agentId: input.agent_id }),
146
+ },
147
+ {
148
+ name: "deregister_self_agent",
149
+ description: "Start irreversible Self agent deregistration. Returns qr_code_url and deep_link.",
150
+ inputSchema: z.object({}),
151
+ families: ["execute"],
152
+ surfaces: ["mcp"],
153
+ mcp: {
154
+ title: "Deregister Self Agent",
155
+ annotations: { destructiveHint: true, openWorldHint: true },
156
+ responseKind: "self_session",
157
+ },
158
+ handler: async (runtime) => requireSelf(runtime).deregisterAgent(),
159
+ },
160
+ {
161
+ name: "sign_self_request",
162
+ description: `Sign an HTTP request with the configured Self agent. Demo verify: POST ${SELF_DEMO_VERIFY_URL}`,
163
+ inputSchema: z.object({
164
+ method: z.enum(["GET", "POST", "PUT", "DELETE"]),
165
+ url: z.string().url(),
166
+ body: z.string().optional(),
167
+ }),
168
+ families: ["read"],
169
+ surfaces: ["mcp"],
170
+ mcp: {
171
+ title: "Sign Self Agent Request",
172
+ annotations: { readOnlyHint: true, idempotentHint: true },
173
+ },
174
+ handler: async (runtime, input) => requireSelf(runtime).signRequest(input),
175
+ },
176
+ {
177
+ name: "authenticated_self_fetch",
178
+ description: `HTTP request with Self Agent ID auth headers. Demo: ?network=celo-mainnet — ${SELF_DEMO_VERIFY_URL}`,
179
+ inputSchema: z.object({
180
+ method: z.enum(["GET", "POST", "PUT", "DELETE"]),
181
+ url: z.string().url(),
182
+ body: z.string().optional(),
183
+ content_type: z.string().optional(),
184
+ }),
185
+ families: ["execute"],
186
+ surfaces: ["mcp"],
187
+ mcp: {
188
+ title: "Authenticated Self Fetch",
189
+ annotations: { openWorldHint: true },
190
+ },
191
+ handler: async (runtime, input) => requireSelf(runtime).authenticatedFetch(input),
192
+ },
193
+ ];
194
+ //# sourceMappingURL=self.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"self.js","sourceRoot":"","sources":["../../../src/tools/domains/self.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ToolDefinition } from "../types.js";
2
+ export declare const stakingToolDefinitions: ToolDefinition[];
@@ -0,0 +1,74 @@
1
+ import { z } from "zod";
2
+ import { addressSchema, optionalWalletAddressSchema, paginationFields, } from "../schemas/common.js";
3
+ import { resolveWalletFromRuntime } from "../utils/wallet.js";
4
+ const readOnly = {
5
+ readOnlyHint: true,
6
+ idempotentHint: true,
7
+ };
8
+ export const stakingToolDefinitions = [
9
+ {
10
+ name: "get_staking_balances",
11
+ description: "Active and pending staking votes for an address by validator group.",
12
+ inputSchema: z.object({
13
+ address: optionalWalletAddressSchema,
14
+ }),
15
+ families: ["read"],
16
+ mcp: { title: "Get Staking Balances", annotations: readOnly },
17
+ handler: async (runtime, input) => {
18
+ const target = resolveWalletFromRuntime(runtime, {
19
+ address: input.address,
20
+ });
21
+ return runtime.celina.staking.getStakingBalances(target);
22
+ },
23
+ },
24
+ {
25
+ name: "get_activatable_stakes",
26
+ description: "Validator groups where pending stakes can be activated for an address.",
27
+ inputSchema: z.object({
28
+ address: optionalWalletAddressSchema,
29
+ }),
30
+ families: ["read"],
31
+ mcp: { title: "Get Activatable Stakes", annotations: readOnly },
32
+ handler: async (runtime, input) => {
33
+ const target = resolveWalletFromRuntime(runtime, {
34
+ address: input.address,
35
+ });
36
+ return runtime.celina.staking.getActivatableStakes(target);
37
+ },
38
+ },
39
+ {
40
+ name: "get_validator_groups",
41
+ description: "Paginated validator groups with votes, capacity, and member counts.",
42
+ inputSchema: z.object({
43
+ ...paginationFields,
44
+ page_size: z.number().int().min(1).max(50).optional(),
45
+ }),
46
+ families: ["read"],
47
+ mcp: { title: "Get Validator Groups", annotations: readOnly },
48
+ handler: async (runtime, input) => runtime.celina.staking.getValidatorGroups({
49
+ page: input.page,
50
+ pageSize: input.page_size,
51
+ offset: input.offset,
52
+ limit: input.limit,
53
+ }),
54
+ },
55
+ {
56
+ name: "get_validator_group_details",
57
+ description: "Detailed information about a validator group including members.",
58
+ inputSchema: z.object({
59
+ group_address: addressSchema,
60
+ }),
61
+ families: ["read"],
62
+ mcp: { title: "Get Validator Group Details", annotations: readOnly },
63
+ handler: async (runtime, input) => runtime.celina.staking.getValidatorGroupDetails(input.group_address),
64
+ },
65
+ {
66
+ name: "get_total_staking_info",
67
+ description: "Network-wide staking participation metrics.",
68
+ inputSchema: z.object({}),
69
+ families: ["read"],
70
+ mcp: { title: "Get Total Staking Info", annotations: readOnly },
71
+ handler: async (runtime) => runtime.celina.staking.getTotalStakingInfo(),
72
+ },
73
+ ];
74
+ //# sourceMappingURL=staking.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"staking.js","sourceRoot":"","sources":["../../../src/tools/domains/staking.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import type { ToolDefinition } from "../types.js";
2
+ export declare const tokenToolDefinitions: ToolDefinition[];